@cryptotaxi247 / netdata-1 / commits / 5f5c89de1

rename and move container network interfaces to container section

Costa Tsaousis (ktsaou) committed Jul 31, 2017 at 23:44 UTC 5f5c89de15429ccf101d5cfa11897904e6e98c9f
3 files changed +292 -69
src/proc_net_dev.c
+245 -66
@@ -3,7 +3,7 @@
3 // ----------------------------------------------------------------------------
4 // netdev list
5
6 -struct netdev {
6 +static struct netdev {
7 char *name;
8 uint32_t hash;
9 size_t len;
@@ -29,10 +29,17 @@ struct netdev {
29 const char *chart_type_net_drops;
30 const char *chart_type_net_compressed;
31
32 + const char *chart_id_net_bytes;
33 + const char *chart_id_net_packets;
34 + const char *chart_id_net_errors;
35 + const char *chart_id_net_fifo;
36 + const char *chart_id_net_events;
37 + const char *chart_id_net_drops;
38 + const char *chart_id_net_compressed;
39 +
40 const char *chart_family;
33 - const char *chart_name;
34 - const char *chart_id;
41
42 + int flipped;
43 unsigned long priority;
44
45 // data collected
@@ -83,7 +90,77 @@ struct netdev {
90 RRDDIM *rd_tcompressed;
91
92 struct netdev *next;
86 -};
93 +} *netdev_root = NULL, *netdev_last_used = NULL;
94 +
95 +static size_t netdev_added = 0, netdev_found = 0;
96 +
97 +// ----------------------------------------------------------------------------
98 +
99 +static void netdev_charts_release(struct netdev *d) {
100 + if(d->st_bandwidth) rrdset_is_obsolete(d->st_bandwidth);
101 + if(d->st_packets) rrdset_is_obsolete(d->st_packets);
102 + if(d->st_errors) rrdset_is_obsolete(d->st_errors);
103 + if(d->st_drops) rrdset_is_obsolete(d->st_drops);
104 + if(d->st_fifo) rrdset_is_obsolete(d->st_fifo);
105 + if(d->st_compressed) rrdset_is_obsolete(d->st_compressed);
106 + if(d->st_events) rrdset_is_obsolete(d->st_events);
107 +
108 + d->st_bandwidth = NULL;
109 + d->st_compressed = NULL;
110 + d->st_drops = NULL;
111 + d->st_errors = NULL;
112 + d->st_events = NULL;
113 + d->st_fifo = NULL;
114 + d->st_packets = NULL;
115 +
116 + d->rd_rbytes = NULL;
117 + d->rd_rpackets = NULL;
118 + d->rd_rerrors = NULL;
119 + d->rd_rdrops = NULL;
120 + d->rd_rfifo = NULL;
121 + d->rd_rframe = NULL;
122 + d->rd_rcompressed = NULL;
123 + d->rd_rmulticast = NULL;
124 +
125 + d->rd_tbytes = NULL;
126 + d->rd_tpackets = NULL;
127 + d->rd_terrors = NULL;
128 + d->rd_tdrops = NULL;
129 + d->rd_tfifo = NULL;
130 + d->rd_tcollisions = NULL;
131 + d->rd_tcarrier = NULL;
132 + d->rd_tcompressed = NULL;
133 +}
134 +
135 +static void netdev_free_strings(struct netdev *d) {
136 + freez((void *)d->chart_type_net_bytes);
137 + freez((void *)d->chart_type_net_compressed);
138 + freez((void *)d->chart_type_net_drops);
139 + freez((void *)d->chart_type_net_errors);
140 + freez((void *)d->chart_type_net_events);
141 + freez((void *)d->chart_type_net_fifo);
142 + freez((void *)d->chart_type_net_packets);
143 +
144 + freez((void *)d->chart_id_net_bytes);
145 + freez((void *)d->chart_id_net_compressed);
146 + freez((void *)d->chart_id_net_drops);
147 + freez((void *)d->chart_id_net_errors);
148 + freez((void *)d->chart_id_net_events);
149 + freez((void *)d->chart_id_net_fifo);
150 + freez((void *)d->chart_id_net_packets);
151 +
152 + freez((void *)d->chart_family);
153 +}
154 +
155 +static void netdev_free(struct netdev *d) {
156 + netdev_charts_release(d);
157 + netdev_free_strings(d);
158 +
159 + freez((void *)d->name);
160 + freez((void *)d);
161 + netdev_added--;
162 +}
163 +
164
165 // ----------------------------------------------------------------------------
166 // netdev renames
@@ -126,6 +203,7 @@ void netdev_rename_device_add(const char *host_device, const char *container_dev
203 r->container_name = strdupz(container_name);
204 r->hash = hash;
205 r->next = netdev_rename_root;
206 + r->processed = 0;
207 netdev_rename_root = r;
208 netdev_pending_renames++;
209 info("CGROUP: registered network interface rename for '%s' as '%s' under '%s'", r->host_device, r->container_device, r->container_name);
@@ -176,36 +254,78 @@ void netdev_rename_device_del(const char *host_device) {
254 netdata_mutex_unlock(&netdev_rename_mutex);
255 }
256
179 -// ----------------------------------------------------------------------------
180 -// netdev data collection
257 +static inline void netdev_rename_cgroup(struct netdev *d, struct netdev_rename *r) {
258 + info("CGROUP: renaming network interface '%s' as '%s' under '%s'", r->host_device, r->container_device, r->container_name);
259
182 -static struct netdev *netdev_root = NULL, *netdev_last_used = NULL;
183 -static size_t netdev_added = 0, netdev_found = 0;
260 + netdev_charts_release(d);
261 + netdev_free_strings(d);
262
185 -static void netdev_free(struct netdev *d) {
186 - if(d->st_bandwidth) rrdset_is_obsolete(d->st_bandwidth);
187 - if(d->st_packets) rrdset_is_obsolete(d->st_packets);
188 - if(d->st_errors) rrdset_is_obsolete(d->st_errors);
189 - if(d->st_drops) rrdset_is_obsolete(d->st_drops);
190 - if(d->st_fifo) rrdset_is_obsolete(d->st_fifo);
191 - if(d->st_compressed) rrdset_is_obsolete(d->st_compressed);
192 - if(d->st_events) rrdset_is_obsolete(d->st_events);
263 + char buffer[RRD_ID_LENGTH_MAX + 1];
264
194 - netdev_added--;
195 - freez((void *)d->chart_type_net_bytes);
196 - freez((void *)d->chart_type_net_compressed);
197 - freez((void *)d->chart_type_net_drops);
198 - freez((void *)d->chart_type_net_errors);
199 - freez((void *)d->chart_type_net_events);
200 - freez((void *)d->chart_type_net_fifo);
201 - freez((void *)d->chart_type_net_packets);
202 - freez((void *)d->chart_family);
203 - freez((void *)d->chart_name);
204 - freez((void *)d->chart_id);
205 - freez((void *)d->name);
206 - freez((void *)d);
265 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "cgroup_%s", r->container_name);
266 + d->chart_type_net_bytes = strdupz(buffer);
267 + d->chart_type_net_compressed = strdupz(buffer);
268 + d->chart_type_net_drops = strdupz(buffer);
269 + d->chart_type_net_errors = strdupz(buffer);
270 + d->chart_type_net_events = strdupz(buffer);
271 + d->chart_type_net_fifo = strdupz(buffer);
272 + d->chart_type_net_packets = strdupz(buffer);
273 +
274 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "net_%s", r->container_device);
275 + d->chart_id_net_bytes = strdupz(buffer);
276 +
277 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "net_compressed_%s", r->container_device);
278 + d->chart_id_net_compressed = strdupz(buffer);
279 +
280 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "net_drops_%s", r->container_device);
281 + d->chart_id_net_drops = strdupz(buffer);
282 +
283 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "net_errors_%s", r->container_device);
284 + d->chart_id_net_errors = strdupz(buffer);
285 +
286 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "net_events_%s", r->container_device);
287 + d->chart_id_net_events = strdupz(buffer);
288 +
289 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "net_fifo_%s", r->container_device);
290 + d->chart_id_net_fifo = strdupz(buffer);
291 +
292 + snprintfz(buffer, RRD_ID_LENGTH_MAX, "net_packets_%s", r->container_device);
293 + d->chart_id_net_packets = strdupz(buffer);
294 +
295 + d->chart_family = strdupz("net");
296 + d->priority = 43000;
297 + d->flipped = 1;
298 +}
299 +
300 +static inline void netdev_rename(struct netdev *d) {
301 + struct netdev_rename *r = netdev_rename_find(d->name, d->hash);
302 + if(unlikely(r && !r->processed)) {
303 + netdev_rename_cgroup(d, r);
304 + r->processed = 1;
305 + netdev_pending_renames--;
306 + }
307 }
308
309 +static inline void netdev_rename_lock(struct netdev *d) {
310 + netdata_mutex_lock(&netdev_rename_mutex);
311 + netdev_rename(d);
312 + netdata_mutex_unlock(&netdev_rename_mutex);
313 +}
314 +
315 +static inline void netdev_rename_all_lock(void) {
316 + netdata_mutex_lock(&netdev_rename_mutex);
317 +
318 + struct netdev *d;
319 + for(d = netdev_root; d ; d = d->next)
320 + netdev_rename(d);
321 +
322 + netdev_pending_renames = 0;
323 + netdata_mutex_unlock(&netdev_rename_mutex);
324 +}
325 +
326 +// ----------------------------------------------------------------------------
327 +// netdev data collection
328 +
329 static void netdev_cleanup() {
330 if(likely(netdev_found == netdev_added)) return;
331
@@ -272,11 +392,20 @@ static struct netdev *get_netdev(const char *name) {
392 d->chart_type_net_events = strdupz("net_events");
393 d->chart_type_net_fifo = strdupz("net_fifo");
394 d->chart_type_net_packets = strdupz("net_packets");
395 +
396 + d->chart_id_net_bytes = strdupz(d->name);
397 + d->chart_id_net_compressed = strdupz(d->name);
398 + d->chart_id_net_drops = strdupz(d->name);
399 + d->chart_id_net_errors = strdupz(d->name);
400 + d->chart_id_net_events = strdupz(d->name);
401 + d->chart_id_net_fifo = strdupz(d->name);
402 + d->chart_id_net_packets = strdupz(d->name);
403 +
404 d->chart_family = strdupz(d->name);
276 - d->chart_name = NULL;
277 - d->chart_id = strdupz(d->name);
405 d->priority = 7000;
406
407 + netdev_rename_lock(d);
408 +
409 netdev_added++;
410
411 // link it to the end
@@ -309,9 +438,7 @@ int do_proc_net_dev(int update_every, usec_t dt) {
438 do_compressed = config_get_boolean_ondemand("plugin:proc:/proc/net/dev", "compressed packets for all interfaces", CONFIG_BOOLEAN_AUTO);
439 do_events = config_get_boolean_ondemand("plugin:proc:/proc/net/dev", "frames, collisions, carrier counters for all interfaces", CONFIG_BOOLEAN_AUTO);
440
312 - disabled_list = simple_pattern_create(
313 - config_get("plugin:proc:/proc/net/dev", "disable by default interfaces matching", "lo fireqos* *-ifb")
314 - , SIMPLE_PATTERN_EXACT);
441 + disabled_list = simple_pattern_create(config_get("plugin:proc:/proc/net/dev", "disable by default interfaces matching", "lo fireqos* *-ifb"), SIMPLE_PATTERN_EXACT);
442 }
443
444 if(unlikely(!ff)) {
@@ -324,6 +451,10 @@ int do_proc_net_dev(int update_every, usec_t dt) {
451 ff = procfile_readall(ff);
452 if(unlikely(!ff)) return 0; // we return 0, so that we will retry to open it next time
453
454 + // rename all the devices, if we have pending renames
455 + if(unlikely(netdev_pending_renames))
456 + netdev_rename_all_lock();
457 +
458 netdev_found = 0;
459
460 size_t lines = procfile_lines(ff), l;
@@ -353,13 +484,13 @@ int do_proc_net_dev(int update_every, usec_t dt) {
484 if(d->enabled == CONFIG_BOOLEAN_NO)
485 continue;
486
356 - d->do_bandwidth = config_get_boolean_ondemand(var_name, "bandwidth", do_bandwidth);
357 - d->do_packets = config_get_boolean_ondemand(var_name, "packets", do_packets);
358 - d->do_errors = config_get_boolean_ondemand(var_name, "errors", do_errors);
359 - d->do_drops = config_get_boolean_ondemand(var_name, "drops", do_drops);
360 - d->do_fifo = config_get_boolean_ondemand(var_name, "fifo", do_fifo);
487 + d->do_bandwidth = config_get_boolean_ondemand(var_name, "bandwidth", do_bandwidth);
488 + d->do_packets = config_get_boolean_ondemand(var_name, "packets", do_packets);
489 + d->do_errors = config_get_boolean_ondemand(var_name, "errors", do_errors);
490 + d->do_drops = config_get_boolean_ondemand(var_name, "drops", do_drops);
491 + d->do_fifo = config_get_boolean_ondemand(var_name, "fifo", do_fifo);
492 d->do_compressed = config_get_boolean_ondemand(var_name, "compressed", do_compressed);
362 - d->do_events = config_get_boolean_ondemand(var_name, "events", do_events);
493 + d->do_events = config_get_boolean_ondemand(var_name, "events", do_events);
494 }
495
496 if(unlikely(!d->enabled))
@@ -412,8 +543,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
543
544 d->st_bandwidth = rrdset_create_localhost(
545 d->chart_type_net_bytes
415 - , d->chart_id
416 - , d->chart_name
546 + , d->chart_id_net_bytes
547 + , NULL
548 , d->chart_family
549 , "net.net"
550 , "Bandwidth"
@@ -423,8 +554,16 @@ int do_proc_net_dev(int update_every, usec_t dt) {
554 , RRDSET_TYPE_AREA
555 );
556
426 - d->rd_rbytes = rrddim_add(d->st_bandwidth, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
427 - d->rd_tbytes = rrddim_add(d->st_bandwidth, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
557 + d->rd_rbytes = rrddim_add(d->st_bandwidth, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
558 + d->rd_tbytes = rrddim_add(d->st_bandwidth, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
559 +
560 + if(d->flipped) {
561 + // flip receive/trasmit
562 +
563 + RRDDIM *td = d->rd_rbytes;
564 + d->rd_rbytes = d->rd_tbytes;
565 + d->rd_tbytes = td;
566 + }
567 }
568 else rrdset_next(d->st_bandwidth);
569
@@ -443,8 +582,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
582
583 d->st_packets = rrdset_create_localhost(
584 d->chart_type_net_packets
446 - , d->chart_id
447 - , d->chart_name
585 + , d->chart_id_net_packets
586 + , NULL
587 , d->chart_family
588 , "net.packets"
589 , "Packets"
@@ -456,9 +595,17 @@ int do_proc_net_dev(int update_every, usec_t dt) {
595
596 rrdset_flag_set(d->st_packets, RRDSET_FLAG_DETAIL);
597
459 - d->rd_rpackets = rrddim_add(d->st_packets, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
460 - d->rd_tpackets = rrddim_add(d->st_packets, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
461 - d->rd_rmulticast = rrddim_add(d->st_packets, "multicast", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
598 + d->rd_rpackets = rrddim_add(d->st_packets, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
599 + d->rd_tpackets = rrddim_add(d->st_packets, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
600 + d->rd_rmulticast = rrddim_add(d->st_packets, "multicast", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
601 +
602 + if(d->flipped) {
603 + // flip receive/trasmit
604 +
605 + RRDDIM *td = d->rd_rpackets;
606 + d->rd_rpackets = d->rd_tpackets;
607 + d->rd_tpackets = td;
608 + }
609 }
610 else rrdset_next(d->st_packets);
611
@@ -478,8 +625,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
625
626 d->st_errors = rrdset_create_localhost(
627 d->chart_type_net_errors
481 - , d->chart_id
482 - , d->chart_name
628 + , d->chart_id_net_errors
629 + , NULL
630 , d->chart_family
631 , "net.errors"
632 , "Interface Errors"
@@ -491,8 +638,16 @@ int do_proc_net_dev(int update_every, usec_t dt) {
638
639 rrdset_flag_set(d->st_errors, RRDSET_FLAG_DETAIL);
640
494 - d->rd_rerrors = rrddim_add(d->st_errors, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
641 + d->rd_rerrors = rrddim_add(d->st_errors, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
642 d->rd_terrors = rrddim_add(d->st_errors, "outbound", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
643 +
644 + if(d->flipped) {
645 + // flip receive/trasmit
646 +
647 + RRDDIM *td = d->rd_rerrors;
648 + d->rd_rerrors = d->rd_terrors;
649 + d->rd_terrors = td;
650 + }
651 }
652 else rrdset_next(d->st_errors);
653
@@ -511,8 +666,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
666
667 d->st_drops = rrdset_create_localhost(
668 d->chart_type_net_drops
514 - , d->chart_id
515 - , d->chart_name
669 + , d->chart_id_net_drops
670 + , NULL
671 , d->chart_family
672 , "net.drops"
673 , "Interface Drops"
@@ -524,8 +679,16 @@ int do_proc_net_dev(int update_every, usec_t dt) {
679
680 rrdset_flag_set(d->st_drops, RRDSET_FLAG_DETAIL);
681
527 - d->rd_rdrops = rrddim_add(d->st_drops, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
682 + d->rd_rdrops = rrddim_add(d->st_drops, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
683 d->rd_tdrops = rrddim_add(d->st_drops, "outbound", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
684 +
685 + if(d->flipped) {
686 + // flip receive/trasmit
687 +
688 + RRDDIM *td = d->rd_rdrops;
689 + d->rd_rdrops = d->rd_tdrops;
690 + d->rd_tdrops = td;
691 + }
692 }
693 else rrdset_next(d->st_drops);
694
@@ -544,8 +707,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
707
708 d->st_fifo = rrdset_create_localhost(
709 d->chart_type_net_fifo
547 - , d->chart_id
548 - , d->chart_name
710 + , d->chart_id_net_fifo
711 + , NULL
712 , d->chart_family
713 , "net.fifo"
714 , "Interface FIFO Buffer Errors"
@@ -557,8 +720,16 @@ int do_proc_net_dev(int update_every, usec_t dt) {
720
721 rrdset_flag_set(d->st_fifo, RRDSET_FLAG_DETAIL);
722
560 - d->rd_rfifo = rrddim_add(d->st_fifo, "receive", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
723 + d->rd_rfifo = rrddim_add(d->st_fifo, "receive", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
724 d->rd_tfifo = rrddim_add(d->st_fifo, "transmit", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
725 +
726 + if(d->flipped) {
727 + // flip receive/trasmit
728 +
729 + RRDDIM *td = d->rd_rfifo;
730 + d->rd_rfifo = d->rd_tfifo;
731 + d->rd_tfifo = td;
732 + }
733 }
734 else rrdset_next(d->st_fifo);
735
@@ -577,8 +748,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
748
749 d->st_compressed = rrdset_create_localhost(
750 d->chart_type_net_compressed
580 - , d->chart_id
581 - , d->chart_name
751 + , d->chart_id_net_compressed
752 + , NULL
753 , d->chart_family
754 , "net.compressed"
755 , "Compressed Packets"
@@ -590,8 +761,16 @@ int do_proc_net_dev(int update_every, usec_t dt) {
761
762 rrdset_flag_set(d->st_compressed, RRDSET_FLAG_DETAIL);
763
593 - d->rd_rcompressed = rrddim_add(d->st_compressed, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
594 - d->rd_tcompressed = rrddim_add(d->st_compressed, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
764 + d->rd_rcompressed = rrddim_add(d->st_compressed, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
765 + d->rd_tcompressed = rrddim_add(d->st_compressed, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
766 +
767 + if(d->flipped) {
768 + // flip receive/trasmit
769 +
770 + RRDDIM *td = d->rd_rcompressed;
771 + d->rd_rcompressed = d->rd_tcompressed;
772 + d->rd_tcompressed = td;
773 + }
774 }
775 else rrdset_next(d->st_compressed);
776
@@ -610,8 +789,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
789
790 d->st_events = rrdset_create_localhost(
791 d->chart_type_net_events
613 - , d->chart_id
614 - , d->chart_name
792 + , d->chart_id_net_events
793 + , NULL
794 , d->chart_family
795 , "net.events"
796 , "Network Interface Events"
@@ -623,9 +802,9 @@ int do_proc_net_dev(int update_every, usec_t dt) {
802
803 rrdset_flag_set(d->st_events, RRDSET_FLAG_DETAIL);
804
626 - d->rd_rframe = rrddim_add(d->st_events, "frames", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
805 + d->rd_rframe = rrddim_add(d->st_events, "frames", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
806 d->rd_tcollisions = rrddim_add(d->st_events, "collisions", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
628 - d->rd_tcarrier = rrddim_add(d->st_events, "carrier", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
807 + d->rd_tcarrier = rrddim_add(d->st_events, "carrier", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
808 }
809 else rrdset_next(d->st_events);
810
web/dashboard_info.js
+46 -2
@@ -709,9 +709,53 @@ netdataDashboard.context = {
709 // NETWORK INTERFACES
710
711 'net.net': {
712 + mainheads: [
713 + function(os, id) {
714 + void(os);
715 + if(id.match(/^cgroup_.*/)) {
716 + var iface;
717 + try {
718 + iface = id.substring(id.lastIndexOf('.net_') + 5, id.length) + ' ';
719 + }
720 + catch (e) {
721 + iface = '';
722 + }
723 + return netdataDashboard.gaugeChart(iface + 'Received', '12%', 'received');
724 + }
725 + else
726 + return '';
727 + },
728 + function(os, id) {
729 + void(os);
730 + if(id.match(/^cgroup_.*/)) {
731 + var iface;
732 + try {
733 + iface = id.substring(id.lastIndexOf('.net_') + 5, id.length) + ' ';
734 + }
735 + catch (e) {
736 + iface = '';
737 + }
738 + return netdataDashboard.gaugeChart(iface + 'Sent', '12%', 'sent');
739 + }
740 + else
741 + return '';
742 + }
743 + ],
744 heads: [
713 - netdataDashboard.gaugeChart('Received', '12%', 'received'),
714 - netdataDashboard.gaugeChart('Sent', '12%', 'sent')
745 + function(os, id) {
746 + void(os);
747 + if(!id.match(/^cgroup_.*/))
748 + return netdataDashboard.gaugeChart('Received', '12%', 'received');
749 + else
750 + return '';
751 + },
752 + function(os, id) {
753 + void(os);
754 + if(!id.match(/^cgroup_.*/))
755 + return netdataDashboard.gaugeChart('Sent', '12%', 'sent');
756 + else
757 + return '';
758 + }
759 ]
760 },
761
web/index.html
+1 -1
@@ -2961,7 +2961,7 @@
2961 });
2962
2963 NETDATA.requiredJs.push({
2964 - url: NETDATA.serverDefault + 'dashboard_info.js?v20170725-1',
2964 + url: NETDATA.serverDefault + 'dashboard_info.js?v20170731-4',
2965 async: false,
2966 isAlreadyLoaded: function() { return false; }
2967 });