moved tc-all.sh to charts.d/
Costa Tsaousis (ktsaou) committed
May 2, 2014 at 11:39 UTC
44f86ae1ef6bdf0c751f34ac8f8fa5c71a97b58e
2 files changed
+96
-2
charts.d/tc-qos-collector.sh
new
+94
@@ -0,0 +1,94 @@
1
+#!/bin/sh
2
+
3
+# let netdata know our PID
4
+# this is required to kill us when it exits
5
+echo "MYPID $$"
6
+
7
+# default sleep function
8
+loopsleepms() {
9
+ sleep $1
10
+}
11
+# if found and included, this file overwrites loopsleepms()
12
+# with a high resolution timer function for precise looping.
13
+. "`dirname $0`/loopsleepms.sh.inc"
14
+
15
+# check if we have a valid number for interval
16
+t=$1
17
+sleep_time=$(( t + 1 - 1 ))
18
+if [ "$sleep_time" -eq 0 ]
19
+ then
20
+ sleep_time=1
21
+fi
22
+
23
+devices=
24
+fix_names=
25
+
26
+setclassname() {
27
+ echo "SETCLASSNAME $3 $2"
28
+}
29
+
30
+show_tc() {
31
+ local x="$1"
32
+
33
+ echo "BEGIN $x"
34
+
35
+ /sbin/tc -s class show dev $x
36
+
37
+ # check FireQOS names for classes
38
+ if [ ! -z "$fix_names" -a -f /var/run/fireqos/ifaces/$x ]
39
+ then
40
+ name="`cat /var/run/fireqos/ifaces/$x`"
41
+ echo "SETDEVICENAME $name"
42
+
43
+ interface_classes=
44
+ . /var/run/fireqos/$name.conf
45
+ for n in $interface_classes_monitor
46
+ do
47
+ setclassname `echo $n | tr '|' ' '`
48
+ done
49
+
50
+ echo "SETDEVICEGROUP $interface_dev"
51
+ fi
52
+ echo "END $x"
53
+}
54
+
55
+all_devices() {
56
+ cat /proc/net/dev | grep ":" | cut -d ':' -f 1 | while read dev
57
+ do
58
+ l=`/sbin/tc class show dev $dev | wc -l`
59
+ [ $l -ne 0 ] && echo $dev
60
+ done
61
+}
62
+
63
+# update devices and class names
64
+# once every 2 minutes
65
+names_every=$((120 / sleep_time))
66
+
67
+# exit this script every hour
68
+# it will be restarted automatically
69
+exit_after=$((3600 / sleep_time))
70
+
71
+c=0
72
+gc=0
73
+while [ 1 ]
74
+do
75
+ fix_names=
76
+ c=$((c + 1))
77
+ gc=$((gc + 1))
78
+
79
+ if [ $c -le 1 -o $c -ge $names_every ]
80
+ then
81
+ c=1
82
+ fix_names="YES"
83
+ devices="`all_devices`"
84
+ fi
85
+
86
+ for d in $devices
87
+ do
88
+ show_tc $d
89
+ done
90
+
91
+ [ $gc -gt $exit_after ] && exit 0
92
+
93
+ loopsleepms $sleep_time
94
+done
netdata.c
+2
-2
@@ -5153,7 +5153,7 @@ void *proc_main(void *ptr)
5153
5154
// ----------------------------------------------------------------------------
5155
// /sbin/tc processor
5156
-// this requires the script tc-all.sh
5156
+// this requires the script charts.d/tc-qos-collector.sh
5157
5158
#define PIPE_READ 0
5159
#define PIPE_WRITE 1
@@ -5354,7 +5354,7 @@ void *tc_main(void *ptr)
5354
struct tc_device *device = NULL;
5355
struct tc_class *class = NULL;
5356
5357
- snprintf(buffer, TC_LINE_MAX, "exec %s %d", config_get("plugin:tc", "script to run to get tc values", "./tc-all.sh"), update_every);
5357
+ snprintf(buffer, TC_LINE_MAX, "exec %s %d", config_get("plugin:tc", "script to run to get tc values", "charts.d/tc-qos-collector.sh"), update_every);
5358
fp = popen(buffer, "r");
5359
if(!fp) {
5360
error("Cannot popen(\"%s\", \"r\").", buffer);