@cryptotaxi247 / netdata-1 / commits / 9682f0a43

proc_net_dev: don't create runtime device config by default (#16501)

Ilya Mashchenko committed Nov 29, 2023 at 22:51 UTC 9682f0a43a2cd67996f9bf9143a1de6cedca378a
1 file changed +56 -32
collectors/proc.plugin/proc_net_dev.c
+56 -32
@@ -366,10 +366,6 @@ static void netdev_free_chart_strings(struct netdev *d) {
366 }
367
368 static void netdev_free(struct netdev *d) {
369 - char buf[FILENAME_MAX + 1];
370 - snprintfz(buf, FILENAME_MAX, "plugin:proc:/proc/net/dev:%s", d->name);
371 - config_section_destroy(buf);
372 -
369 netdev_charts_release(d);
370 netdev_free_chart_strings(d);
371 rrdlabels_destroy(d->chart_labels);
@@ -1152,10 +1148,10 @@ int do_proc_net_dev(int update_every, usec_t dt) {
1148 if(d->enabled)
1149 d->enabled = !simple_pattern_matches(disabled_list, d->name);
1150
1155 - char buffer[FILENAME_MAX + 1];
1156 - snprintfz(buffer, FILENAME_MAX, path_to_sys_devices_virtual_net, d->name);
1151 + char buf[FILENAME_MAX + 1];
1152 + snprintfz(buf, FILENAME_MAX, path_to_sys_devices_virtual_net, d->name);
1153
1158 - d->virtual = likely(access(buffer, R_OK) == 0) ? 1 : 0;
1154 + d->virtual = likely(access(buf, R_OK) == 0) ? 1 : 0;
1155
1156 // At least on Proxmox inside LXC: eth0 is virtual.
1157 // Virtual interfaces are not taken into account in system.net calculations
@@ -1171,41 +1167,69 @@ int do_proc_net_dev(int update_every, usec_t dt) {
1167
1168 if(likely(!d->virtual)) {
1169 // set the filename to get the interface speed
1174 - snprintfz(buffer, FILENAME_MAX, path_to_sys_class_net_speed, d->name);
1175 - d->filename_speed = strdupz(buffer);
1170 + snprintfz(buf, FILENAME_MAX, path_to_sys_class_net_speed, d->name);
1171 + d->filename_speed = strdupz(buf);
1172
1177 - snprintfz(buffer, FILENAME_MAX, path_to_sys_class_net_duplex, d->name);
1178 - d->filename_duplex = strdupz(buffer);
1173 + snprintfz(buf, FILENAME_MAX, path_to_sys_class_net_duplex, d->name);
1174 + d->filename_duplex = strdupz(buf);
1175 }
1176
1181 - snprintfz(buffer, FILENAME_MAX, path_to_sys_class_net_operstate, d->name);
1182 - d->filename_operstate = strdupz(buffer);
1177 + snprintfz(buf, FILENAME_MAX, path_to_sys_class_net_operstate, d->name);
1178 + d->filename_operstate = strdupz(buf);
1179 +
1180 + snprintfz(buf, FILENAME_MAX, path_to_sys_class_net_carrier, d->name);
1181 + d->filename_carrier = strdupz(buf);
1182
1184 - snprintfz(buffer, FILENAME_MAX, path_to_sys_class_net_carrier, d->name);
1185 - d->filename_carrier = strdupz(buffer);
1183 + snprintfz(buf, FILENAME_MAX, path_to_sys_class_net_mtu, d->name);
1184 + d->filename_mtu = strdupz(buf);
1185
1187 - snprintfz(buffer, FILENAME_MAX, path_to_sys_class_net_mtu, d->name);
1188 - d->filename_mtu = strdupz(buffer);
1186 + snprintfz(buf, FILENAME_MAX, "plugin:proc:/proc/net/dev:%s", d->name);
1187
1190 - snprintfz(buffer, FILENAME_MAX, "plugin:proc:/proc/net/dev:%s", d->name);
1191 - d->enabled = config_get_boolean_ondemand(buffer, "enabled", d->enabled);
1192 - d->virtual = config_get_boolean(buffer, "virtual", d->virtual);
1188 + if (config_exists(buf, "enabled"))
1189 + d->enabled = config_get_boolean_ondemand(buf, "enabled", d->enabled);
1190 + if (config_exists(buf, "virtual"))
1191 + d->virtual = config_get_boolean(buf, "virtual", d->virtual);
1192
1193 if(d->enabled == CONFIG_BOOLEAN_NO)
1194 continue;
1195
1197 - d->do_bandwidth = config_get_boolean_ondemand(buffer, "bandwidth", do_bandwidth);
1198 - d->do_packets = config_get_boolean_ondemand(buffer, "packets", do_packets);
1199 - d->do_errors = config_get_boolean_ondemand(buffer, "errors", do_errors);
1200 - d->do_drops = config_get_boolean_ondemand(buffer, "drops", do_drops);
1201 - d->do_fifo = config_get_boolean_ondemand(buffer, "fifo", do_fifo);
1202 - d->do_compressed = config_get_boolean_ondemand(buffer, "compressed", do_compressed);
1203 - d->do_events = config_get_boolean_ondemand(buffer, "events", do_events);
1204 - d->do_speed = config_get_boolean_ondemand(buffer, "speed", do_speed);
1205 - d->do_duplex = config_get_boolean_ondemand(buffer, "duplex", do_duplex);
1206 - d->do_operstate = config_get_boolean_ondemand(buffer, "operstate", do_operstate);
1207 - d->do_carrier = config_get_boolean_ondemand(buffer, "carrier", do_carrier);
1208 - d->do_mtu = config_get_boolean_ondemand(buffer, "mtu", do_mtu);
1196 + d->do_bandwidth = do_bandwidth;
1197 + d->do_packets = do_packets;
1198 + d->do_errors = do_errors;
1199 + d->do_drops = do_drops;
1200 + d->do_fifo = do_fifo;
1201 + d->do_compressed = do_compressed;
1202 + d->do_events = do_events;
1203 + d->do_speed = do_speed;
1204 + d->do_duplex = do_duplex;
1205 + d->do_operstate = do_operstate;
1206 + d->do_carrier = do_carrier;
1207 + d->do_mtu = do_mtu;
1208 +
1209 + if (config_exists(buf, "bandwidth"))
1210 + d->do_bandwidth = config_get_boolean_ondemand(buf, "bandwidth", do_bandwidth);
1211 + if (config_exists(buf, "packets"))
1212 + d->do_packets = config_get_boolean_ondemand(buf, "packets", do_packets);
1213 + if (config_exists(buf, "errors"))
1214 + d->do_errors = config_get_boolean_ondemand(buf, "errors", do_errors);
1215 + if (config_exists(buf, "drops"))
1216 + d->do_drops = config_get_boolean_ondemand(buf, "drops", do_drops);
1217 + if (config_exists(buf, "fifo"))
1218 + d->do_fifo = config_get_boolean_ondemand(buf, "fifo", do_fifo);
1219 + if (config_exists(buf, "compressed"))
1220 + d->do_compressed = config_get_boolean_ondemand(buf, "compressed", do_compressed);
1221 + if (config_exists(buf, "events"))
1222 + d->do_events = config_get_boolean_ondemand(buf, "events", do_events);
1223 + if (config_exists(buf, "speed"))
1224 + d->do_speed = config_get_boolean_ondemand(buf, "speed", do_speed);
1225 + if (config_exists(buf, "duplex"))
1226 + d->do_duplex = config_get_boolean_ondemand(buf, "duplex", do_duplex);
1227 + if (config_exists(buf, "operstate"))
1228 + d->do_operstate = config_get_boolean_ondemand(buf, "operstate", do_operstate);
1229 + if (config_exists(buf, "carrier"))
1230 + d->do_carrier = config_get_boolean_ondemand(buf, "carrier", do_carrier);
1231 + if (config_exists(buf, "mtu"))
1232 + d->do_mtu = config_get_boolean_ondemand(buf, "mtu", do_mtu);
1233 }
1234
1235 if(unlikely(!d->enabled))