diff options
Diffstat (limited to '')
-rw-r--r-- | collectors/python.d.plugin/Makefile.am | 229 | ||||
-rw-r--r-- | collectors/python.d.plugin/README.md | 77 | ||||
-rw-r--r-- | collectors/python.d.plugin/adaptec_raid/Makefile.inc | 13 | ||||
l--------- | collectors/python.d.plugin/adaptec_raid/README.md | 1 | ||||
-rw-r--r-- | collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py | 247 | ||||
-rw-r--r-- | collectors/python.d.plugin/adaptec_raid/adaptec_raid.conf | 53 | ||||
-rw-r--r-- | collectors/python.d.plugin/adaptec_raid/integrations/adaptecraid.md | 204 | ||||
-rw-r--r-- | collectors/python.d.plugin/adaptec_raid/metadata.yaml | 167 | ||||
-rw-r--r-- | collectors/python.d.plugin/alarms/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/alarms/metadata.yaml | 177 | ||||
-rw-r--r-- | collectors/python.d.plugin/am2320/Makefile.inc | 8 | ||||
-rw-r--r-- | collectors/python.d.plugin/anomalies/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/anomalies/README.md | 248 | ||||
-rw-r--r-- | collectors/python.d.plugin/anomalies/metadata.yaml | 87 | ||||
-rw-r--r-- | collectors/python.d.plugin/beanstalk/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/beanstalk/metadata.yaml | 263 | ||||
-rw-r--r-- | collectors/python.d.plugin/bind_rndc/Makefile.inc | 13 | ||||
l--------- | collectors/python.d.plugin/bind_rndc/README.md | 1 | ||||
-rw-r--r-- | collectors/python.d.plugin/bind_rndc/bind_rndc.chart.py | 252 | ||||
-rw-r--r-- | collectors/python.d.plugin/bind_rndc/bind_rndc.conf | 108 | ||||
-rw-r--r-- | collectors/python.d.plugin/bind_rndc/integrations/isc_bind_rndc.md | 215 | ||||
-rw-r--r-- | collectors/python.d.plugin/bind_rndc/metadata.yaml | 191 | ||||
-rw-r--r-- | collectors/python.d.plugin/boinc/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/boinc/metadata.yaml | 198 | ||||
-rw-r--r-- | collectors/python.d.plugin/ceph/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/ceph/metadata.yaml | 223 | ||||
-rw-r--r-- | collectors/python.d.plugin/changefinder/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/dovecot/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/example/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/example/metadata.yaml | 138 | ||||
-rw-r--r-- | collectors/python.d.plugin/exim/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/fail2ban/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/fail2ban/fail2ban.chart.py | 217 | ||||
-rw-r--r-- | collectors/python.d.plugin/fail2ban/fail2ban.conf | 68 | ||||
-rw-r--r-- | collectors/python.d.plugin/fail2ban/integrations/fail2ban.md | 209 | ||||
-rw-r--r-- | collectors/python.d.plugin/fail2ban/metadata.yaml | 200 | ||||
-rw-r--r-- | collectors/python.d.plugin/gearman/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/gearman/metadata.yaml | 168 | ||||
-rw-r--r-- | collectors/python.d.plugin/go_expvar/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/go_expvar/metadata.yaml | 329 | ||||
-rw-r--r-- | collectors/python.d.plugin/haproxy/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/haproxy/README.md | 90 | ||||
-rw-r--r-- | collectors/python.d.plugin/haproxy/metadata.yaml | 322 | ||||
-rw-r--r-- | collectors/python.d.plugin/hddtemp/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/hddtemp/hddtemp.chart.py | 99 | ||||
-rw-r--r-- | collectors/python.d.plugin/hddtemp/hddtemp.conf | 95 | ||||
-rw-r--r-- | collectors/python.d.plugin/hddtemp/integrations/hdd_temperature.md | 217 | ||||
-rw-r--r-- | collectors/python.d.plugin/hddtemp/metadata.yaml | 163 | ||||
-rw-r--r-- | collectors/python.d.plugin/hpssa/Makefile.inc | 13 | ||||
l--------- | collectors/python.d.plugin/hpssa/README.md | 1 | ||||
-rw-r--r-- | collectors/python.d.plugin/hpssa/hpssa.chart.py | 396 | ||||
-rw-r--r-- | collectors/python.d.plugin/hpssa/hpssa.conf | 61 | ||||
-rw-r--r-- | collectors/python.d.plugin/hpssa/integrations/hp_smart_storage_arrays.md | 205 | ||||
-rw-r--r-- | collectors/python.d.plugin/hpssa/metadata.yaml | 185 | ||||
-rw-r--r-- | collectors/python.d.plugin/icecast/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/ipfs/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/ipfs/metadata.yaml | 172 | ||||
-rw-r--r-- | collectors/python.d.plugin/litespeed/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/litespeed/integrations/litespeed.md | 170 | ||||
-rw-r--r-- | collectors/python.d.plugin/litespeed/litespeed.chart.py | 188 | ||||
-rw-r--r-- | collectors/python.d.plugin/litespeed/litespeed.conf | 72 | ||||
-rw-r--r-- | collectors/python.d.plugin/litespeed/metadata.yaml | 168 | ||||
-rw-r--r-- | collectors/python.d.plugin/megacli/Makefile.inc | 13 | ||||
l--------- | collectors/python.d.plugin/megacli/README.md | 1 | ||||
-rw-r--r-- | collectors/python.d.plugin/megacli/integrations/megacli.md | 220 | ||||
-rw-r--r-- | collectors/python.d.plugin/megacli/megacli.chart.py | 278 | ||||
-rw-r--r-- | collectors/python.d.plugin/megacli/megacli.conf | 60 | ||||
-rw-r--r-- | collectors/python.d.plugin/megacli/metadata.yaml | 193 | ||||
-rw-r--r-- | collectors/python.d.plugin/memcached/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/memcached/metadata.yaml | 247 | ||||
-rw-r--r-- | collectors/python.d.plugin/monit/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/nsd/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/nvidia_smi/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/nvidia_smi/README.md | 157 | ||||
-rw-r--r-- | collectors/python.d.plugin/nvidia_smi/metadata.yaml | 166 | ||||
-rw-r--r-- | collectors/python.d.plugin/openldap/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/oracledb/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/pandas/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/pandas/metadata.yaml | 308 | ||||
-rw-r--r-- | collectors/python.d.plugin/postfix/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/puppet/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/puppet/metadata.yaml | 185 | ||||
-rw-r--r-- | collectors/python.d.plugin/python.d.conf | 78 | ||||
-rw-r--r-- | collectors/python.d.plugin/rethinkdbs/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/retroshare/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/retroshare/metadata.yaml | 144 | ||||
-rw-r--r-- | collectors/python.d.plugin/riakkv/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/riakkv/metadata.yaml | 358 | ||||
-rw-r--r-- | collectors/python.d.plugin/samba/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/samba/metadata.yaml | 205 | ||||
-rw-r--r-- | collectors/python.d.plugin/sensors/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/sensors/integrations/linux_sensors_lm-sensors.md | 187 | ||||
-rw-r--r-- | collectors/python.d.plugin/sensors/metadata.yaml | 184 | ||||
-rw-r--r-- | collectors/python.d.plugin/sensors/sensors.chart.py | 179 | ||||
-rw-r--r-- | collectors/python.d.plugin/sensors/sensors.conf | 61 | ||||
-rw-r--r-- | collectors/python.d.plugin/smartd_log/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/smartd_log/integrations/s.m.a.r.t..md | 223 | ||||
-rw-r--r-- | collectors/python.d.plugin/smartd_log/metadata.yaml | 429 | ||||
-rw-r--r-- | collectors/python.d.plugin/smartd_log/smartd_log.chart.py | 790 | ||||
-rw-r--r-- | collectors/python.d.plugin/smartd_log/smartd_log.conf | 76 | ||||
-rw-r--r-- | collectors/python.d.plugin/spigotmc/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/squid/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/tomcat/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/tor/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/traefik/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/traefik/README.md | 98 | ||||
-rw-r--r-- | collectors/python.d.plugin/traefik/metadata.yaml | 125 | ||||
-rw-r--r-- | collectors/python.d.plugin/uwsgi/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/varnish/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/w1sensor/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/zscores/Makefile.inc | 12 | ||||
-rw-r--r-- | collectors/python.d.plugin/zscores/metadata.yaml | 187 | ||||
l--------- | src/collectors/python.d.plugin/alarms/README.md (renamed from collectors/python.d.plugin/alarms/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/alarms/alarms.chart.py (renamed from collectors/python.d.plugin/alarms/alarms.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/alarms/alarms.conf (renamed from collectors/python.d.plugin/alarms/alarms.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/alarms/integrations/netdata_agent_alarms.md (renamed from collectors/python.d.plugin/alarms/integrations/netdata_agent_alarms.md) | 12 | ||||
l--------- | src/collectors/python.d.plugin/am2320/README.md (renamed from collectors/python.d.plugin/am2320/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/am2320/am2320.chart.py (renamed from collectors/python.d.plugin/am2320/am2320.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/am2320/am2320.conf (renamed from collectors/python.d.plugin/am2320/am2320.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/am2320/integrations/am2320.md (renamed from collectors/python.d.plugin/am2320/integrations/am2320.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/am2320/metadata.yaml (renamed from collectors/python.d.plugin/am2320/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/anomalies/anomalies.chart.py (renamed from collectors/python.d.plugin/anomalies/anomalies.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/anomalies/anomalies.conf (renamed from collectors/python.d.plugin/anomalies/anomalies.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/beanstalk/README.md (renamed from collectors/python.d.plugin/beanstalk/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/beanstalk/beanstalk.chart.py (renamed from collectors/python.d.plugin/beanstalk/beanstalk.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/beanstalk/beanstalk.conf (renamed from collectors/python.d.plugin/beanstalk/beanstalk.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/beanstalk/integrations/beanstalk.md (renamed from collectors/python.d.plugin/beanstalk/integrations/beanstalk.md) | 16 | ||||
l--------- | src/collectors/python.d.plugin/boinc/README.md (renamed from collectors/python.d.plugin/boinc/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/boinc/boinc.chart.py (renamed from collectors/python.d.plugin/boinc/boinc.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/boinc/boinc.conf (renamed from collectors/python.d.plugin/boinc/boinc.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/boinc/integrations/boinc.md (renamed from collectors/python.d.plugin/boinc/integrations/boinc.md) | 20 | ||||
l--------- | src/collectors/python.d.plugin/ceph/README.md (renamed from collectors/python.d.plugin/ceph/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/ceph/ceph.chart.py (renamed from collectors/python.d.plugin/ceph/ceph.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/ceph/ceph.conf (renamed from collectors/python.d.plugin/ceph/ceph.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/ceph/integrations/ceph.md (renamed from collectors/python.d.plugin/ceph/integrations/ceph.md) | 12 | ||||
l--------- | src/collectors/python.d.plugin/changefinder/README.md (renamed from collectors/python.d.plugin/changefinder/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/changefinder/changefinder.chart.py (renamed from collectors/python.d.plugin/changefinder/changefinder.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/changefinder/changefinder.conf (renamed from collectors/python.d.plugin/changefinder/changefinder.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/changefinder/integrations/python.d_changefinder.md (renamed from collectors/python.d.plugin/changefinder/integrations/python.d_changefinder.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/changefinder/metadata.yaml (renamed from collectors/python.d.plugin/changefinder/metadata.yaml) | 0 | ||||
l--------- | src/collectors/python.d.plugin/dovecot/README.md (renamed from collectors/python.d.plugin/dovecot/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/dovecot/dovecot.chart.py (renamed from collectors/python.d.plugin/dovecot/dovecot.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/dovecot/dovecot.conf (renamed from collectors/python.d.plugin/dovecot/dovecot.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/dovecot/integrations/dovecot.md (renamed from collectors/python.d.plugin/dovecot/integrations/dovecot.md) | 14 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/dovecot/metadata.yaml (renamed from collectors/python.d.plugin/dovecot/metadata.yaml) | 0 | ||||
l--------- | src/collectors/python.d.plugin/example/README.md (renamed from collectors/python.d.plugin/example/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/example/example.chart.py (renamed from collectors/python.d.plugin/example/example.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/example/example.conf (renamed from collectors/python.d.plugin/example/example.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/example/integrations/example_collector.md (renamed from collectors/python.d.plugin/example/integrations/example_collector.md) | 12 | ||||
l--------- | src/collectors/python.d.plugin/exim/README.md (renamed from collectors/python.d.plugin/exim/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/exim/exim.chart.py (renamed from collectors/python.d.plugin/exim/exim.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/exim/exim.conf (renamed from collectors/python.d.plugin/exim/exim.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/exim/integrations/exim.md (renamed from collectors/python.d.plugin/exim/integrations/exim.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/exim/metadata.yaml (renamed from collectors/python.d.plugin/exim/metadata.yaml) | 0 | ||||
l--------- | src/collectors/python.d.plugin/gearman/README.md (renamed from collectors/python.d.plugin/gearman/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/gearman/gearman.chart.py (renamed from collectors/python.d.plugin/gearman/gearman.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/gearman/gearman.conf (renamed from collectors/python.d.plugin/gearman/gearman.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/gearman/integrations/gearman.md (renamed from collectors/python.d.plugin/gearman/integrations/gearman.md) | 14 | ||||
l--------- | src/collectors/python.d.plugin/go_expvar/README.md (renamed from collectors/python.d.plugin/go_expvar/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/go_expvar/go_expvar.chart.py (renamed from collectors/python.d.plugin/go_expvar/go_expvar.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/go_expvar/go_expvar.conf (renamed from collectors/python.d.plugin/go_expvar/go_expvar.conf) | 2 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/go_expvar/integrations/go_applications_expvar.md (renamed from collectors/python.d.plugin/go_expvar/integrations/go_applications_expvar.md) | 20 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/haproxy/haproxy.chart.py (renamed from collectors/python.d.plugin/haproxy/haproxy.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/haproxy/haproxy.conf (renamed from collectors/python.d.plugin/haproxy/haproxy.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/icecast/README.md (renamed from collectors/python.d.plugin/icecast/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/icecast/icecast.chart.py (renamed from collectors/python.d.plugin/icecast/icecast.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/icecast/icecast.conf (renamed from collectors/python.d.plugin/icecast/icecast.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/icecast/integrations/icecast.md (renamed from collectors/python.d.plugin/icecast/integrations/icecast.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/icecast/metadata.yaml (renamed from collectors/python.d.plugin/icecast/metadata.yaml) | 0 | ||||
l--------- | src/collectors/python.d.plugin/ipfs/README.md (renamed from collectors/python.d.plugin/ipfs/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/ipfs/integrations/ipfs.md (renamed from collectors/python.d.plugin/ipfs/integrations/ipfs.md) | 14 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/ipfs/ipfs.chart.py (renamed from collectors/python.d.plugin/ipfs/ipfs.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/ipfs/ipfs.conf (renamed from collectors/python.d.plugin/ipfs/ipfs.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/memcached/README.md (renamed from collectors/python.d.plugin/memcached/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/memcached/integrations/memcached.md (renamed from collectors/python.d.plugin/memcached/integrations/memcached.md) | 20 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/memcached/memcached.chart.py (renamed from collectors/python.d.plugin/memcached/memcached.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/memcached/memcached.conf (renamed from collectors/python.d.plugin/memcached/memcached.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/monit/README.md (renamed from collectors/python.d.plugin/monit/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/monit/integrations/monit.md (renamed from collectors/python.d.plugin/monit/integrations/monit.md) | 14 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/monit/metadata.yaml (renamed from collectors/python.d.plugin/monit/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/monit/monit.chart.py (renamed from collectors/python.d.plugin/monit/monit.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/monit/monit.conf (renamed from collectors/python.d.plugin/monit/monit.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/nsd/README.md (renamed from collectors/python.d.plugin/nsd/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/nsd/integrations/name_server_daemon.md (renamed from collectors/python.d.plugin/nsd/integrations/name_server_daemon.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/nsd/metadata.yaml (renamed from collectors/python.d.plugin/nsd/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/nsd/nsd.chart.py (renamed from collectors/python.d.plugin/nsd/nsd.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/nsd/nsd.conf (renamed from collectors/python.d.plugin/nsd/nsd.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py (renamed from collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/nvidia_smi/nvidia_smi.conf (renamed from collectors/python.d.plugin/nvidia_smi/nvidia_smi.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/openldap/README.md (renamed from collectors/python.d.plugin/openldap/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/openldap/integrations/openldap.md (renamed from collectors/python.d.plugin/openldap/integrations/openldap.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/openldap/metadata.yaml (renamed from collectors/python.d.plugin/openldap/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/openldap/openldap.chart.py (renamed from collectors/python.d.plugin/openldap/openldap.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/openldap/openldap.conf (renamed from collectors/python.d.plugin/openldap/openldap.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/oracledb/README.md (renamed from collectors/python.d.plugin/oracledb/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/oracledb/integrations/oracle_db.md (renamed from collectors/python.d.plugin/oracledb/integrations/oracle_db.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/oracledb/metadata.yaml (renamed from collectors/python.d.plugin/oracledb/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/oracledb/oracledb.chart.py (renamed from collectors/python.d.plugin/oracledb/oracledb.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/oracledb/oracledb.conf (renamed from collectors/python.d.plugin/oracledb/oracledb.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/pandas/README.md (renamed from collectors/python.d.plugin/pandas/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/pandas/integrations/pandas.md (renamed from collectors/python.d.plugin/pandas/integrations/pandas.md) | 24 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/pandas/pandas.chart.py (renamed from collectors/python.d.plugin/pandas/pandas.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/pandas/pandas.conf (renamed from collectors/python.d.plugin/pandas/pandas.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/postfix/README.md (renamed from collectors/python.d.plugin/postfix/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/postfix/integrations/postfix.md (renamed from collectors/python.d.plugin/postfix/integrations/postfix.md) | 8 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/postfix/metadata.yaml (renamed from collectors/python.d.plugin/postfix/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/postfix/postfix.chart.py (renamed from collectors/python.d.plugin/postfix/postfix.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/postfix/postfix.conf (renamed from collectors/python.d.plugin/postfix/postfix.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/puppet/README.md (renamed from collectors/python.d.plugin/puppet/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/puppet/integrations/puppet.md (renamed from collectors/python.d.plugin/puppet/integrations/puppet.md) | 18 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/puppet/puppet.chart.py (renamed from collectors/python.d.plugin/puppet/puppet.chart.py) | 4 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/puppet/puppet.conf (renamed from collectors/python.d.plugin/puppet/puppet.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python.d.plugin.in (renamed from collectors/python.d.plugin/python.d.plugin.in) | 4 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/__init__.py (renamed from collectors/python.d.plugin/python_modules/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/ExecutableService.py (renamed from collectors/python.d.plugin/python_modules/bases/FrameworkServices/ExecutableService.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/LogService.py (renamed from collectors/python.d.plugin/python_modules/bases/FrameworkServices/LogService.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/MySQLService.py (renamed from collectors/python.d.plugin/python_modules/bases/FrameworkServices/MySQLService.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SimpleService.py (renamed from collectors/python.d.plugin/python_modules/bases/FrameworkServices/SimpleService.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SocketService.py (renamed from collectors/python.d.plugin/python_modules/bases/FrameworkServices/SocketService.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py (renamed from collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/__init__.py (renamed from collectors/python.d.plugin/python_modules/bases/FrameworkServices/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/__init__.py (renamed from collectors/python.d.plugin/python_modules/bases/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/charts.py (renamed from collectors/python.d.plugin/python_modules/bases/charts.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/collection.py (renamed from collectors/python.d.plugin/python_modules/bases/collection.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/loaders.py (renamed from collectors/python.d.plugin/python_modules/bases/loaders.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/bases/loggers.py (renamed from collectors/python.d.plugin/python_modules/bases/loggers.py) | 2 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/__init__.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/composer.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/composer.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/constructor.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/constructor.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/cyaml.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/cyaml.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/dumper.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/dumper.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/emitter.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/emitter.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/error.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/error.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/events.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/events.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/loader.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/loader.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/nodes.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/nodes.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/parser.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/parser.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/reader.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/reader.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/representer.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/representer.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/resolver.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/resolver.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/scanner.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/scanner.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/serializer.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/serializer.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml2/tokens.py (renamed from collectors/python.d.plugin/python_modules/pyyaml2/tokens.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/__init__.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/composer.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/composer.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/constructor.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/constructor.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/cyaml.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/cyaml.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/dumper.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/dumper.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/emitter.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/emitter.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/error.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/error.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/events.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/events.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/loader.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/loader.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/nodes.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/nodes.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/parser.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/parser.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/reader.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/reader.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/representer.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/representer.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/resolver.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/resolver.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/scanner.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/scanner.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/serializer.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/serializer.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/pyyaml3/tokens.py (renamed from collectors/python.d.plugin/python_modules/pyyaml3/tokens.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/third_party/__init__.py (renamed from collectors/python.d.plugin/python_modules/third_party/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/third_party/boinc_client.py (renamed from collectors/python.d.plugin/python_modules/third_party/boinc_client.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/third_party/filelock.py (renamed from collectors/python.d.plugin/python_modules/third_party/filelock.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/third_party/lm_sensors.py (renamed from collectors/python.d.plugin/python_modules/third_party/lm_sensors.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/third_party/mcrcon.py (renamed from collectors/python.d.plugin/python_modules/third_party/mcrcon.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/third_party/monotonic.py (renamed from collectors/python.d.plugin/python_modules/third_party/monotonic.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/third_party/ordereddict.py (renamed from collectors/python.d.plugin/python_modules/third_party/ordereddict.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/__init__.py (renamed from collectors/python.d.plugin/python_modules/urllib3/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/_collections.py (renamed from collectors/python.d.plugin/python_modules/urllib3/_collections.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/connection.py (renamed from collectors/python.d.plugin/python_modules/urllib3/connection.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/connectionpool.py (renamed from collectors/python.d.plugin/python_modules/urllib3/connectionpool.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/__init__.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/__init__.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/bindings.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/bindings.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/low_level.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/low_level.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/appengine.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/appengine.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/ntlmpool.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/ntlmpool.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/pyopenssl.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/pyopenssl.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/securetransport.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/securetransport.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/contrib/socks.py (renamed from collectors/python.d.plugin/python_modules/urllib3/contrib/socks.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/exceptions.py (renamed from collectors/python.d.plugin/python_modules/urllib3/exceptions.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/fields.py (renamed from collectors/python.d.plugin/python_modules/urllib3/fields.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/filepost.py (renamed from collectors/python.d.plugin/python_modules/urllib3/filepost.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/packages/__init__.py (renamed from collectors/python.d.plugin/python_modules/urllib3/packages/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/packages/backports/__init__.py (renamed from collectors/python.d.plugin/python_modules/urllib3/packages/backports/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/packages/backports/makefile.py (renamed from collectors/python.d.plugin/python_modules/urllib3/packages/backports/makefile.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/packages/ordered_dict.py (renamed from collectors/python.d.plugin/python_modules/urllib3/packages/ordered_dict.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/packages/six.py (renamed from collectors/python.d.plugin/python_modules/urllib3/packages/six.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/__init__.py (renamed from collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/_implementation.py (renamed from collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/_implementation.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/poolmanager.py (renamed from collectors/python.d.plugin/python_modules/urllib3/poolmanager.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/request.py (renamed from collectors/python.d.plugin/python_modules/urllib3/request.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/response.py (renamed from collectors/python.d.plugin/python_modules/urllib3/response.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/__init__.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/__init__.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/connection.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/connection.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/request.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/request.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/response.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/response.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/retry.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/retry.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/selectors.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/selectors.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/ssl_.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/ssl_.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/timeout.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/timeout.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/url.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/url.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/python_modules/urllib3/util/wait.py (renamed from collectors/python.d.plugin/python_modules/urllib3/util/wait.py) | 0 | ||||
l--------- | src/collectors/python.d.plugin/rethinkdbs/README.md (renamed from collectors/python.d.plugin/rethinkdbs/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/rethinkdbs/integrations/rethinkdb.md (renamed from collectors/python.d.plugin/rethinkdbs/integrations/rethinkdb.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/rethinkdbs/metadata.yaml (renamed from collectors/python.d.plugin/rethinkdbs/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/rethinkdbs/rethinkdbs.chart.py (renamed from collectors/python.d.plugin/rethinkdbs/rethinkdbs.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/rethinkdbs/rethinkdbs.conf (renamed from collectors/python.d.plugin/rethinkdbs/rethinkdbs.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/retroshare/README.md (renamed from collectors/python.d.plugin/retroshare/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/retroshare/integrations/retroshare.md (renamed from collectors/python.d.plugin/retroshare/integrations/retroshare.md) | 16 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/retroshare/retroshare.chart.py (renamed from collectors/python.d.plugin/retroshare/retroshare.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/retroshare/retroshare.conf (renamed from collectors/python.d.plugin/retroshare/retroshare.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/riakkv/README.md (renamed from collectors/python.d.plugin/riakkv/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/riakkv/integrations/riakkv.md (renamed from collectors/python.d.plugin/riakkv/integrations/riakkv.md) | 24 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/riakkv/riakkv.chart.py (renamed from collectors/python.d.plugin/riakkv/riakkv.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/riakkv/riakkv.conf (renamed from collectors/python.d.plugin/riakkv/riakkv.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/samba/README.md (renamed from collectors/python.d.plugin/samba/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/samba/integrations/samba.md (renamed from collectors/python.d.plugin/samba/integrations/samba.md) | 16 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/samba/samba.chart.py (renamed from collectors/python.d.plugin/samba/samba.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/samba/samba.conf (renamed from collectors/python.d.plugin/samba/samba.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/spigotmc/README.md (renamed from collectors/python.d.plugin/spigotmc/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/spigotmc/integrations/spigotmc.md (renamed from collectors/python.d.plugin/spigotmc/integrations/spigotmc.md) | 14 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/spigotmc/metadata.yaml (renamed from collectors/python.d.plugin/spigotmc/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/spigotmc/spigotmc.chart.py (renamed from collectors/python.d.plugin/spigotmc/spigotmc.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/spigotmc/spigotmc.conf (renamed from collectors/python.d.plugin/spigotmc/spigotmc.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/squid/README.md (renamed from collectors/python.d.plugin/squid/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/squid/integrations/squid.md (renamed from collectors/python.d.plugin/squid/integrations/squid.md) | 12 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/squid/metadata.yaml (renamed from collectors/python.d.plugin/squid/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/squid/squid.chart.py (renamed from collectors/python.d.plugin/squid/squid.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/squid/squid.conf (renamed from collectors/python.d.plugin/squid/squid.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/tomcat/README.md (renamed from collectors/python.d.plugin/tomcat/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tomcat/integrations/tomcat.md (renamed from collectors/python.d.plugin/tomcat/integrations/tomcat.md) | 14 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tomcat/metadata.yaml (renamed from collectors/python.d.plugin/tomcat/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tomcat/tomcat.chart.py (renamed from collectors/python.d.plugin/tomcat/tomcat.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tomcat/tomcat.conf (renamed from collectors/python.d.plugin/tomcat/tomcat.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/tor/README.md (renamed from collectors/python.d.plugin/tor/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tor/integrations/tor.md (renamed from collectors/python.d.plugin/tor/integrations/tor.md) | 14 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tor/metadata.yaml (renamed from collectors/python.d.plugin/tor/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tor/tor.chart.py (renamed from collectors/python.d.plugin/tor/tor.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/tor/tor.conf (renamed from collectors/python.d.plugin/tor/tor.conf) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/traefik/traefik.chart.py (renamed from collectors/python.d.plugin/traefik/traefik.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/traefik/traefik.conf (renamed from collectors/python.d.plugin/traefik/traefik.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/uwsgi/README.md (renamed from collectors/python.d.plugin/uwsgi/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/uwsgi/integrations/uwsgi.md (renamed from collectors/python.d.plugin/uwsgi/integrations/uwsgi.md) | 14 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/uwsgi/metadata.yaml (renamed from collectors/python.d.plugin/uwsgi/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/uwsgi/uwsgi.chart.py (renamed from collectors/python.d.plugin/uwsgi/uwsgi.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/uwsgi/uwsgi.conf (renamed from collectors/python.d.plugin/uwsgi/uwsgi.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/varnish/README.md (renamed from collectors/python.d.plugin/varnish/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/varnish/integrations/varnish.md (renamed from collectors/python.d.plugin/varnish/integrations/varnish.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/varnish/metadata.yaml (renamed from collectors/python.d.plugin/varnish/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/varnish/varnish.chart.py (renamed from collectors/python.d.plugin/varnish/varnish.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/varnish/varnish.conf (renamed from collectors/python.d.plugin/varnish/varnish.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/w1sensor/README.md (renamed from collectors/python.d.plugin/w1sensor/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/w1sensor/integrations/1-wire_sensors.md (renamed from collectors/python.d.plugin/w1sensor/integrations/1-wire_sensors.md) | 10 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/w1sensor/metadata.yaml (renamed from collectors/python.d.plugin/w1sensor/metadata.yaml) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/w1sensor/w1sensor.chart.py (renamed from collectors/python.d.plugin/w1sensor/w1sensor.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/w1sensor/w1sensor.conf (renamed from collectors/python.d.plugin/w1sensor/w1sensor.conf) | 0 | ||||
l--------- | src/collectors/python.d.plugin/zscores/README.md (renamed from collectors/python.d.plugin/zscores/README.md) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/zscores/integrations/python.d_zscores.md (renamed from collectors/python.d.plugin/zscores/integrations/python.d_zscores.md) | 12 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/zscores/zscores.chart.py (renamed from collectors/python.d.plugin/zscores/zscores.chart.py) | 0 | ||||
-rw-r--r-- | src/collectors/python.d.plugin/zscores/zscores.conf (renamed from collectors/python.d.plugin/zscores/zscores.conf) | 0 | ||||
l--------- | src/go/collectors/go.d.plugin/modules/fail2ban/README.md (renamed from collectors/python.d.plugin/fail2ban/README.md) | 0 | ||||
l--------- | src/go/collectors/go.d.plugin/modules/hddtemp/README.md (renamed from collectors/python.d.plugin/hddtemp/README.md) | 0 | ||||
l--------- | src/go/collectors/go.d.plugin/modules/litespeed/README.md (renamed from collectors/python.d.plugin/litespeed/README.md) | 0 | ||||
l--------- | src/go/collectors/go.d.plugin/modules/sensors/README.md (renamed from collectors/python.d.plugin/sensors/README.md) | 0 | ||||
l--------- | src/go/collectors/go.d.plugin/modules/smartctl/README.md (renamed from collectors/python.d.plugin/smartd_log/README.md) | 0 |
366 files changed, 234 insertions, 12837 deletions
diff --git a/collectors/python.d.plugin/Makefile.am b/collectors/python.d.plugin/Makefile.am deleted file mode 100644 index ca49c1c02..000000000 --- a/collectors/python.d.plugin/Makefile.am +++ /dev/null @@ -1,229 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -MAINTAINERCLEANFILES = $(srcdir)/Makefile.in -CLEANFILES = \ - python.d.plugin \ - $(NULL) - -include $(top_srcdir)/build/subst.inc -SUFFIXES = .in - -dist_libconfig_DATA = \ - python.d.conf \ - $(NULL) - -dist_plugins_SCRIPTS = \ - python.d.plugin \ - $(NULL) - -dist_noinst_DATA = \ - python.d.plugin.in \ - README.md \ - $(NULL) - -dist_python_SCRIPTS = \ - $(NULL) - -dist_python_DATA = \ - $(NULL) - -userpythonconfigdir=$(configdir)/python.d -dist_userpythonconfig_DATA = \ - $(NULL) - -# Explicitly install directories to avoid permission issues due to umask -install-exec-local: - $(INSTALL) -d $(DESTDIR)$(userpythonconfigdir) - -pythonconfigdir=$(libconfigdir)/python.d -dist_pythonconfig_DATA = \ - $(NULL) - -include adaptec_raid/Makefile.inc -include alarms/Makefile.inc -include am2320/Makefile.inc -include anomalies/Makefile.inc -include beanstalk/Makefile.inc -include bind_rndc/Makefile.inc -include boinc/Makefile.inc -include ceph/Makefile.inc -include changefinder/Makefile.inc -include dovecot/Makefile.inc -include example/Makefile.inc -include exim/Makefile.inc -include fail2ban/Makefile.inc -include gearman/Makefile.inc -include go_expvar/Makefile.inc -include haproxy/Makefile.inc -include hddtemp/Makefile.inc -include hpssa/Makefile.inc -include icecast/Makefile.inc -include ipfs/Makefile.inc -include litespeed/Makefile.inc -include megacli/Makefile.inc -include memcached/Makefile.inc -include monit/Makefile.inc -include nvidia_smi/Makefile.inc -include nsd/Makefile.inc -include openldap/Makefile.inc -include oracledb/Makefile.inc -include pandas/Makefile.inc -include postfix/Makefile.inc -include puppet/Makefile.inc -include rethinkdbs/Makefile.inc -include retroshare/Makefile.inc -include riakkv/Makefile.inc -include samba/Makefile.inc -include sensors/Makefile.inc -include smartd_log/Makefile.inc -include spigotmc/Makefile.inc -include squid/Makefile.inc -include tomcat/Makefile.inc -include tor/Makefile.inc -include traefik/Makefile.inc -include uwsgi/Makefile.inc -include varnish/Makefile.inc -include w1sensor/Makefile.inc -include zscores/Makefile.inc - -pythonmodulesdir=$(pythondir)/python_modules -dist_pythonmodules_DATA = \ - python_modules/__init__.py \ - $(NULL) - -basesdir=$(pythonmodulesdir)/bases -dist_bases_DATA = \ - python_modules/bases/__init__.py \ - python_modules/bases/charts.py \ - python_modules/bases/collection.py \ - python_modules/bases/loaders.py \ - python_modules/bases/loggers.py \ - $(NULL) - -bases_framework_servicesdir=$(basesdir)/FrameworkServices -dist_bases_framework_services_DATA = \ - python_modules/bases/FrameworkServices/__init__.py \ - python_modules/bases/FrameworkServices/ExecutableService.py \ - python_modules/bases/FrameworkServices/LogService.py \ - python_modules/bases/FrameworkServices/MySQLService.py \ - python_modules/bases/FrameworkServices/SimpleService.py \ - python_modules/bases/FrameworkServices/SocketService.py \ - python_modules/bases/FrameworkServices/UrlService.py \ - $(NULL) - -third_partydir=$(pythonmodulesdir)/third_party -dist_third_party_DATA = \ - python_modules/third_party/__init__.py \ - python_modules/third_party/ordereddict.py \ - python_modules/third_party/lm_sensors.py \ - python_modules/third_party/mcrcon.py \ - python_modules/third_party/boinc_client.py \ - python_modules/third_party/monotonic.py \ - python_modules/third_party/filelock.py \ - $(NULL) - -pythonyaml2dir=$(pythonmodulesdir)/pyyaml2 -dist_pythonyaml2_DATA = \ - python_modules/pyyaml2/__init__.py \ - python_modules/pyyaml2/composer.py \ - python_modules/pyyaml2/constructor.py \ - python_modules/pyyaml2/cyaml.py \ - python_modules/pyyaml2/dumper.py \ - python_modules/pyyaml2/emitter.py \ - python_modules/pyyaml2/error.py \ - python_modules/pyyaml2/events.py \ - python_modules/pyyaml2/loader.py \ - python_modules/pyyaml2/nodes.py \ - python_modules/pyyaml2/parser.py \ - python_modules/pyyaml2/reader.py \ - python_modules/pyyaml2/representer.py \ - python_modules/pyyaml2/resolver.py \ - python_modules/pyyaml2/scanner.py \ - python_modules/pyyaml2/serializer.py \ - python_modules/pyyaml2/tokens.py \ - $(NULL) - -pythonyaml3dir=$(pythonmodulesdir)/pyyaml3 -dist_pythonyaml3_DATA = \ - python_modules/pyyaml3/__init__.py \ - python_modules/pyyaml3/composer.py \ - python_modules/pyyaml3/constructor.py \ - python_modules/pyyaml3/cyaml.py \ - python_modules/pyyaml3/dumper.py \ - python_modules/pyyaml3/emitter.py \ - python_modules/pyyaml3/error.py \ - python_modules/pyyaml3/events.py \ - python_modules/pyyaml3/loader.py \ - python_modules/pyyaml3/nodes.py \ - python_modules/pyyaml3/parser.py \ - python_modules/pyyaml3/reader.py \ - python_modules/pyyaml3/representer.py \ - python_modules/pyyaml3/resolver.py \ - python_modules/pyyaml3/scanner.py \ - python_modules/pyyaml3/serializer.py \ - python_modules/pyyaml3/tokens.py \ - $(NULL) - -python_urllib3dir=$(pythonmodulesdir)/urllib3 -dist_python_urllib3_DATA = \ - python_modules/urllib3/__init__.py \ - python_modules/urllib3/_collections.py \ - python_modules/urllib3/connection.py \ - python_modules/urllib3/connectionpool.py \ - python_modules/urllib3/exceptions.py \ - python_modules/urllib3/fields.py \ - python_modules/urllib3/filepost.py \ - python_modules/urllib3/response.py \ - python_modules/urllib3/poolmanager.py \ - python_modules/urllib3/request.py \ - $(NULL) - -python_urllib3_utildir=$(python_urllib3dir)/util -dist_python_urllib3_util_DATA = \ - python_modules/urllib3/util/__init__.py \ - python_modules/urllib3/util/connection.py \ - python_modules/urllib3/util/request.py \ - python_modules/urllib3/util/response.py \ - python_modules/urllib3/util/retry.py \ - python_modules/urllib3/util/selectors.py \ - python_modules/urllib3/util/ssl_.py \ - python_modules/urllib3/util/timeout.py \ - python_modules/urllib3/util/url.py \ - python_modules/urllib3/util/wait.py \ - $(NULL) - -python_urllib3_packagesdir=$(python_urllib3dir)/packages -dist_python_urllib3_packages_DATA = \ - python_modules/urllib3/packages/__init__.py \ - python_modules/urllib3/packages/ordered_dict.py \ - python_modules/urllib3/packages/six.py \ - $(NULL) - -python_urllib3_backportsdir=$(python_urllib3_packagesdir)/backports -dist_python_urllib3_backports_DATA = \ - python_modules/urllib3/packages/backports/__init__.py \ - python_modules/urllib3/packages/backports/makefile.py \ - $(NULL) - -python_urllib3_ssl_match_hostnamedir=$(python_urllib3_packagesdir)/ssl_match_hostname -dist_python_urllib3_ssl_match_hostname_DATA = \ - python_modules/urllib3/packages/ssl_match_hostname/__init__.py \ - python_modules/urllib3/packages/ssl_match_hostname/_implementation.py \ - $(NULL) - -python_urllib3_contribdir=$(python_urllib3dir)/contrib -dist_python_urllib3_contrib_DATA = \ - python_modules/urllib3/contrib/__init__.py \ - python_modules/urllib3/contrib/appengine.py \ - python_modules/urllib3/contrib/ntlmpool.py \ - python_modules/urllib3/contrib/pyopenssl.py \ - python_modules/urllib3/contrib/securetransport.py \ - python_modules/urllib3/contrib/socks.py \ - $(NULL) - -python_urllib3_securetransportdir=$(python_urllib3_contribdir)/_securetransport -dist_python_urllib3_securetransport_DATA = \ - python_modules/urllib3/contrib/_securetransport/__init__.py \ - python_modules/urllib3/contrib/_securetransport/bindings.py \ - python_modules/urllib3/contrib/_securetransport/low_level.py \ - $(NULL) diff --git a/collectors/python.d.plugin/README.md b/collectors/python.d.plugin/README.md deleted file mode 100644 index 569543d16..000000000 --- a/collectors/python.d.plugin/README.md +++ /dev/null @@ -1,77 +0,0 @@ -<!-- -title: "python.d.plugin" -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/README.md" -sidebar_label: "python.d.plugin" -learn_status: "Published" -learn_topic_type: "Tasks" -learn_rel_path: "Developers/External plugins/python.d.plugin" ---> - -# python.d.plugin - -`python.d.plugin` is a Netdata external plugin. It is an **orchestrator** for data collection modules written in `python`. - -1. It runs as an independent process `ps fax` shows it -2. It is started and stopped automatically by Netdata -3. It communicates with Netdata via a unidirectional pipe (sending data to the `netdata` daemon) -4. Supports any number of data collection **modules** -5. Allows each **module** to have one or more data collection **jobs** -6. Each **job** is collecting one or more metrics from a single data source - -## Disclaimer - -All third party libraries should be installed system-wide or in `python_modules` directory. -Module configurations are written in YAML and **pyYAML is required**. - -Every configuration file must have one of two formats: - -- Configuration for only one job: - -```yaml -update_every : 2 # update frequency -priority : 20000 # where it is shown on dashboard - -other_var1 : bla # variables passed to module -other_var2 : alb -``` - -- Configuration for many jobs (ex. mysql): - -```yaml -# module defaults: -update_every : 2 -priority : 20000 - -local: # job name - update_every : 5 # job update frequency - other_var1 : some_val # module specific variable - -other_job: - priority : 5 # job position on dashboard - other_var2 : val # module specific variable -``` - -`update_every` and `priority` are always optional. - -## How to debug a python module - -``` -# become user netdata -sudo su -s /bin/bash netdata -``` - -Depending on where Netdata was installed, execute one of the following commands to trace the execution of a python module: - -``` -# execute the plugin in debug mode, for a specific module -/opt/netdata/usr/libexec/netdata/plugins.d/python.d.plugin <module> debug trace -/usr/libexec/netdata/plugins.d/python.d.plugin <module> debug trace -``` - -Where `[module]` is the directory name under <https://github.com/netdata/netdata/tree/master/collectors/python.d.plugin> - -**Note**: If you would like execute a collector in debug mode while it is still running by Netdata, you can pass the `nolock` CLI option to the above commands. - -## How to write a new module - -See [develop a custom collector in Python](https://github.com/netdata/netdata/edit/master/docs/guides/python-collector.md). diff --git a/collectors/python.d.plugin/adaptec_raid/Makefile.inc b/collectors/python.d.plugin/adaptec_raid/Makefile.inc deleted file mode 100644 index 716cdb235..000000000 --- a/collectors/python.d.plugin/adaptec_raid/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += adaptec_raid/adaptec_raid.chart.py -dist_pythonconfig_DATA += adaptec_raid/adaptec_raid.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += adaptec_raid/README.md adaptec_raid/Makefile.inc - diff --git a/collectors/python.d.plugin/adaptec_raid/README.md b/collectors/python.d.plugin/adaptec_raid/README.md deleted file mode 120000 index 97a103eb9..000000000 --- a/collectors/python.d.plugin/adaptec_raid/README.md +++ /dev/null @@ -1 +0,0 @@ -integrations/adaptecraid.md
\ No newline at end of file diff --git a/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py b/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py deleted file mode 100644 index 1995ad681..000000000 --- a/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py +++ /dev/null @@ -1,247 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: adaptec_raid netdata python.d module -# Author: Ilya Mashchenko (ilyam8) -# SPDX-License-Identifier: GPL-3.0-or-later - - -import re -from copy import deepcopy - -from bases.FrameworkServices.ExecutableService import ExecutableService -from bases.collection import find_binary - -disabled_by_default = True - -update_every = 5 - -ORDER = [ - 'ld_status', - 'pd_state', - 'pd_smart_warnings', - 'pd_temperature', -] - -CHARTS = { - 'ld_status': { - 'options': [None, 'Status of logical devices (1: Failed or Degraded)', 'bool', 'logical devices', - 'adaptec_raid.ld_status', 'line'], - 'lines': [] - }, - 'pd_state': { - 'options': [None, 'State of physical devices (1: not Online)', 'bool', 'physical devices', - 'adaptec_raid.pd_state', 'line'], - 'lines': [] - }, - 'pd_smart_warnings': { - 'options': [None, 'S.M.A.R.T warnings', 'count', 'physical devices', - 'adaptec_raid.smart_warnings', 'line'], - 'lines': [] - }, - 'pd_temperature': { - 'options': [None, 'Temperature', 'celsius', 'physical devices', 'adaptec_raid.temperature', 'line'], - 'lines': [] - }, -} - -SUDO = 'sudo' -ARCCONF = 'arcconf' - -BAD_LD_STATUS = ( - 'Degraded', - 'Failed', -) - -GOOD_PD_STATUS = ( - 'Online', -) - -RE_LD = re.compile( - r'Logical [dD]evice number\s+([0-9]+).*?' - r'Status of [lL]ogical [dD]evice\s+: ([a-zA-Z]+)' -) - - -def find_lds(d): - d = ' '.join(v.strip() for v in d) - return [LD(*v) for v in RE_LD.findall(d)] - - -def find_pds(d): - pds = list() - pd = PD() - - for row in d: - row = row.strip() - if row.startswith('Device #'): - pd = PD() - pd.id = row.split('#')[-1] - elif not pd.id: - continue - - if row.startswith('State'): - v = row.split()[-1] - pd.state = v - elif row.startswith('S.M.A.R.T. warnings'): - v = row.split()[-1] - pd.smart_warnings = v - elif row.startswith('Temperature'): - v = row.split(':')[-1].split()[0] - pd.temperature = v - elif row.startswith(('NCQ status', 'Device Phy')) or not row: - if pd.id and pd.state and pd.smart_warnings: - pds.append(pd) - pd = PD() - - return pds - - -class LD: - def __init__(self, ld_id, status): - self.id = ld_id - self.status = status - - def data(self): - return { - 'ld_{0}_status'.format(self.id): int(self.status in BAD_LD_STATUS) - } - - -class PD: - def __init__(self): - self.id = None - self.state = None - self.smart_warnings = None - self.temperature = None - - def data(self): - data = { - 'pd_{0}_state'.format(self.id): int(self.state not in GOOD_PD_STATUS), - 'pd_{0}_smart_warnings'.format(self.id): self.smart_warnings, - } - if self.temperature and self.temperature.isdigit(): - data['pd_{0}_temperature'.format(self.id)] = self.temperature - - return data - - -class Arcconf: - def __init__(self, arcconf): - self.arcconf = arcconf - - def ld_info(self): - return [self.arcconf, 'GETCONFIG', '1', 'LD'] - - def pd_info(self): - return [self.arcconf, 'GETCONFIG', '1', 'PD'] - - -# TODO: hardcoded sudo... -class SudoArcconf: - def __init__(self, arcconf, sudo): - self.arcconf = Arcconf(arcconf) - self.sudo = sudo - - def ld_info(self): - return [self.sudo, '-n'] + self.arcconf.ld_info() - - def pd_info(self): - return [self.sudo, '-n'] + self.arcconf.pd_info() - - -class Service(ExecutableService): - def __init__(self, configuration=None, name=None): - ExecutableService.__init__(self, configuration=configuration, name=name) - self.order = ORDER - self.definitions = deepcopy(CHARTS) - self.use_sudo = self.configuration.get('use_sudo', True) - self.arcconf = None - - def execute(self, command, stderr=False): - return self._get_raw_data(command=command, stderr=stderr) - - def check(self): - arcconf = find_binary(ARCCONF) - if not arcconf: - self.error('can\'t locate "{0}" binary'.format(ARCCONF)) - return False - - sudo = find_binary(SUDO) - if self.use_sudo: - if not sudo: - self.error('can\'t locate "{0}" binary'.format(SUDO)) - return False - err = self.execute([sudo, '-n', '-v'], True) - if err: - self.error(' '.join(err)) - return False - - if self.use_sudo: - self.arcconf = SudoArcconf(arcconf, sudo) - else: - self.arcconf = Arcconf(arcconf) - - lds = self.get_lds() - if not lds: - return False - - self.debug('discovered logical devices ids: {0}'.format([ld.id for ld in lds])) - - pds = self.get_pds() - if not pds: - return False - - self.debug('discovered physical devices ids: {0}'.format([pd.id for pd in pds])) - - self.update_charts(lds, pds) - return True - - def get_data(self): - data = dict() - - for ld in self.get_lds(): - data.update(ld.data()) - - for pd in self.get_pds(): - data.update(pd.data()) - - return data - - def get_lds(self): - raw_lds = self.execute(self.arcconf.ld_info()) - if not raw_lds: - return None - - lds = find_lds(raw_lds) - if not lds: - self.error('failed to parse "{0}" output'.format(' '.join(self.arcconf.ld_info()))) - self.debug('output: {0}'.format(raw_lds)) - return None - return lds - - def get_pds(self): - raw_pds = self.execute(self.arcconf.pd_info()) - if not raw_pds: - return None - - pds = find_pds(raw_pds) - if not pds: - self.error('failed to parse "{0}" output'.format(' '.join(self.arcconf.pd_info()))) - self.debug('output: {0}'.format(raw_pds)) - return None - return pds - - def update_charts(self, lds, pds): - charts = self.definitions - for ld in lds: - dim = ['ld_{0}_status'.format(ld.id), 'ld {0}'.format(ld.id)] - charts['ld_status']['lines'].append(dim) - - for pd in pds: - dim = ['pd_{0}_state'.format(pd.id), 'pd {0}'.format(pd.id)] - charts['pd_state']['lines'].append(dim) - - dim = ['pd_{0}_smart_warnings'.format(pd.id), 'pd {0}'.format(pd.id)] - charts['pd_smart_warnings']['lines'].append(dim) - - dim = ['pd_{0}_temperature'.format(pd.id), 'pd {0}'.format(pd.id)] - charts['pd_temperature']['lines'].append(dim) diff --git a/collectors/python.d.plugin/adaptec_raid/adaptec_raid.conf b/collectors/python.d.plugin/adaptec_raid/adaptec_raid.conf deleted file mode 100644 index fa462ec83..000000000 --- a/collectors/python.d.plugin/adaptec_raid/adaptec_raid.conf +++ /dev/null @@ -1,53 +0,0 @@ -# netdata python.d.plugin configuration for adaptec raid -# -# This file is in YaML format. Generally the format is: -# -# name: value -# - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 1 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# ---------------------------------------------------------------------- diff --git a/collectors/python.d.plugin/adaptec_raid/integrations/adaptecraid.md b/collectors/python.d.plugin/adaptec_raid/integrations/adaptecraid.md deleted file mode 100644 index 13d22ba54..000000000 --- a/collectors/python.d.plugin/adaptec_raid/integrations/adaptecraid.md +++ /dev/null @@ -1,204 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/adaptec_raid/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/adaptec_raid/metadata.yaml" -sidebar_label: "AdaptecRAID" -learn_status: "Published" -learn_rel_path: "Data Collection/Storage, Mount Points and Filesystems" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# AdaptecRAID - - -<img src="https://netdata.cloud/img/adaptec.svg" width="150"/> - - -Plugin: python.d.plugin -Module: adaptec_raid - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -This collector monitors Adaptec RAID hardware storage controller metrics about both physical and logical drives. - - -It uses the arcconf command line utility (from adaptec) to monitor your raid controller. - -Executed commands: - - `sudo -n arcconf GETCONFIG 1 LD` - - `sudo -n arcconf GETCONFIG 1 PD` - - -This collector is supported on all platforms. - -This collector only supports collecting metrics from a single instance of this integration. - -The module uses arcconf, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute arcconf as root without a password. - -### Default Behavior - -#### Auto-Detection - -After all the permissions are satisfied, netdata should be to execute commands via the arcconf command line utility - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per AdaptecRAID instance - -These metrics refer to the entire monitored application. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| adaptec_raid.ld_status | a dimension per logical device | bool | -| adaptec_raid.pd_state | a dimension per physical device | bool | -| adaptec_raid.smart_warnings | a dimension per physical device | count | -| adaptec_raid.temperature | a dimension per physical device | celsius | - - - -## Alerts - - -The following alerts are available: - -| Alert name | On metric | Description | -|:------------|:----------|:------------| -| [ adaptec_raid_ld_status ](https://github.com/netdata/netdata/blob/master/health/health.d/adaptec_raid.conf) | adaptec_raid.ld_status | logical device status is failed or degraded | -| [ adaptec_raid_pd_state ](https://github.com/netdata/netdata/blob/master/health/health.d/adaptec_raid.conf) | adaptec_raid.pd_state | physical device state is not online | - - -## Setup - -### Prerequisites - -#### Grant permissions for netdata, to run arcconf as sudoer - -The module uses arcconf, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute arcconf as root without a password. - -Add to your /etc/sudoers file: -which arcconf shows the full path to the binary. - -```bash -netdata ALL=(root) NOPASSWD: /path/to/arcconf -``` - - -#### Reset Netdata's systemd unit CapabilityBoundingSet (Linux distributions with systemd) - -The default CapabilityBoundingSet doesn't allow using sudo, and is quite strict in general. Resetting is not optimal, but a next-best solution given the inability to execute arcconf using sudo. - -As root user, do the following: - -```bash -mkdir /etc/systemd/system/netdata.service.d -echo -e '[Service]\nCapabilityBoundingSet=~' | tee /etc/systemd/system/netdata.service.d/unset-capability-bounding-set.conf -systemctl daemon-reload -systemctl restart netdata.service -``` - - - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/adaptec_raid.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/adaptec_raid.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| update_every | Sets the default data collection frequency. | 5 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | - -</details> - -#### Examples - -##### Basic - -A basic example configuration per job - -```yaml -job_name: - name: my_job_name - update_every: 1 # the JOB's data collection frequency - priority: 60000 # the JOB's order on the dashboard - penalty: yes # the JOB's penalty - autodetection_retry: 0 # the JOB's re-check interval in seconds - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `adaptec_raid` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin adaptec_raid debug trace - ``` - - diff --git a/collectors/python.d.plugin/adaptec_raid/metadata.yaml b/collectors/python.d.plugin/adaptec_raid/metadata.yaml deleted file mode 100644 index c69baff4a..000000000 --- a/collectors/python.d.plugin/adaptec_raid/metadata.yaml +++ /dev/null @@ -1,167 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: adaptec_raid - monitored_instance: - name: AdaptecRAID - link: "https://www.microchip.com/en-us/products/storage" - categories: - - data-collection.storage-mount-points-and-filesystems - icon_filename: "adaptec.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - storage - - raid-controller - - manage-disks - most_popular: false - overview: - data_collection: - metrics_description: | - This collector monitors Adaptec RAID hardware storage controller metrics about both physical and logical drives. - method_description: | - It uses the arcconf command line utility (from adaptec) to monitor your raid controller. - - Executed commands: - - `sudo -n arcconf GETCONFIG 1 LD` - - `sudo -n arcconf GETCONFIG 1 PD` - supported_platforms: - include: [] - exclude: [] - multi_instance: false - additional_permissions: - description: "The module uses arcconf, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute arcconf as root without a password." - default_behavior: - auto_detection: - description: "After all the permissions are satisfied, netdata should be to execute commands via the arcconf command line utility" - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Grant permissions for netdata, to run arcconf as sudoer - description: | - The module uses arcconf, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute arcconf as root without a password. - - Add to your /etc/sudoers file: - which arcconf shows the full path to the binary. - - ```bash - netdata ALL=(root) NOPASSWD: /path/to/arcconf - ``` - - title: Reset Netdata's systemd unit CapabilityBoundingSet (Linux distributions with systemd) - description: | - The default CapabilityBoundingSet doesn't allow using sudo, and is quite strict in general. Resetting is not optimal, but a next-best solution given the inability to execute arcconf using sudo. - - As root user, do the following: - - ```bash - mkdir /etc/systemd/system/netdata.service.d - echo -e '[Service]\nCapabilityBoundingSet=~' | tee /etc/systemd/system/netdata.service.d/unset-capability-bounding-set.conf - systemctl daemon-reload - systemctl restart netdata.service - ``` - configuration: - file: - name: "python.d/adaptec_raid.conf" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic - folding: - enabled: false - description: A basic example configuration per job - config: | - job_name: - name: my_job_name - update_every: 1 # the JOB's data collection frequency - priority: 60000 # the JOB's order on the dashboard - penalty: yes # the JOB's penalty - autodetection_retry: 0 # the JOB's re-check interval in seconds - troubleshooting: - problems: - list: [] - alerts: - - name: adaptec_raid_ld_status - link: https://github.com/netdata/netdata/blob/master/health/health.d/adaptec_raid.conf - metric: adaptec_raid.ld_status - info: logical device status is failed or degraded - - name: adaptec_raid_pd_state - link: https://github.com/netdata/netdata/blob/master/health/health.d/adaptec_raid.conf - metric: adaptec_raid.pd_state - info: physical device state is not online - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: adaptec_raid.ld_status - description: "Status of logical devices (1: Failed or Degraded)" - unit: "bool" - chart_type: line - dimensions: - - name: a dimension per logical device - - name: adaptec_raid.pd_state - description: "State of physical devices (1: not Online)" - unit: "bool" - chart_type: line - dimensions: - - name: a dimension per physical device - - name: adaptec_raid.smart_warnings - description: S.M.A.R.T warnings - unit: "count" - chart_type: line - dimensions: - - name: a dimension per physical device - - name: adaptec_raid.temperature - description: Temperature - unit: "celsius" - chart_type: line - dimensions: - - name: a dimension per physical device diff --git a/collectors/python.d.plugin/alarms/Makefile.inc b/collectors/python.d.plugin/alarms/Makefile.inc deleted file mode 100644 index c2de11724..000000000 --- a/collectors/python.d.plugin/alarms/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += alarms/alarms.chart.py -dist_pythonconfig_DATA += alarms/alarms.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += alarms/README.md alarms/Makefile.inc - diff --git a/collectors/python.d.plugin/alarms/metadata.yaml b/collectors/python.d.plugin/alarms/metadata.yaml deleted file mode 100644 index 30a897787..000000000 --- a/collectors/python.d.plugin/alarms/metadata.yaml +++ /dev/null @@ -1,177 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: alarms - monitored_instance: - name: Netdata Agent alarms - link: https://github.com/netdata/netdata/blob/master/collectors/python.d.plugin/alarms/README.md - categories: - - data-collection.other - icon_filename: "" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - alarms - - netdata - most_popular: false - overview: - data_collection: - metrics_description: | - This collector creates an 'Alarms' menu with one line plot of `alarms.status`. - method_description: | - Alarm status is read from the Netdata agent rest api [`/api/v1/alarms?all`](https://learn.netdata.cloud/api#/alerts/alerts1). - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: | - It discovers instances of Netdata running on localhost, and gathers metrics from `http://127.0.0.1:19999/api/v1/alarms?all`. `CLEAR` status is mapped to `0`, `WARNING` to `1` and `CRITICAL` to `2`. Also, by default all alarms produced will be monitored. - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: python.d/alarms.conf - description: "" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: Config options - enabled: true - list: - - name: url - description: Netdata agent alarms endpoint to collect from. Can be local or remote so long as reachable by agent. - default_value: http://127.0.0.1:19999/api/v1/alarms?all - required: true - - name: status_map - description: Mapping of alarm status to integer number that will be the metric value collected. - default_value: '{"CLEAR": 0, "WARNING": 1, "CRITICAL": 2}' - required: true - - name: collect_alarm_values - description: set to true to include a chart with calculated alarm values over time. - default_value: false - required: true - - name: alarm_status_chart_type - description: define the type of chart for plotting status over time e.g. 'line' or 'stacked'. - default_value: "line" - required: true - - name: alarm_contains_words - description: > - A "," separated list of words you want to filter alarm names for. For example 'cpu,load' would filter for only alarms with "cpu" or "load" in alarm name. Default includes all. - default_value: "" - required: true - - name: alarm_excludes_words - description: > - A "," separated list of words you want to exclude based on alarm name. For example 'cpu,load' would exclude all alarms with "cpu" or "load" in alarm name. Default excludes None. - default_value: "" - required: true - - name: update_every - description: Sets the default data collection frequency. - default_value: 10 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - examples: - folding: - enabled: true - title: Config - list: - - name: Basic - folding: - enabled: false - description: A basic example configuration. - config: | - jobs: - url: 'http://127.0.0.1:19999/api/v1/alarms?all' - - name: Advanced - folding: - enabled: true - description: | - An advanced example configuration with multiple jobs collecting different subsets of alarms for plotting on different charts. - "ML" job will collect status and values for all alarms with "ml_" in the name. Default job will collect status for all other alarms. - config: | - ML: - update_every: 5 - url: 'http://127.0.0.1:19999/api/v1/alarms?all' - status_map: - CLEAR: 0 - WARNING: 1 - CRITICAL: 2 - collect_alarm_values: true - alarm_status_chart_type: 'stacked' - alarm_contains_words: 'ml_' - - Default: - update_every: 5 - url: 'http://127.0.0.1:19999/api/v1/alarms?all' - status_map: - CLEAR: 0 - WARNING: 1 - CRITICAL: 2 - collect_alarm_values: false - alarm_status_chart_type: 'stacked' - alarm_excludes_words: 'ml_' - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: | - These metrics refer to the entire monitored application. - labels: [] - metrics: - - name: alarms.status - description: Alarms ({status mapping}) - unit: "status" - chart_type: line - dimensions: - - name: a dimension per alarm representing the latest status of the alarm. - - name: alarms.values - description: Alarm Values - unit: "value" - chart_type: line - dimensions: - - name: a dimension per alarm representing the latest collected value of the alarm. diff --git a/collectors/python.d.plugin/am2320/Makefile.inc b/collectors/python.d.plugin/am2320/Makefile.inc deleted file mode 100644 index 48e5a8892..000000000 --- a/collectors/python.d.plugin/am2320/Makefile.inc +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# install these files -dist_python_DATA += am2320/am2320.chart.py -dist_pythonconfig_DATA += am2320/am2320.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += am2320/README.md am2320/Makefile.inc diff --git a/collectors/python.d.plugin/anomalies/Makefile.inc b/collectors/python.d.plugin/anomalies/Makefile.inc deleted file mode 100644 index 94937b36a..000000000 --- a/collectors/python.d.plugin/anomalies/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += anomalies/anomalies.chart.py -dist_pythonconfig_DATA += anomalies/anomalies.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += anomalies/README.md anomalies/Makefile.inc - diff --git a/collectors/python.d.plugin/anomalies/README.md b/collectors/python.d.plugin/anomalies/README.md deleted file mode 100644 index 80f505375..000000000 --- a/collectors/python.d.plugin/anomalies/README.md +++ /dev/null @@ -1,248 +0,0 @@ -<!-- -title: "Anomaly detection with Netdata" -description: "Use ML-driven anomaly detection to narrow your focus to only affected metrics and services/processes on your node to shorten root cause analysis." -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/anomalies/README.md" -sidebar_url: "Anomalies" -sidebar_label: "anomalies" -learn_status: "Published" -learn_rel_path: "Integrations/Monitor/Anything" ---> - -# Anomaly detection with Netdata - -**Note**: Check out the [Netdata Anomaly Advisor](https://github.com/netdata/netdata/blob/master/docs/cloud/insights/anomaly-advisor.md) for a more native anomaly detection experience within Netdata. - -This collector uses the Python [PyOD](https://pyod.readthedocs.io/en/latest/index.html) library to perform unsupervised [anomaly detection](https://en.wikipedia.org/wiki/Anomaly_detection) on your Netdata charts and/or dimensions. - -Instead of this collector just _collecting_ data, it also does some computation on the data it collects to return an anomaly probability and anomaly flag for each chart or custom model you define. This computation consists of a **train** function that runs every `train_n_secs` to train the ML models to learn what 'normal' typically looks like on your node. At each iteration there is also a **predict** function that uses the latest trained models and most recent metrics to produce an anomaly probability and anomaly flag for each chart or custom model you define. - -> As this is a somewhat unique collector and involves often subjective concepts like anomalies and anomaly probabilities, we would love to hear any feedback on it from the community. Please let us know on the [community forum](https://community.netdata.cloud/t/anomalies-collector-feedback-megathread/767) or drop us a note at [analytics-ml-team@netdata.cloud](mailto:analytics-ml-team@netdata.cloud) for any and all feedback, both positive and negative. This sort of feedback is priceless to help us make complex features more useful. - -## Charts - -Two charts are produced: - -- **Anomaly Probability** (`anomalies.probability`): This chart shows the probability that the latest observed data is anomalous based on the trained model for that chart (using the [`predict_proba()`](https://pyod.readthedocs.io/en/latest/api_cc.html#pyod.models.base.BaseDetector.predict_proba) method of the trained PyOD model). -- **Anomaly** (`anomalies.anomaly`): This chart shows `1` or `0` predictions of if the latest observed data is considered anomalous or not based on the trained model (using the [`predict()`](https://pyod.readthedocs.io/en/latest/api_cc.html#pyod.models.base.BaseDetector.predict) method of the trained PyOD model). - -Below is an example of the charts produced by this collector and how they might look when things are 'normal' on the node. The anomaly probabilities tend to bounce randomly around a typically low probability range, one or two might randomly jump or drift outside of this range every now and then and show up as anomalies on the anomaly chart. - -![netdata-anomalies-collector-normal](https://user-images.githubusercontent.com/2178292/100663699-99755000-334e-11eb-922f-0c41a0176484.jpg) - -If we then go onto the system and run a command like `stress-ng --all 2` to create some [stress](https://wiki.ubuntu.com/Kernel/Reference/stress-ng), we see some charts begin to have anomaly probabilities that jump outside the typical range. When the anomaly probabilities change enough, we will start seeing anomalies being flagged on the `anomalies.anomaly` chart. The idea is that these charts are the most anomalous right now so could be a good place to start your troubleshooting. - -![netdata-anomalies-collector-abnormal](https://user-images.githubusercontent.com/2178292/100663710-9bd7aa00-334e-11eb-9d14-76fda73bc309.jpg) - -Then, as the issue passes, the anomaly probabilities should settle back down into their 'normal' range again. - -![netdata-anomalies-collector-normal-again](https://user-images.githubusercontent.com/2178292/100666681-481a9000-3351-11eb-9979-64728ee2dfb6.jpg) - -## Requirements - -- This collector will only work with Python 3 and requires the packages below be installed. -- Typically you will not need to do this, but, if needed, to ensure Python 3 is used you can add the below line to the `[plugin:python.d]` section of `netdata.conf` - -```conf -[plugin:python.d] - # update every = 1 - command options = -ppython3 -``` - -Install the required python libraries. - -```bash -# become netdata user -sudo su -s /bin/bash netdata -# install required packages for the netdata user -pip3 install --user netdata-pandas==0.0.38 numba==0.50.1 scikit-learn==0.23.2 pyod==0.8.3 -``` - -## Configuration - -Install the Python requirements above, enable the collector and restart Netdata. - -```bash -cd /etc/netdata/ -sudo ./edit-config python.d.conf -# Set `anomalies: no` to `anomalies: yes` -sudo systemctl restart netdata -``` - -The configuration for the anomalies collector defines how it will behave on your system and might take some experimentation with over time to set it optimally for your node. Out of the box, the config comes with some [sane defaults](https://www.netdata.cloud/blog/redefining-monitoring-netdata/) to get you started that try to balance the flexibility and power of the ML models with the goal of being as cheap as possible in term of cost on the node resources. - -_**Note**: If you are unsure about any of the below configuration options then it's best to just ignore all this and leave the `anomalies.conf` file alone to begin with. Then you can return to it later if you would like to tune things a bit more once the collector is running for a while and you have a feeling for its performance on your node._ - -Edit the `python.d/anomalies.conf` configuration file using `edit-config` from the your agent's [config -directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is usually at `/etc/netdata`. - -```bash -cd /etc/netdata # Replace this path with your Netdata config directory, if different -sudo ./edit-config python.d/anomalies.conf -``` - -The default configuration should look something like this. Here you can see each parameter (with sane defaults) and some information about each one and what it does. - -```conf -# - -# JOBS (data collection sources) - -# Pull data from local Netdata node. -anomalies: - name: 'Anomalies' - - # Host to pull data from. - host: '127.0.0.1:19999' - - # Username and Password for Netdata if using basic auth. - # username: '???' - # password: '???' - - # Use http or https to pull data - protocol: 'http' - - # SSL verify parameter for requests.get() calls - tls_verify: true - - # What charts to pull data for - A regex like 'system\..*|' or 'system\..*|apps.cpu|apps.mem' etc. - charts_regex: 'system\..*' - - # Charts to exclude, useful if you would like to exclude some specific charts. - # Note: should be a ',' separated string like 'chart.name,chart.name'. - charts_to_exclude: 'system.uptime,system.entropy' - - # What model to use - can be one of 'pca', 'hbos', 'iforest', 'cblof', 'loda', 'copod' or 'feature_bagging'. - # More details here: https://pyod.readthedocs.io/en/latest/pyod.models.html. - model: 'pca' - - # Max number of observations to train on, to help cap compute cost of training model if you set a very large train_n_secs. - train_max_n: 100000 - - # How often to re-train the model (assuming update_every=1 then train_every_n=1800 represents (re)training every 30 minutes). - # Note: If you want to turn off re-training set train_every_n=0 and after initial training the models will not be retrained. - train_every_n: 1800 - - # The length of the window of data to train on (14400 = last 4 hours). - train_n_secs: 14400 - - # How many prediction steps after a train event to just use previous prediction value for. - # Used to reduce possibility of the training step itself appearing as an anomaly on the charts. - train_no_prediction_n: 10 - - # If you would like to train the model for the first time on a specific window then you can define it using the below two variables. - # Start of training data for initial model. - # initial_train_data_after: 1604578857 - - # End of training data for initial model. - # initial_train_data_before: 1604593257 - - # If you would like to ignore recent data in training then you can offset it by offset_n_secs. - offset_n_secs: 0 - - # How many lagged values of each dimension to include in the 'feature vector' each model is trained on. - lags_n: 5 - - # How much smoothing to apply to each dimension in the 'feature vector' each model is trained on. - smooth_n: 3 - - # How many differences to take in preprocessing your data. - # More info on differencing here: https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing - # diffs_n=0 would mean training models on the raw values of each dimension. - # diffs_n=1 means everything is done in terms of differences. - diffs_n: 1 - - # What is the typical proportion of anomalies in your data on average? - # This parameter can control the sensitivity of your models to anomalies. - # Some discussion here: https://github.com/yzhao062/pyod/issues/144 - contamination: 0.001 - - # Set to true to include an "average_prob" dimension on anomalies probability chart which is - # just the average of all anomaly probabilities at each time step - include_average_prob: true - - # Define any custom models you would like to create anomaly probabilities for, some examples below to show how. - # For example below example creates two custom models, one to run anomaly detection user and system cpu for our demo servers - # and one on the cpu and mem apps metrics for the python.d.plugin. - # custom_models: - # - name: 'demos_cpu' - # dimensions: 'london.my-netdata.io::system.cpu|user,london.my-netdata.io::system.cpu|system,newyork.my-netdata.io::system.cpu|user,newyork.my-netdata.io::system.cpu|system' - # - name: 'apps_python_d_plugin' - # dimensions: 'apps.cpu|python.d.plugin,apps.mem|python.d.plugin' - - # Set to true to normalize, using min-max standardization, features used for the custom models. - # Useful if your custom models contain dimensions on very different scales an model you use does - # not internally do its own normalization. Usually best to leave as false. - # custom_models_normalize: false -``` - -## Custom models - -In the `anomalies.conf` file you can also define some "custom models" which you can use to group one or more metrics into a single model much like is done by default for the charts you specify. This is useful if you have a handful of metrics that exist in different charts but perhaps are related to the same underlying thing you would like to perform anomaly detection on, for example a specific app or user. - -To define a custom model you would include configuration like below in `anomalies.conf`. By default there should already be some commented out examples in there. - -`name` is a name you give your custom model, this is what will appear alongside any other specified charts in the `anomalies.probability` and `anomalies.anomaly` charts. `dimensions` is a string of metrics you want to include in your custom model. By default the [netdata-pandas](https://github.com/netdata/netdata-pandas) library used to pull the data from Netdata uses a "chart.a|dim.1" type of naming convention in the pandas columns it returns, hence the `dimensions` string should look like "chart.name|dimension.name,chart.name|dimension.name". The examples below hopefully make this clear. - -```yaml -custom_models: - # a model for anomaly detection on the netdata user in terms of cpu, mem, threads, processes and sockets. - - name: 'user_netdata' - dimensions: 'users.cpu|netdata,users.mem|netdata,users.threads|netdata,users.processes|netdata,users.sockets|netdata' - # a model for anomaly detection on the netdata python.d.plugin app in terms of cpu, mem, threads, processes and sockets. - - name: 'apps_python_d_plugin' - dimensions: 'apps.cpu|python.d.plugin,apps.mem|python.d.plugin,apps.threads|python.d.plugin,apps.processes|python.d.plugin,apps.sockets|python.d.plugin' - -custom_models_normalize: false -``` - -## Troubleshooting - -To see any relevant log messages you can use a command like below. - -```bash -`grep 'anomalies' /var/log/netdata/error.log` -``` - -If you would like to log in as `netdata` user and run the collector in debug mode to see more detail. - -```bash -# become netdata user -sudo su -s /bin/bash netdata -# run collector in debug using `nolock` option if netdata is already running the collector itself. -/usr/libexec/netdata/plugins.d/python.d.plugin anomalies debug trace nolock -``` - -## Deepdive tutorial - -If you would like to go deeper on what exactly the anomalies collector is doing under the hood then check out this [deepdive tutorial](https://github.com/netdata/community/blob/main/netdata-agent-api/netdata-pandas/anomalies_collector_deepdive.ipynb) in our community repo where you can play around with some data from our demo servers (or your own if its accessible to you) and work through the calculations step by step. - -(Note: as its a Jupyter Notebook it might render a little prettier on [nbviewer](https://nbviewer.jupyter.org/github/netdata/community/blob/main/netdata-agent-api/netdata-pandas/anomalies_collector_deepdive.ipynb)) - -## Notes - -- Python 3 is required as the [`netdata-pandas`](https://github.com/netdata/netdata-pandas) package uses Python async libraries ([asks](https://pypi.org/project/asks/) and [trio](https://pypi.org/project/trio/)) to make asynchronous calls to the [Netdata REST API](https://github.com/netdata/netdata/blob/master/web/api/README.md) to get the required data for each chart. -- Python 3 is also required for the underlying ML libraries of [numba](https://pypi.org/project/numba/), [scikit-learn](https://pypi.org/project/scikit-learn/), and [PyOD](https://pypi.org/project/pyod/). -- It may take a few hours or so (depending on your choice of `train_secs_n`) for the collector to 'settle' into it's typical behaviour in terms of the trained models and probabilities you will see in the normal running of your node. -- As this collector does most of the work in Python itself, with [PyOD](https://pyod.readthedocs.io/en/latest/) leveraging [numba](https://numba.pydata.org/) under the hood, you may want to try it out first on a test or development system to get a sense of its performance characteristics on a node similar to where you would like to use it. -- `lags_n`, `smooth_n`, and `diffs_n` together define the preprocessing done to the raw data before models are trained and before each prediction. This essentially creates a [feature vector](https://en.wikipedia.org/wiki/Feature_(machine_learning)#:~:text=In%20pattern%20recognition%20and%20machine,features%20that%20represent%20some%20object.&text=Feature%20vectors%20are%20often%20combined,score%20for%20making%20a%20prediction.) for each chart model (or each custom model). The default settings for these parameters aim to create a rolling matrix of recent smoothed [differenced](https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average#Differencing) values for each chart. The aim of the model then is to score how unusual this 'matrix' of features is for each chart based on what it has learned as 'normal' from the training data. So as opposed to just looking at the single most recent value of a dimension and considering how strange it is, this approach looks at a recent smoothed window of all dimensions for a chart (or dimensions in a custom model) and asks how unusual the data as a whole looks. This should be more flexible in capturing a wider range of [anomaly types](https://andrewm4894.com/2020/10/19/different-types-of-time-series-anomalies/) and be somewhat more robust to temporary 'spikes' in the data that tend to always be happening somewhere in your metrics but often are not the most important type of anomaly (this is all covered in a lot more detail in the [deepdive tutorial](https://nbviewer.jupyter.org/github/netdata/community/blob/main/netdata-agent-api/netdata-pandas/anomalies_collector_deepdive.ipynb)). -- You can see how long model training is taking by looking in the logs for the collector `grep 'anomalies' /var/log/netdata/error.log | grep 'training'` and you should see lines like `2020-12-01 22:02:14: python.d INFO: anomalies[local] : training complete in 2.81 seconds (runs_counter=2700, model=pca, train_n_secs=14400, models=26, n_fit_success=26, n_fit_fails=0, after=1606845731, before=1606860131).`. - - This also gives counts of the number of models, if any, that failed to fit and so had to default back to the DefaultModel (which is currently [HBOS](https://pyod.readthedocs.io/en/latest/_modules/pyod/models/hbos.html)). - - `after` and `before` here refer to the start and end of the training data used to train the models. -- On a development n1-standard-2 (2 vCPUs, 7.5 GB memory) vm running Ubuntu 18.04 LTS and not doing any work some of the typical performance characteristics we saw from running this collector (with defaults) were: - - A runtime (`netdata.runtime_anomalies`) of ~80ms when doing scoring and ~3 seconds when training or retraining the models. - - Typically ~3%-3.5% additional cpu usage from scoring, jumping to ~60% for a couple of seconds during model training. - - About ~150mb of ram (`apps.mem`) being continually used by the `python.d.plugin`. -- If you activate this collector on a fresh node, it might take a little while to build up enough data to calculate a realistic and useful model. -- Some models like `iforest` can be comparatively expensive (on same n1-standard-2 system above ~2s runtime during predict, ~40s training time, ~50% cpu on both train and predict) so if you would like to use it you might be advised to set a relatively high `update_every` maybe 10, 15 or 30 in `anomalies.conf`. -- Setting a higher `train_every_n` and `update_every` is an easy way to devote less resources on the node to anomaly detection. Specifying less charts and a lower `train_n_secs` will also help reduce resources at the expense of covering less charts and maybe a more noisy model if you set `train_n_secs` to be too small for how your node tends to behave. -- If you would like to enable this on a Raspberry Pi, then check out [this guide](https://github.com/netdata/netdata/blob/master/docs/guides/monitor/raspberry-pi-anomaly-detection.md) which will guide you through first installing LLVM. - -## Useful links and further reading - -- [PyOD documentation](https://pyod.readthedocs.io/en/latest/), [PyOD Github](https://github.com/yzhao062/pyod). -- [Anomaly Detection](https://en.wikipedia.org/wiki/Anomaly_detection) wikipedia page. -- [Anomaly Detection YouTube playlist](https://www.youtube.com/playlist?list=PL6Zhl9mK2r0KxA6rB87oi4kWzoqGd5vp0) maintained by [andrewm4894](https://github.com/andrewm4894/) from Netdata. -- [awesome-TS-anomaly-detection](https://github.com/rob-med/awesome-TS-anomaly-detection) Github list of useful tools, libraries and resources. -- [Mendeley public group](https://www.mendeley.com/community/interesting-anomaly-detection-papers/) with some interesting anomaly detection papers we have been reading. -- Good [blog post](https://www.anodot.com/blog/what-is-anomaly-detection/) from Anodot on time series anomaly detection. Anodot also have some great whitepapers in this space too that some may find useful. -- Novelty and outlier detection in the [scikit-learn documentation](https://scikit-learn.org/stable/modules/outlier_detection.html). - diff --git a/collectors/python.d.plugin/anomalies/metadata.yaml b/collectors/python.d.plugin/anomalies/metadata.yaml deleted file mode 100644 index d138cf5dd..000000000 --- a/collectors/python.d.plugin/anomalies/metadata.yaml +++ /dev/null @@ -1,87 +0,0 @@ -# NOTE: this file is commented out as users are reccomended to use the -# native anomaly detection capabilities on the agent instead. -# meta: -# plugin_name: python.d.plugin -# module_name: anomalies -# monitored_instance: -# name: python.d anomalies -# link: "" -# categories: [] -# icon_filename: "" -# related_resources: -# integrations: -# list: [] -# info_provided_to_referring_integrations: -# description: "" -# keywords: [] -# most_popular: false -# overview: -# data_collection: -# metrics_description: "" -# method_description: "" -# supported_platforms: -# include: [] -# exclude: [] -# multi_instance: true -# additional_permissions: -# description: "" -# default_behavior: -# auto_detection: -# description: "" -# limits: -# description: "" -# performance_impact: -# description: "" -# setup: -# prerequisites: -# list: [] -# configuration: -# file: -# name: "" -# description: "" -# options: -# description: "" -# folding: -# title: "" -# enabled: true -# list: [] -# examples: -# folding: -# enabled: true -# title: "" -# list: [] -# troubleshooting: -# problems: -# list: [] -# alerts: -# - name: anomalies_anomaly_probabilities -# link: https://github.com/netdata/netdata/blob/master/health/health.d/anomalies.conf -# metric: anomalies.probability -# info: average anomaly probability over the last 2 minutes -# - name: anomalies_anomaly_flags -# link: https://github.com/netdata/netdata/blob/master/health/health.d/anomalies.conf -# metric: anomalies.anomaly -# info: number of anomalies in the last 2 minutes -# metrics: -# folding: -# title: Metrics -# enabled: false -# description: "" -# availability: [] -# scopes: -# - name: global -# description: "" -# labels: [] -# metrics: -# - name: anomalies.probability -# description: Anomaly Probability -# unit: "probability" -# chart_type: line -# dimensions: -# - name: a dimension per probability -# - name: anomalies.anomaly -# description: Anomaly -# unit: "count" -# chart_type: stacked -# dimensions: -# - name: a dimension per anomaly diff --git a/collectors/python.d.plugin/beanstalk/Makefile.inc b/collectors/python.d.plugin/beanstalk/Makefile.inc deleted file mode 100644 index 4bbb7087d..000000000 --- a/collectors/python.d.plugin/beanstalk/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += beanstalk/beanstalk.chart.py -dist_pythonconfig_DATA += beanstalk/beanstalk.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += beanstalk/README.md beanstalk/Makefile.inc - diff --git a/collectors/python.d.plugin/beanstalk/metadata.yaml b/collectors/python.d.plugin/beanstalk/metadata.yaml deleted file mode 100644 index 7dff9cb3a..000000000 --- a/collectors/python.d.plugin/beanstalk/metadata.yaml +++ /dev/null @@ -1,263 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: beanstalk - monitored_instance: - name: Beanstalk - link: "https://beanstalkd.github.io/" - categories: - - data-collection.message-brokers - #- data-collection.task-queues - icon_filename: "beanstalk.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - beanstalk - - beanstalkd - - message - most_popular: false - overview: - data_collection: - metrics_description: "Monitor Beanstalk metrics to enhance job queueing and processing efficiency. Track job rates, processing times, and queue lengths for better task management." - method_description: "The collector uses the `beanstalkc` python module to connect to a `beanstalkd` service and gather metrics." - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "If no configuration is given, module will attempt to connect to beanstalkd on 127.0.0.1:11300 address." - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: "beanstalkc python module" - description: The collector requires the `beanstalkc` python module to be installed. - configuration: - file: - name: python.d/beanstalk.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - - name: host - description: IP or URL to a beanstalk service. - default_value: "127.0.0.1" - required: false - - name: port - description: Port to the IP or URL to a beanstalk service. - default_value: "11300" - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Remote beanstalk server - description: A basic remote beanstalk server - folding: - enabled: false - config: | - remote: - name: 'beanstalk' - host: '1.2.3.4' - port: 11300 - - name: Multi-instance - description: | - > **Note**: When you define multiple jobs, their names must be unique. - - Collecting metrics from local and remote instances. - config: | - localhost: - name: 'local_beanstalk' - host: '127.0.0.1' - port: 11300 - - remote_job: - name: 'remote_beanstalk' - host: '192.0.2.1' - port: 113000 - troubleshooting: - problems: - list: [] - alerts: - - name: beanstalk_server_buried_jobs - link: https://github.com/netdata/netdata/blob/master/health/health.d/beanstalkd.conf - metric: beanstalk.current_jobs - info: number of buried jobs across all tubes. You need to manually kick them so they can be processed. Presence of buried jobs in a tube does not affect new jobs. - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: beanstalk.cpu_usage - description: Cpu Usage - unit: "cpu time" - chart_type: area - dimensions: - - name: user - - name: system - - name: beanstalk.jobs_rate - description: Jobs Rate - unit: "jobs/s" - chart_type: line - dimensions: - - name: total - - name: timeouts - - name: beanstalk.connections_rate - description: Connections Rate - unit: "connections/s" - chart_type: area - dimensions: - - name: connections - - name: beanstalk.commands_rate - description: Commands Rate - unit: "commands/s" - chart_type: stacked - dimensions: - - name: put - - name: peek - - name: peek-ready - - name: peek-delayed - - name: peek-buried - - name: reserve - - name: use - - name: watch - - name: ignore - - name: delete - - name: bury - - name: kick - - name: stats - - name: stats-job - - name: stats-tube - - name: list-tubes - - name: list-tube-used - - name: list-tubes-watched - - name: pause-tube - - name: beanstalk.connections_rate - description: Current Tubes - unit: "tubes" - chart_type: area - dimensions: - - name: tubes - - name: beanstalk.current_jobs - description: Current Jobs - unit: "jobs" - chart_type: stacked - dimensions: - - name: urgent - - name: ready - - name: reserved - - name: delayed - - name: buried - - name: beanstalk.current_connections - description: Current Connections - unit: "connections" - chart_type: line - dimensions: - - name: written - - name: producers - - name: workers - - name: waiting - - name: beanstalk.binlog - description: Binlog - unit: "records/s" - chart_type: line - dimensions: - - name: written - - name: migrated - - name: beanstalk.uptime - description: seconds - unit: "seconds" - chart_type: line - dimensions: - - name: uptime - - name: tube - description: "Metrics related to Beanstalk tubes. Each tube produces its own set of the following metrics." - labels: [] - metrics: - - name: beanstalk.jobs_rate - description: Jobs Rate - unit: "jobs/s" - chart_type: area - dimensions: - - name: jobs - - name: beanstalk.jobs - description: Jobs - unit: "jobs" - chart_type: stacked - dimensions: - - name: urgent - - name: ready - - name: reserved - - name: delayed - - name: buried - - name: beanstalk.connections - description: Connections - unit: "connections" - chart_type: stacked - dimensions: - - name: using - - name: waiting - - name: watching - - name: beanstalk.commands - description: Commands - unit: "commands/s" - chart_type: stacked - dimensions: - - name: deletes - - name: pauses - - name: beanstalk.pause - description: Pause - unit: "seconds" - chart_type: stacked - dimensions: - - name: since - - name: left diff --git a/collectors/python.d.plugin/bind_rndc/Makefile.inc b/collectors/python.d.plugin/bind_rndc/Makefile.inc deleted file mode 100644 index 72f391492..000000000 --- a/collectors/python.d.plugin/bind_rndc/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += bind_rndc/bind_rndc.chart.py -dist_pythonconfig_DATA += bind_rndc/bind_rndc.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += bind_rndc/README.md bind_rndc/Makefile.inc - diff --git a/collectors/python.d.plugin/bind_rndc/README.md b/collectors/python.d.plugin/bind_rndc/README.md deleted file mode 120000 index 03a182ae8..000000000 --- a/collectors/python.d.plugin/bind_rndc/README.md +++ /dev/null @@ -1 +0,0 @@ -integrations/isc_bind_rndc.md
\ No newline at end of file diff --git a/collectors/python.d.plugin/bind_rndc/bind_rndc.chart.py b/collectors/python.d.plugin/bind_rndc/bind_rndc.chart.py deleted file mode 100644 index 9d6c9fec7..000000000 --- a/collectors/python.d.plugin/bind_rndc/bind_rndc.chart.py +++ /dev/null @@ -1,252 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: bind rndc netdata python.d module -# Author: ilyam8 -# SPDX-License-Identifier: GPL-3.0-or-later - -import os -from collections import defaultdict -from subprocess import Popen - -from bases.FrameworkServices.SimpleService import SimpleService -from bases.collection import find_binary - -update_every = 30 - -ORDER = [ - 'name_server_statistics', - 'incoming_queries', - 'outgoing_queries', - 'named_stats_size', -] - -CHARTS = { - 'name_server_statistics': { - 'options': [None, 'Name Server Statistics', 'stats', 'name server statistics', - 'bind_rndc.name_server_statistics', 'line'], - 'lines': [ - ['nms_requests', 'requests', 'incremental'], - ['nms_rejected_queries', 'rejected_queries', 'incremental'], - ['nms_success', 'success', 'incremental'], - ['nms_failure', 'failure', 'incremental'], - ['nms_responses', 'responses', 'incremental'], - ['nms_duplicate', 'duplicate', 'incremental'], - ['nms_recursion', 'recursion', 'incremental'], - ['nms_nxrrset', 'nxrrset', 'incremental'], - ['nms_nxdomain', 'nxdomain', 'incremental'], - ['nms_non_auth_answer', 'non_auth_answer', 'incremental'], - ['nms_auth_answer', 'auth_answer', 'incremental'], - ['nms_dropped_queries', 'dropped_queries', 'incremental'], - ]}, - 'incoming_queries': { - 'options': [None, 'Incoming Queries', 'queries', 'incoming queries', 'bind_rndc.incoming_queries', 'line'], - 'lines': [ - ]}, - 'outgoing_queries': { - 'options': [None, 'Outgoing Queries', 'queries', 'outgoing queries', 'bind_rndc.outgoing_queries', 'line'], - 'lines': [ - ]}, - 'named_stats_size': { - 'options': [None, 'Named Stats File Size', 'MiB', 'file size', 'bind_rndc.stats_size', 'line'], - 'lines': [ - ['stats_size', None, 'absolute', 1, 1 << 20] - ] - } -} - -NMS = { - 'nms_requests': [ - 'IPv4 requests received', - 'IPv6 requests received', - 'TCP requests received', - 'requests with EDNS(0) receive' - ], - 'nms_responses': [ - 'responses sent', - 'truncated responses sent', - 'responses with EDNS(0) sent', - 'requests with unsupported EDNS version received' - ], - 'nms_failure': [ - 'other query failures', - 'queries resulted in SERVFAIL' - ], - 'nms_auth_answer': ['queries resulted in authoritative answer'], - 'nms_non_auth_answer': ['queries resulted in non authoritative answer'], - 'nms_nxrrset': ['queries resulted in nxrrset'], - 'nms_success': ['queries resulted in successful answer'], - 'nms_nxdomain': ['queries resulted in NXDOMAIN'], - 'nms_recursion': ['queries caused recursion'], - 'nms_duplicate': ['duplicate queries received'], - 'nms_rejected_queries': [ - 'auth queries rejected', - 'recursive queries rejected' - ], - 'nms_dropped_queries': ['queries dropped'] -} - -STATS = ['Name Server Statistics', 'Incoming Queries', 'Outgoing Queries'] - - -class Service(SimpleService): - def __init__(self, configuration=None, name=None): - SimpleService.__init__(self, configuration=configuration, name=name) - self.order = ORDER - self.definitions = CHARTS - self.named_stats_path = self.configuration.get('named_stats_path', '/var/log/bind/named.stats') - self.rndc = find_binary('rndc') - self.data = dict( - nms_requests=0, - nms_responses=0, - nms_failure=0, - nms_auth=0, - nms_non_auth=0, - nms_nxrrset=0, - nms_success=0, - nms_nxdomain=0, - nms_recursion=0, - nms_duplicate=0, - nms_rejected_queries=0, - nms_dropped_queries=0, - ) - - def check(self): - if not self.rndc: - self.error('Can\'t locate "rndc" binary or binary is not executable by netdata') - return False - - if not (os.path.isfile(self.named_stats_path) and os.access(self.named_stats_path, os.R_OK)): - self.error('Cannot access file %s' % self.named_stats_path) - return False - - run_rndc = Popen([self.rndc, 'stats'], shell=False) - run_rndc.wait() - - if not run_rndc.returncode: - return True - self.error('Not enough permissions to run "%s stats"' % self.rndc) - return False - - def _get_raw_data(self): - """ - Run 'rndc stats' and read last dump from named.stats - :return: dict - """ - result = dict() - try: - current_size = os.path.getsize(self.named_stats_path) - run_rndc = Popen([self.rndc, 'stats'], shell=False) - run_rndc.wait() - - if run_rndc.returncode: - return None - with open(self.named_stats_path) as named_stats: - named_stats.seek(current_size) - result['stats'] = named_stats.readlines() - result['size'] = current_size - return result - except (OSError, IOError): - return None - - def _get_data(self): - """ - Parse data from _get_raw_data() - :return: dict - """ - - raw_data = self._get_raw_data() - - if raw_data is None: - return None - parsed = dict() - for stat in STATS: - parsed[stat] = parse_stats(field=stat, - named_stats=raw_data['stats']) - - self.data.update(nms_mapper(data=parsed['Name Server Statistics'])) - - for elem in zip(['Incoming Queries', 'Outgoing Queries'], ['incoming_queries', 'outgoing_queries']): - parsed_key, chart_name = elem[0], elem[1] - for dimension_id, value in queries_mapper(data=parsed[parsed_key], - add=chart_name[:9]).items(): - - if dimension_id not in self.data: - dimension = dimension_id.replace(chart_name[:9], '') - if dimension_id not in self.charts[chart_name]: - self.charts[chart_name].add_dimension([dimension_id, dimension, 'incremental']) - - self.data[dimension_id] = value - - self.data['stats_size'] = raw_data['size'] - return self.data - - -def parse_stats(field, named_stats): - """ - :param field: str: - :param named_stats: list: - :return: dict - - Example: - filed: 'Incoming Queries' - names_stats (list of lines): - ++ Incoming Requests ++ - 1405660 QUERY - 3 NOTIFY - ++ Incoming Queries ++ - 1214961 A - 75 NS - 2 CNAME - 2897 SOA - 35544 PTR - 14 MX - 5822 TXT - 145974 AAAA - 371 SRV - ++ Outgoing Queries ++ - ... - - result: - {'A', 1214961, 'NS': 75, 'CNAME': 2, 'SOA': 2897, ...} - """ - data = dict() - ns = iter(named_stats) - for line in ns: - if field not in line: - continue - while True: - try: - line = next(ns) - except StopIteration: - break - if '++' not in line: - if '[' in line: - continue - v, k = line.strip().split(' ', 1) - if k not in data: - data[k] = 0 - data[k] += int(v) - continue - break - break - return data - - -def nms_mapper(data): - """ - :param data: dict - :return: dict(defaultdict) - """ - result = defaultdict(int) - for k, v in NMS.items(): - for elem in v: - result[k] += data.get(elem, 0) - return result - - -def queries_mapper(data, add): - """ - :param data: dict - :param add: str - :return: dict - """ - return dict([(add + k, v) for k, v in data.items()]) diff --git a/collectors/python.d.plugin/bind_rndc/bind_rndc.conf b/collectors/python.d.plugin/bind_rndc/bind_rndc.conf deleted file mode 100644 index 84eaf0594..000000000 --- a/collectors/python.d.plugin/bind_rndc/bind_rndc.conf +++ /dev/null @@ -1,108 +0,0 @@ -# netdata python.d.plugin configuration for bind_rndc -# -# This file is in YaML format. Generally the format is: -# -# name: value -# -# There are 2 sections: -# - global variables -# - one or more JOBS -# -# JOBS allow you to collect values from multiple sources. -# Each source will have its own set of charts. -# -# JOB parameters have to be indented (using spaces only, example below). - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 1 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# -# Additionally to the above, bind_rndc also supports the following: -# -# named_stats_path: 'path to named.stats' # Default: '/var/log/bind/named.stats' -#------------------------------------------------------------------------------------------------------------------ -# Important Information -# -# BIND appends logs at EVERY RUN. It is NOT RECOMMENDED to set update_every below 30 sec. -# It is STRONGLY RECOMMENDED to create a bind-rndc.conf file for logrotate. -# -# To set up your BIND to dump stats do the following: -# -# 1. Add to 'named.conf.options' options {}: -# statistics-file "/var/log/bind/named.stats"; -# -# 2. Create bind/ directory in /var/log -# cd /var/log/ && mkdir bind -# -# 3. Change owner of directory to 'bind' user -# chown bind bind/ -# -# 4. RELOAD (NOT restart) BIND -# systemctl reload bind9.service -# -# 5. Run as a root 'rndc stats' to dump (BIND will create named.stats in new directory) -# -# To allow Netdata to run 'rndc stats' change '/etc/bind/rndc.key' group to netdata -# chown :netdata rndc.key -# -# Last, BUT NOT least, is to create bind-rndc.conf in logrotate.d/: -# -# /var/log/bind/named.stats { -# -# daily -# rotate 4 -# compress -# delaycompress -# create 0644 bind bind -# missingok -# postrotate -# rndc reload > /dev/null -# endscript -# } -# -# To test your logrotate conf file run as root: -# logrotate /etc/logrotate.d/bind-rndc -d (debug dry-run mode) -# -# ---------------------------------------------------------------------- diff --git a/collectors/python.d.plugin/bind_rndc/integrations/isc_bind_rndc.md b/collectors/python.d.plugin/bind_rndc/integrations/isc_bind_rndc.md deleted file mode 100644 index 163f8282c..000000000 --- a/collectors/python.d.plugin/bind_rndc/integrations/isc_bind_rndc.md +++ /dev/null @@ -1,215 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/bind_rndc/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/bind_rndc/metadata.yaml" -sidebar_label: "ISC Bind (RNDC)" -learn_status: "Published" -learn_rel_path: "Data Collection/DNS and DHCP Servers" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# ISC Bind (RNDC) - - -<img src="https://netdata.cloud/img/isc.png" width="150"/> - - -Plugin: python.d.plugin -Module: bind_rndc - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -Monitor ISCBind (RNDC) performance for optimal DNS server operations. Monitor query rates, response times, and error rates to ensure reliable DNS service delivery. - -This collector uses the `rndc` tool to dump (named.stats) statistics then read them to gather Bind Name Server summary performance metrics. - -This collector is supported on all platforms. - -This collector only supports collecting metrics from a single instance of this integration. - - -### Default Behavior - -#### Auto-Detection - -If no configuration is given, the collector will attempt to read named.stats file at `/var/log/bind/named.stats` - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per ISC Bind (RNDC) instance - -These metrics refer to the entire monitored application. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| bind_rndc.name_server_statistics | requests, rejected_queries, success, failure, responses, duplicate, recursion, nxrrset, nxdomain, non_auth_answer, auth_answer, dropped_queries | stats | -| bind_rndc.incoming_queries | a dimension per incoming query type | queries | -| bind_rndc.outgoing_queries | a dimension per outgoing query type | queries | -| bind_rndc.stats_size | stats_size | MiB | - - - -## Alerts - - -The following alerts are available: - -| Alert name | On metric | Description | -|:------------|:----------|:------------| -| [ bind_rndc_stats_file_size ](https://github.com/netdata/netdata/blob/master/health/health.d/bind_rndc.conf) | bind_rndc.stats_size | BIND statistics-file size | - - -## Setup - -### Prerequisites - -#### Minimum bind version and permissions - -Version of bind must be >=9.6 and the Netdata user must have permissions to run `rndc stats` - -#### Setup log rotate for bind stats - -BIND appends logs at EVERY RUN. It is NOT RECOMMENDED to set `update_every` below 30 sec. -It is STRONGLY RECOMMENDED to create a `bind-rndc.conf` file for logrotate. - -To set up BIND to dump stats do the following: - -1. Add to 'named.conf.options' options {}: -`statistics-file "/var/log/bind/named.stats";` - -2. Create bind/ directory in /var/log: -`cd /var/log/ && mkdir bind` - -3. Change owner of directory to 'bind' user: -`chown bind bind/` - -4. RELOAD (NOT restart) BIND: -`systemctl reload bind9.service` - -5. Run as a root 'rndc stats' to dump (BIND will create named.stats in new directory) - -To allow Netdata to run 'rndc stats' change '/etc/bind/rndc.key' group to netdata: -`chown :netdata rndc.key` - -Last, BUT NOT least, is to create bind-rndc.conf in logrotate.d/: -``` -/var/log/bind/named.stats { - - daily - rotate 4 - compress - delaycompress - create 0644 bind bind - missingok - postrotate - rndc reload > /dev/null - endscript -} -``` -To test your logrotate conf file run as root: -`logrotate /etc/logrotate.d/bind-rndc -d (debug dry-run mode)` - - - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/bind_rndc.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/bind_rndc.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| update_every | Sets the default data collection frequency. | 5 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | -| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no | -| named_stats_path | Path to the named stats, after being dumped by `nrdc` | /var/log/bind/named.stats | no | - -</details> - -#### Examples - -##### Local bind stats - -Define a local path to bind stats file - -```yaml -local: - named_stats_path: '/var/log/bind/named.stats' - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `bind_rndc` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin bind_rndc debug trace - ``` - - diff --git a/collectors/python.d.plugin/bind_rndc/metadata.yaml b/collectors/python.d.plugin/bind_rndc/metadata.yaml deleted file mode 100644 index e3568e448..000000000 --- a/collectors/python.d.plugin/bind_rndc/metadata.yaml +++ /dev/null @@ -1,191 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: bind_rndc - monitored_instance: - name: ISC Bind (RNDC) - link: "https://www.isc.org/bind/" - categories: - - data-collection.dns-and-dhcp-servers - icon_filename: "isc.png" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - dns - - bind - - server - most_popular: false - overview: - data_collection: - metrics_description: "Monitor ISCBind (RNDC) performance for optimal DNS server operations. Monitor query rates, response times, and error rates to ensure reliable DNS service delivery." - method_description: "This collector uses the `rndc` tool to dump (named.stats) statistics then read them to gather Bind Name Server summary performance metrics." - supported_platforms: - include: [] - exclude: [] - multi_instance: false - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "If no configuration is given, the collector will attempt to read named.stats file at `/var/log/bind/named.stats`" - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: "Minimum bind version and permissions" - description: "Version of bind must be >=9.6 and the Netdata user must have permissions to run `rndc stats`" - - title: "Setup log rotate for bind stats" - description: | - BIND appends logs at EVERY RUN. It is NOT RECOMMENDED to set `update_every` below 30 sec. - It is STRONGLY RECOMMENDED to create a `bind-rndc.conf` file for logrotate. - - To set up BIND to dump stats do the following: - - 1. Add to 'named.conf.options' options {}: - `statistics-file "/var/log/bind/named.stats";` - - 2. Create bind/ directory in /var/log: - `cd /var/log/ && mkdir bind` - - 3. Change owner of directory to 'bind' user: - `chown bind bind/` - - 4. RELOAD (NOT restart) BIND: - `systemctl reload bind9.service` - - 5. Run as a root 'rndc stats' to dump (BIND will create named.stats in new directory) - - To allow Netdata to run 'rndc stats' change '/etc/bind/rndc.key' group to netdata: - `chown :netdata rndc.key` - - Last, BUT NOT least, is to create bind-rndc.conf in logrotate.d/: - ``` - /var/log/bind/named.stats { - - daily - rotate 4 - compress - delaycompress - create 0644 bind bind - missingok - postrotate - rndc reload > /dev/null - endscript - } - ``` - To test your logrotate conf file run as root: - `logrotate /etc/logrotate.d/bind-rndc -d (debug dry-run mode)` - configuration: - file: - name: python.d/bind_rndc.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - - name: named_stats_path - description: Path to the named stats, after being dumped by `nrdc` - default_value: "/var/log/bind/named.stats" - required: false - examples: - folding: - enabled: false - title: "Config" - list: - - name: Local bind stats - description: Define a local path to bind stats file - config: | - local: - named_stats_path: '/var/log/bind/named.stats' - troubleshooting: - problems: - list: [] - alerts: - - name: bind_rndc_stats_file_size - link: https://github.com/netdata/netdata/blob/master/health/health.d/bind_rndc.conf - metric: bind_rndc.stats_size - info: BIND statistics-file size - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: bind_rndc.name_server_statistics - description: Name Server Statistics - unit: "stats" - chart_type: line - dimensions: - - name: requests - - name: rejected_queries - - name: success - - name: failure - - name: responses - - name: duplicate - - name: recursion - - name: nxrrset - - name: nxdomain - - name: non_auth_answer - - name: auth_answer - - name: dropped_queries - - name: bind_rndc.incoming_queries - description: Incoming queries - unit: "queries" - chart_type: line - dimensions: - - name: a dimension per incoming query type - - name: bind_rndc.outgoing_queries - description: Outgoing queries - unit: "queries" - chart_type: line - dimensions: - - name: a dimension per outgoing query type - - name: bind_rndc.stats_size - description: Named Stats File Size - unit: "MiB" - chart_type: line - dimensions: - - name: stats_size diff --git a/collectors/python.d.plugin/boinc/Makefile.inc b/collectors/python.d.plugin/boinc/Makefile.inc deleted file mode 100644 index 319e19cfe..000000000 --- a/collectors/python.d.plugin/boinc/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += boinc/boinc.chart.py -dist_pythonconfig_DATA += boinc/boinc.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += boinc/README.md boinc/Makefile.inc - diff --git a/collectors/python.d.plugin/boinc/metadata.yaml b/collectors/python.d.plugin/boinc/metadata.yaml deleted file mode 100644 index 33a67ac34..000000000 --- a/collectors/python.d.plugin/boinc/metadata.yaml +++ /dev/null @@ -1,198 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: boinc - monitored_instance: - name: BOINC - link: "https://boinc.berkeley.edu/" - categories: - - data-collection.distributed-computing-systems - icon_filename: "bolt.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - boinc - - distributed - most_popular: false - overview: - data_collection: - metrics_description: "This collector monitors task counts for the Berkeley Open Infrastructure Networking Computing (BOINC) distributed computing client." - method_description: "It uses the same RPC interface that the BOINC monitoring GUI does." - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "By default, the module will try to auto-detect the password to the RPC interface by looking in `/var/lib/boinc` for this file (this is the location most Linux distributions use for a system-wide BOINC installation), so things may just work without needing configuration for a local system." - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: "Boinc RPC interface" - description: BOINC requires use of a password to access it's RPC interface. You can find this password in the `gui_rpc_auth.cfg` file in your BOINC directory. - configuration: - file: - name: python.d/boinc.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - - name: hostname - description: Define a hostname where boinc is running. - default_value: "localhost" - required: false - - name: port - description: The port of boinc RPC interface. - default_value: "" - required: false - - name: password - description: Provide a password to connect to a boinc RPC interface. - default_value: "" - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Configuration of a remote boinc instance - description: A basic JOB configuration for a remote boinc instance - folding: - enabled: false - config: | - remote: - hostname: '1.2.3.4' - port: 1234 - password: 'some-password' - - name: Multi-instance - description: | - > **Note**: When you define multiple jobs, their names must be unique. - - Collecting metrics from local and remote instances. - config: | - localhost: - name: 'local' - host: '127.0.0.1' - port: 1234 - password: 'some-password' - - remote_job: - name: 'remote' - host: '192.0.2.1' - port: 1234 - password: some-other-password - troubleshooting: - problems: - list: [] - alerts: - - name: boinc_total_tasks - link: https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf - metric: boinc.tasks - info: average number of total tasks over the last 10 minutes - os: "*" - - name: boinc_active_tasks - link: https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf - metric: boinc.tasks - info: average number of active tasks over the last 10 minutes - os: "*" - - name: boinc_compute_errors - link: https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf - metric: boinc.states - info: average number of compute errors over the last 10 minutes - os: "*" - - name: boinc_upload_errors - link: https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf - metric: boinc.states - info: average number of failed uploads over the last 10 minutes - os: "*" - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: boinc.tasks - description: Overall Tasks - unit: "tasks" - chart_type: line - dimensions: - - name: Total - - name: Active - - name: boinc.states - description: Tasks per State - unit: "tasks" - chart_type: line - dimensions: - - name: New - - name: Downloading - - name: Ready to Run - - name: Compute Errors - - name: Uploading - - name: Uploaded - - name: Aborted - - name: Failed Uploads - - name: boinc.sched - description: Tasks per Scheduler State - unit: "tasks" - chart_type: line - dimensions: - - name: Uninitialized - - name: Preempted - - name: Scheduled - - name: boinc.process - description: Tasks per Process State - unit: "tasks" - chart_type: line - dimensions: - - name: Uninitialized - - name: Executing - - name: Suspended - - name: Aborted - - name: Quit - - name: Copy Pending diff --git a/collectors/python.d.plugin/ceph/Makefile.inc b/collectors/python.d.plugin/ceph/Makefile.inc deleted file mode 100644 index 15b039ef6..000000000 --- a/collectors/python.d.plugin/ceph/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += ceph/ceph.chart.py -dist_pythonconfig_DATA += ceph/ceph.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += ceph/README.md ceph/Makefile.inc - diff --git a/collectors/python.d.plugin/ceph/metadata.yaml b/collectors/python.d.plugin/ceph/metadata.yaml deleted file mode 100644 index 0f06470b1..000000000 --- a/collectors/python.d.plugin/ceph/metadata.yaml +++ /dev/null @@ -1,223 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: ceph - monitored_instance: - name: Ceph - link: 'https://ceph.io/' - categories: - - data-collection.storage-mount-points-and-filesystems - icon_filename: 'ceph.svg' - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: '' - keywords: - - ceph - - storage - most_popular: false - overview: - data_collection: - metrics_description: 'This collector monitors Ceph metrics about Cluster statistics, OSD usage, latency and Pool statistics.' - method_description: 'Uses the `rados` python module to connect to a Ceph cluster.' - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: '' - default_behavior: - auto_detection: - description: '' - limits: - description: '' - performance_impact: - description: '' - setup: - prerequisites: - list: - - title: '`rados` python module' - description: 'Make sure the `rados` python module is installed' - - title: 'Granting read permissions to ceph group from keyring file' - description: 'Execute: `chmod 640 /etc/ceph/ceph.client.admin.keyring`' - - title: 'Create a specific rados_id' - description: 'You can optionally create a rados_id to use instead of admin' - configuration: - file: - name: python.d/ceph.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: '' - required: false - - name: config_file - description: Ceph config file - default_value: '' - required: true - - name: keyring_file - description: Ceph keyring file. netdata user must be added into ceph group and keyring file must be read group permission. - default_value: '' - required: true - - name: rados_id - description: A rados user id to use for connecting to the Ceph cluster. - default_value: 'admin' - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic local Ceph cluster - description: A basic configuration to connect to a local Ceph cluster. - folding: - enabled: false - config: | - local: - config_file: '/etc/ceph/ceph.conf' - keyring_file: '/etc/ceph/ceph.client.admin.keyring' - troubleshooting: - problems: - list: [] - alerts: - - name: ceph_cluster_space_usage - link: https://github.com/netdata/netdata/blob/master/health/health.d/ceph.conf - metric: ceph.general_usage - info: cluster disk space utilization - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: ceph.general_usage - description: Ceph General Space - unit: "KiB" - chart_type: stacked - dimensions: - - name: avail - - name: used - - name: ceph.general_objects - description: Ceph General Objects - unit: "objects" - chart_type: area - dimensions: - - name: cluster - - name: ceph.general_bytes - description: Ceph General Read/Write Data/s - unit: "KiB/s" - chart_type: area - dimensions: - - name: read - - name: write - - name: ceph.general_operations - description: Ceph General Read/Write Operations/s - unit: "operations" - chart_type: area - dimensions: - - name: read - - name: write - - name: ceph.general_latency - description: Ceph General Apply/Commit latency - unit: "milliseconds" - chart_type: area - dimensions: - - name: apply - - name: commit - - name: ceph.pool_usage - description: Ceph Pools - unit: "KiB" - chart_type: line - dimensions: - - name: a dimension per Ceph Pool - - name: ceph.pool_objects - description: Ceph Pools - unit: "objects" - chart_type: line - dimensions: - - name: a dimension per Ceph Pool - - name: ceph.pool_read_bytes - description: Ceph Read Pool Data/s - unit: "KiB/s" - chart_type: area - dimensions: - - name: a dimension per Ceph Pool - - name: ceph.pool_write_bytes - description: Ceph Write Pool Data/s - unit: "KiB/s" - chart_type: area - dimensions: - - name: a dimension per Ceph Pool - - name: ceph.pool_read_operations - description: Ceph Read Pool Operations/s - unit: "operations" - chart_type: area - dimensions: - - name: a dimension per Ceph Pool - - name: ceph.pool_write_operations - description: Ceph Write Pool Operations/s - unit: "operations" - chart_type: area - dimensions: - - name: a dimension per Ceph Pool - - name: ceph.osd_usage - description: Ceph OSDs - unit: "KiB" - chart_type: line - dimensions: - - name: a dimension per Ceph OSD - - name: ceph.osd_size - description: Ceph OSDs size - unit: "KiB" - chart_type: line - dimensions: - - name: a dimension per Ceph OSD - - name: ceph.apply_latency - description: Ceph OSDs apply latency - unit: "milliseconds" - chart_type: line - dimensions: - - name: a dimension per Ceph OSD - - name: ceph.commit_latency - description: Ceph OSDs commit latency - unit: "milliseconds" - chart_type: line - dimensions: - - name: a dimension per Ceph OSD diff --git a/collectors/python.d.plugin/changefinder/Makefile.inc b/collectors/python.d.plugin/changefinder/Makefile.inc deleted file mode 100644 index 01a92408b..000000000 --- a/collectors/python.d.plugin/changefinder/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += changefinder/changefinder.chart.py -dist_pythonconfig_DATA += changefinder/changefinder.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += changefinder/README.md changefinder/Makefile.inc - diff --git a/collectors/python.d.plugin/dovecot/Makefile.inc b/collectors/python.d.plugin/dovecot/Makefile.inc deleted file mode 100644 index fd7d13bbb..000000000 --- a/collectors/python.d.plugin/dovecot/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += dovecot/dovecot.chart.py -dist_pythonconfig_DATA += dovecot/dovecot.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += dovecot/README.md dovecot/Makefile.inc - diff --git a/collectors/python.d.plugin/example/Makefile.inc b/collectors/python.d.plugin/example/Makefile.inc deleted file mode 100644 index 1b027d5a7..000000000 --- a/collectors/python.d.plugin/example/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += example/example.chart.py -dist_pythonconfig_DATA += example/example.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += example/README.md example/Makefile.inc - diff --git a/collectors/python.d.plugin/example/metadata.yaml b/collectors/python.d.plugin/example/metadata.yaml deleted file mode 100644 index eae84d9e1..000000000 --- a/collectors/python.d.plugin/example/metadata.yaml +++ /dev/null @@ -1,138 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: example - monitored_instance: - name: Example collector - link: https://github.com/netdata/netdata/blob/master/collectors/python.d.plugin/example/README.md - categories: - - data-collection.other - icon_filename: "" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - example - - netdata - - python - most_popular: false - overview: - data_collection: - metrics_description: | - Example collector that generates some random numbers as metrics. - - If you want to write your own collector, read our [writing a new Python module](https://github.com/netdata/netdata/blob/master/collectors/python.d.plugin/README.md#how-to-write-a-new-module) tutorial. - method_description: | - The `get_data()` function uses `random.randint()` to generate a random number which will be collected as a metric. - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "" - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: python.d/example.conf - description: "" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: Config options - enabled: true - list: - - name: num_lines - description: The number of lines to create. - default_value: 4 - required: false - - name: lower - description: The lower bound of numbers to randomly sample from. - default_value: 0 - required: false - - name: upper - description: The upper bound of numbers to randomly sample from. - default_value: 100 - required: false - - name: update_every - description: Sets the default data collection frequency. - default_value: 1 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - examples: - folding: - enabled: true - title: Config - list: - - name: Basic - folding: - enabled: false - description: A basic example configuration. - config: | - four_lines: - name: "Four Lines" - update_every: 1 - priority: 60000 - penalty: yes - autodetection_retry: 0 - num_lines: 4 - lower: 0 - upper: 100 - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: | - These metrics refer to the entire monitored application. - labels: [] - metrics: - - name: example.random - description: A random number - unit: number - chart_type: line - dimensions: - - name: random diff --git a/collectors/python.d.plugin/exim/Makefile.inc b/collectors/python.d.plugin/exim/Makefile.inc deleted file mode 100644 index 36ffa56d2..000000000 --- a/collectors/python.d.plugin/exim/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += exim/exim.chart.py -dist_pythonconfig_DATA += exim/exim.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += exim/README.md exim/Makefile.inc - diff --git a/collectors/python.d.plugin/fail2ban/Makefile.inc b/collectors/python.d.plugin/fail2ban/Makefile.inc deleted file mode 100644 index 31e117e53..000000000 --- a/collectors/python.d.plugin/fail2ban/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += fail2ban/fail2ban.chart.py -dist_pythonconfig_DATA += fail2ban/fail2ban.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += fail2ban/README.md fail2ban/Makefile.inc - diff --git a/collectors/python.d.plugin/fail2ban/fail2ban.chart.py b/collectors/python.d.plugin/fail2ban/fail2ban.chart.py deleted file mode 100644 index 76f6d92b4..000000000 --- a/collectors/python.d.plugin/fail2ban/fail2ban.chart.py +++ /dev/null @@ -1,217 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: fail2ban log netdata python.d module -# Author: ilyam8 -# SPDX-License-Identifier: GPL-3.0-or-later - -import os -import re -from collections import defaultdict -from glob import glob - -from bases.FrameworkServices.LogService import LogService - -ORDER = [ - 'jails_failed_attempts', - 'jails_bans', - 'jails_banned_ips', -] - - -def charts(jails): - """ - Chart definitions creating - """ - - ch = { - ORDER[0]: { - 'options': [None, 'Failed attempts', 'attempts/s', 'failed attempts', 'fail2ban.failed_attempts', 'line'], - 'lines': [] - }, - ORDER[1]: { - 'options': [None, 'Bans', 'bans/s', 'bans', 'fail2ban.bans', 'line'], - 'lines': [] - }, - ORDER[2]: { - 'options': [None, 'Banned IP addresses (since the last restart of netdata)', 'ips', 'banned ips', - 'fail2ban.banned_ips', 'line'], - 'lines': [] - }, - } - for jail in jails: - dim = ['{0}_failed_attempts'.format(jail), jail, 'incremental'] - ch[ORDER[0]]['lines'].append(dim) - - dim = [jail, jail, 'incremental'] - ch[ORDER[1]]['lines'].append(dim) - - dim = ['{0}_in_jail'.format(jail), jail, 'absolute'] - ch[ORDER[2]]['lines'].append(dim) - - return ch - - -RE_JAILS = re.compile(r'\[([a-zA-Z0-9_-]+)\][^\[\]]+?enabled\s+= +(true|yes|false|no)') - -ACTION_BAN = 'Ban' -ACTION_UNBAN = 'Unban' -ACTION_RESTORE_BAN = 'Restore Ban' -ACTION_FOUND = 'Found' - -# Example: -# 2018-09-12 11:45:58,727 fail2ban.actions[25029]: WARNING [ssh] Found 203.0.113.1 -# 2018-09-12 11:45:58,727 fail2ban.actions[25029]: WARNING [ssh] Ban 203.0.113.1 -# 2018-09-12 11:45:58,727 fail2ban.actions[25029]: WARNING [ssh] Restore Ban 203.0.113.1 -# 2018-09-12 11:45:53,715 fail2ban.actions[25029]: WARNING [ssh] Unban 203.0.113.1 -RE_DATA = re.compile( - r'\[(?P<jail>[A-Za-z-_0-9]+)\] (?P<action>{0}|{1}|{2}|{3}) (?P<ip>[a-f0-9.:]+)'.format( - ACTION_BAN, ACTION_UNBAN, ACTION_RESTORE_BAN, ACTION_FOUND - ) -) - -DEFAULT_JAILS = [ - 'ssh', -] - - -class Service(LogService): - def __init__(self, configuration=None, name=None): - LogService.__init__(self, configuration=configuration, name=name) - self.order = ORDER - self.definitions = dict() - self.log_path = self.configuration.get('log_path', '/var/log/fail2ban.log') - self.conf_path = self.configuration.get('conf_path', '/etc/fail2ban/jail.local') - self.conf_dir = self.configuration.get('conf_dir', '/etc/fail2ban/jail.d/') - self.exclude = self.configuration.get('exclude', str()) - self.monitoring_jails = list() - self.banned_ips = defaultdict(set) - self.data = dict() - - def check(self): - """ - :return: bool - """ - if not self.conf_path.endswith(('.conf', '.local')): - self.error('{0} is a wrong conf path name, must be *.conf or *.local'.format(self.conf_path)) - return False - - if not os.access(self.log_path, os.R_OK): - self.error('{0} is not readable'.format(self.log_path)) - return False - - if os.path.getsize(self.log_path) == 0: - self.error('{0} is empty'.format(self.log_path)) - return False - - self.monitoring_jails = self.jails_auto_detection() - for jail in self.monitoring_jails: - self.data['{0}_failed_attempts'.format(jail)] = 0 - self.data[jail] = 0 - self.data['{0}_in_jail'.format(jail)] = 0 - - self.definitions = charts(self.monitoring_jails) - self.info('monitoring jails: {0}'.format(self.monitoring_jails)) - - return True - - def get_data(self): - """ - :return: dict - """ - raw = self._get_raw_data() - - if not raw: - return None if raw is None else self.data - - for row in raw: - match = RE_DATA.search(row) - - if not match: - continue - - match = match.groupdict() - - if match['jail'] not in self.monitoring_jails: - continue - - jail, action, ip = match['jail'], match['action'], match['ip'] - - if action == ACTION_FOUND: - self.data['{0}_failed_attempts'.format(jail)] += 1 - elif action in (ACTION_BAN, ACTION_RESTORE_BAN): - self.data[jail] += 1 - if ip not in self.banned_ips[jail]: - self.banned_ips[jail].add(ip) - self.data['{0}_in_jail'.format(jail)] += 1 - elif action == ACTION_UNBAN: - if ip in self.banned_ips[jail]: - self.banned_ips[jail].remove(ip) - self.data['{0}_in_jail'.format(jail)] -= 1 - - return self.data - - def get_files_from_dir(self, dir_path, suffix): - """ - :return: list - """ - if not os.path.isdir(dir_path): - self.error('{0} is not a directory'.format(dir_path)) - return list() - - return glob('{0}/*.{1}'.format(self.conf_dir, suffix)) - - def get_jails_from_file(self, file_path): - """ - :return: list - """ - if not os.access(file_path, os.R_OK): - self.error('{0} is not readable or not exist'.format(file_path)) - return list() - - with open(file_path, 'rt') as f: - lines = f.readlines() - raw = ' '.join(line for line in lines if line.startswith(('[', 'enabled'))) - - match = RE_JAILS.findall(raw) - # Result: [('ssh', 'true'), ('dropbear', 'true'), ('pam-generic', 'true'), ...] - - if not match: - self.debug('{0} parse failed'.format(file_path)) - return list() - - return match - - def jails_auto_detection(self): - """ - :return: list - - Parses jail configuration files. Returns list of enabled jails. - According man jail.conf parse order must be - * jail.conf - * jail.d/*.conf (in alphabetical order) - * jail.local - * jail.d/*.local (in alphabetical order) - """ - jails_files, all_jails, active_jails = list(), list(), list() - - jails_files.append('{0}.conf'.format(self.conf_path.rsplit('.')[0])) - jails_files.extend(self.get_files_from_dir(self.conf_dir, 'conf')) - jails_files.append('{0}.local'.format(self.conf_path.rsplit('.')[0])) - jails_files.extend(self.get_files_from_dir(self.conf_dir, 'local')) - - self.debug('config files to parse: {0}'.format(jails_files)) - - for f in jails_files: - all_jails.extend(self.get_jails_from_file(f)) - - exclude = self.exclude.split() - - for name, status in all_jails: - if name in exclude: - continue - - if status in ('true', 'yes') and name not in active_jails: - active_jails.append(name) - elif status in ('false', 'no') and name in active_jails: - active_jails.remove(name) - - return active_jails or DEFAULT_JAILS diff --git a/collectors/python.d.plugin/fail2ban/fail2ban.conf b/collectors/python.d.plugin/fail2ban/fail2ban.conf deleted file mode 100644 index a36436b51..000000000 --- a/collectors/python.d.plugin/fail2ban/fail2ban.conf +++ /dev/null @@ -1,68 +0,0 @@ -# netdata python.d.plugin configuration for fail2ban -# -# This file is in YaML format. Generally the format is: -# -# name: value -# -# There are 2 sections: -# - global variables -# - one or more JOBS -# -# JOBS allow you to collect values from multiple sources. -# Each source will have its own set of charts. -# -# JOB parameters have to be indented (using spaces only, example below). - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 1 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# -# Additionally to the above, fail2ban also supports the following: -# -# log_path: 'path to fail2ban.log' # Default: '/var/log/fail2ban.log' -# conf_path: 'path to jail.local/jail.conf' # Default: '/etc/fail2ban/jail.local' -# conf_dir: 'path to jail.d/' # Default: '/etc/fail2ban/jail.d/' -# exclude: 'jails you want to exclude from autodetection' # Default: none -#------------------------------------------------------------------------------------------------------------------ diff --git a/collectors/python.d.plugin/fail2ban/integrations/fail2ban.md b/collectors/python.d.plugin/fail2ban/integrations/fail2ban.md deleted file mode 100644 index a7116be5e..000000000 --- a/collectors/python.d.plugin/fail2ban/integrations/fail2ban.md +++ /dev/null @@ -1,209 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/fail2ban/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/fail2ban/metadata.yaml" -sidebar_label: "Fail2ban" -learn_status: "Published" -learn_rel_path: "Data Collection/Authentication and Authorization" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# Fail2ban - - -<img src="https://netdata.cloud/img/fail2ban.png" width="150"/> - - -Plugin: python.d.plugin -Module: fail2ban - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -Monitor Fail2ban performance for prime intrusion prevention operations. Monitor ban counts, jail statuses, and failed login attempts to ensure robust network security. - - -It collects metrics through reading the default log and configuration files of fail2ban. - - -This collector is supported on all platforms. - -This collector supports collecting metrics from multiple instances of this integration, including remote instances. - -The `fail2ban.log` file must be readable by the user `netdata`. - - change the file ownership and access permissions. - - update `/etc/logrotate.d/fail2ban`` to persist the changes after rotating the log file. - -To change the file ownership and access permissions, execute the following: - -```shell -sudo chown root:netdata /var/log/fail2ban.log -sudo chmod 640 /var/log/fail2ban.log -``` - -To persist the changes after rotating the log file, add `create 640 root netdata` to the `/etc/logrotate.d/fail2ban`: - -```shell -/var/log/fail2ban.log { - - weekly - rotate 4 - compress - - delaycompress - missingok - postrotate - fail2ban-client flushlogs 1>/dev/null - endscript - - # If fail2ban runs as non-root it still needs to have write access - # to logfiles. - # create 640 fail2ban adm - create 640 root netdata -} -``` - - -### Default Behavior - -#### Auto-Detection - -By default the collector will attempt to read log file at /var/log/fail2ban.log and conf file at /etc/fail2ban/jail.local. -If conf file is not found default jail is ssh. - - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per Fail2ban instance - -These metrics refer to the entire monitored application. - - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| fail2ban.failed_attempts | a dimension per jail | attempts/s | -| fail2ban.bans | a dimension per jail | bans/s | -| fail2ban.banned_ips | a dimension per jail | ips | - - - -## Alerts - -There are no alerts configured by default for this integration. - - -## Setup - -### Prerequisites - -No action required. - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/fail2ban.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/fail2ban.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| log_path | path to fail2ban.log. | /var/log/fail2ban.log | no | -| conf_path | path to jail.local/jail.conf. | /etc/fail2ban/jail.local | no | -| conf_dir | path to jail.d/. | /etc/fail2ban/jail.d/ | no | -| exclude | jails you want to exclude from autodetection. | | no | -| update_every | Sets the default data collection frequency. | 1 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | -| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no | - -</details> - -#### Examples - -##### Basic - -A basic example configuration. - -```yaml -local: - log_path: '/var/log/fail2ban.log' - conf_path: '/etc/fail2ban/jail.local' - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `fail2ban` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin fail2ban debug trace - ``` - -### Debug Mode - - - - diff --git a/collectors/python.d.plugin/fail2ban/metadata.yaml b/collectors/python.d.plugin/fail2ban/metadata.yaml deleted file mode 100644 index 61f762679..000000000 --- a/collectors/python.d.plugin/fail2ban/metadata.yaml +++ /dev/null @@ -1,200 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: fail2ban - monitored_instance: - name: Fail2ban - link: https://www.fail2ban.org/ - categories: - - data-collection.authentication-and-authorization - icon_filename: "fail2ban.png" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - fail2ban - - security - - authentication - - authorization - most_popular: false - overview: - data_collection: - metrics_description: | - Monitor Fail2ban performance for prime intrusion prevention operations. Monitor ban counts, jail statuses, and failed login attempts to ensure robust network security. - method_description: | - It collects metrics through reading the default log and configuration files of fail2ban. - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: | - The `fail2ban.log` file must be readable by the user `netdata`. - - change the file ownership and access permissions. - - update `/etc/logrotate.d/fail2ban`` to persist the changes after rotating the log file. - - To change the file ownership and access permissions, execute the following: - - ```shell - sudo chown root:netdata /var/log/fail2ban.log - sudo chmod 640 /var/log/fail2ban.log - ``` - - To persist the changes after rotating the log file, add `create 640 root netdata` to the `/etc/logrotate.d/fail2ban`: - - ```shell - /var/log/fail2ban.log { - - weekly - rotate 4 - compress - - delaycompress - missingok - postrotate - fail2ban-client flushlogs 1>/dev/null - endscript - - # If fail2ban runs as non-root it still needs to have write access - # to logfiles. - # create 640 fail2ban adm - create 640 root netdata - } - ``` - default_behavior: - auto_detection: - description: | - By default the collector will attempt to read log file at /var/log/fail2ban.log and conf file at /etc/fail2ban/jail.local. - If conf file is not found default jail is ssh. - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: python.d/fail2ban.conf - description: "" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: Config options - enabled: true - list: - - name: log_path - description: path to fail2ban.log. - default_value: /var/log/fail2ban.log - required: false - - name: conf_path - description: path to jail.local/jail.conf. - default_value: /etc/fail2ban/jail.local - required: false - - name: conf_dir - description: path to jail.d/. - default_value: /etc/fail2ban/jail.d/ - required: false - - name: exclude - description: jails you want to exclude from autodetection. - default_value: "" - required: false - - name: update_every - description: Sets the default data collection frequency. - default_value: 1 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - examples: - folding: - enabled: true - title: Config - list: - - name: Basic - folding: - enabled: false - description: A basic example configuration. - config: | - local: - log_path: '/var/log/fail2ban.log' - conf_path: '/etc/fail2ban/jail.local' - troubleshooting: - problems: - list: - - name: Debug Mode - description: | - To troubleshoot issues with the `fail2ban` module, run the `python.d.plugin` with the debug option enabled. - The output will give you the output of the data collection job or error messages on why the collector isn't working. - - First, navigate to your plugins directory, usually they are located under `/usr/libexec/netdata/plugins.d/`. If that's - not the case on your system, open `netdata.conf` and look for the setting `plugins directory`. Once you're in the - plugin's directory, switch to the `netdata` user. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - sudo su -s /bin/bash netdata - ``` - - Now you can manually run the `fail2ban` module in debug mode: - - ```bash - ./python.d.plugin fail2ban debug trace - ``` - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: | - These metrics refer to the entire monitored application. - labels: [] - metrics: - - name: fail2ban.failed_attempts - description: Failed attempts - unit: "attempts/s" - chart_type: line - dimensions: - - name: a dimension per jail - - name: fail2ban.bans - description: Bans - unit: "bans/s" - chart_type: line - dimensions: - - name: a dimension per jail - - name: fail2ban.banned_ips - description: Banned IP addresses (since the last restart of netdata) - unit: "ips" - chart_type: line - dimensions: - - name: a dimension per jail diff --git a/collectors/python.d.plugin/gearman/Makefile.inc b/collectors/python.d.plugin/gearman/Makefile.inc deleted file mode 100644 index 275adf1c1..000000000 --- a/collectors/python.d.plugin/gearman/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += gearman/gearman.chart.py -dist_pythonconfig_DATA += gearman/gearman.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += gearman/README.md gearman/Makefile.inc - diff --git a/collectors/python.d.plugin/gearman/metadata.yaml b/collectors/python.d.plugin/gearman/metadata.yaml deleted file mode 100644 index f1760568e..000000000 --- a/collectors/python.d.plugin/gearman/metadata.yaml +++ /dev/null @@ -1,168 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: gearman - monitored_instance: - name: Gearman - link: "http://gearman.org/" - categories: - - data-collection.distributed-computing-systems - icon_filename: "gearman.png" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - gearman - - gearman job server - most_popular: false - overview: - data_collection: - metrics_description: "Monitor Gearman metrics for proficient system task distribution. Track job counts, worker statuses, and queue lengths for effective distributed task management." - method_description: "This collector connects to a Gearman instance via either TCP or unix socket." - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "When no configuration file is found, the collector tries to connect to TCP/IP socket: localhost:4730." - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: "Socket permissions" - description: The gearman UNIX socket should have read permission for user netdata. - configuration: - file: - name: python.d/gearman.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - - name: host - description: URL or IP where gearman is running. - default_value: "localhost" - required: false - - name: port - description: Port of URL or IP where gearman is running. - default_value: "4730" - required: false - - name: tls - description: Use tls to connect to gearman. - default_value: "false" - required: false - - name: cert - description: Provide a certificate file if needed to connect to a TLS gearman instance. - default_value: "" - required: false - - name: key - description: Provide a key file if needed to connect to a TLS gearman instance. - default_value: "" - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Local gearman service - description: A basic host and port gearman configuration for localhost. - folding: - enabled: false - config: | - localhost: - name: 'local' - host: 'localhost' - port: 4730 - - name: Multi-instance - description: | - > **Note**: When you define multiple jobs, their names must be unique. - - Collecting metrics from local and remote instances. - config: | - localhost: - name: 'local' - host: 'localhost' - port: 4730 - - remote: - name: 'remote' - host: '192.0.2.1' - port: 4730 - troubleshooting: - problems: - list: [] - alerts: - - name: gearman_workers_queued - link: https://github.com/netdata/netdata/blob/master/health/health.d/gearman.conf - metric: gearman.single_job - info: average number of queued jobs over the last 10 minutes - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: gearman.total_jobs - description: Total Jobs - unit: "Jobs" - chart_type: line - dimensions: - - name: Pending - - name: Running - - name: gearman job - description: "Metrics related to Gearman jobs. Each job produces its own set of the following metrics." - labels: [] - metrics: - - name: gearman.single_job - description: "{job_name}" - unit: "Jobs" - chart_type: stacked - dimensions: - - name: Pending - - name: Idle - - name: Runnning diff --git a/collectors/python.d.plugin/go_expvar/Makefile.inc b/collectors/python.d.plugin/go_expvar/Makefile.inc deleted file mode 100644 index 74f50d765..000000000 --- a/collectors/python.d.plugin/go_expvar/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += go_expvar/go_expvar.chart.py -dist_pythonconfig_DATA += go_expvar/go_expvar.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += go_expvar/README.md go_expvar/Makefile.inc - diff --git a/collectors/python.d.plugin/go_expvar/metadata.yaml b/collectors/python.d.plugin/go_expvar/metadata.yaml deleted file mode 100644 index 9419b024a..000000000 --- a/collectors/python.d.plugin/go_expvar/metadata.yaml +++ /dev/null @@ -1,329 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: go_expvar - monitored_instance: - name: Go applications (EXPVAR) - link: "https://pkg.go.dev/expvar" - categories: - - data-collection.apm - icon_filename: "go.png" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - go - - expvar - - application - most_popular: false - overview: - data_collection: - metrics_description: "This collector monitors Go applications that expose their metrics with the use of the `expvar` package from the Go standard library. It produces charts for Go runtime memory statistics and optionally any number of custom charts." - method_description: "It connects via http to gather the metrics exposed via the `expvar` package." - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "" - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: "Enable the go_expvar collector" - description: | - The `go_expvar` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. - - ```bash - cd /etc/netdata # Replace this path with your Netdata config directory, if different - sudo ./edit-config python.d.conf - ``` - - Change the value of the `go_expvar` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/configure/start-stop-restart.md) for your system. - - title: "Sample `expvar` usage in a Go application" - description: | - The `expvar` package exposes metrics over HTTP and is very easy to use. - Consider this minimal sample below: - - ```go - package main - - import ( - _ "expvar" - "net/http" - ) - - func main() { - http.ListenAndServe("127.0.0.1:8080", nil) - } - ``` - - When imported this way, the `expvar` package registers a HTTP handler at `/debug/vars` that - exposes Go runtime's memory statistics in JSON format. You can inspect the output by opening - the URL in your browser (or by using `wget` or `curl`). - - Sample output: - - ```json - { - "cmdline": ["./expvar-demo-binary"], - "memstats": {"Alloc":630856,"TotalAlloc":630856,"Sys":3346432,"Lookups":27, <omitted for brevity>} - } - ``` - - You can of course expose and monitor your own variables as well. - Here is a sample Go application that exposes a few custom variables: - - ```go - package main - - import ( - "expvar" - "net/http" - "runtime" - "time" - ) - - func main() { - - tick := time.NewTicker(1 * time.Second) - num_go := expvar.NewInt("runtime.goroutines") - counters := expvar.NewMap("counters") - counters.Set("cnt1", new(expvar.Int)) - counters.Set("cnt2", new(expvar.Float)) - - go http.ListenAndServe(":8080", nil) - - for { - select { - case <- tick.C: - num_go.Set(int64(runtime.NumGoroutine())) - counters.Add("cnt1", 1) - counters.AddFloat("cnt2", 1.452) - } - } - } - ``` - - Apart from the runtime memory stats, this application publishes two counters and the - number of currently running Goroutines and updates these stats every second. - configuration: - file: - name: python.d/go_expvar.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. Each JOB can be used to monitor a different Go application. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - - name: url - description: the URL and port of the expvar endpoint. Please include the whole path of the endpoint, as the expvar handler can be installed in a non-standard location. - default_value: "" - required: true - - name: user - description: If the URL is password protected, this is the username to use. - default_value: "" - required: false - - name: pass - description: If the URL is password protected, this is the password to use. - default_value: "" - required: false - - name: collect_memstats - description: Enables charts for Go runtime's memory statistics. - default_value: "" - required: false - - name: extra_charts - description: Defines extra data/charts to monitor, please see the example below. - default_value: "" - required: false - examples: - folding: - enabled: false - title: "Config" - list: - - name: Monitor a Go app1 application - description: | - The example below sets a configuration for a Go application, called `app1`. Besides the `memstats`, the application also exposes two counters and the number of currently running Goroutines and updates these stats every second. - - The `go_expvar` collector can monitor these as well with the use of the `extra_charts` configuration variable. - - The `extra_charts` variable is a YaML list of Netdata chart definitions. - Each chart definition has the following keys: - - ``` - id: Netdata chart ID - options: a key-value mapping of chart options - lines: a list of line definitions - ``` - - **Note: please do not use dots in the chart or line ID field. - See [this issue](https://github.com/netdata/netdata/pull/1902#issuecomment-284494195) for explanation.** - - Please see these two links to the official Netdata documentation for more information about the values: - - - [External plugins - charts](https://github.com/netdata/netdata/blob/master/collectors/plugins.d/README.md#chart) - - [Chart variables](https://github.com/netdata/netdata/blob/master/collectors/python.d.plugin/README.md#global-variables-order-and-chart) - - **Line definitions** - - Each chart can define multiple lines (dimensions). - A line definition is a key-value mapping of line options. - Each line can have the following options: - - ``` - # mandatory - expvar_key: the name of the expvar as present in the JSON output of /debug/vars endpoint - expvar_type: value type; supported are "float" or "int" - id: the id of this line/dimension in Netdata - - # optional - Netdata defaults are used if these options are not defined - name: '' - algorithm: absolute - multiplier: 1 - divisor: 100 if expvar_type == float, 1 if expvar_type == int - hidden: False - ``` - - Please see the following link for more information about the options and their default values: - [External plugins - dimensions](https://github.com/netdata/netdata/blob/master/collectors/plugins.d/README.md#dimension) - - Apart from top-level expvars, this plugin can also parse expvars stored in a multi-level map; - All dicts in the resulting JSON document are then flattened to one level. - Expvar names are joined together with '.' when flattening. - - Example: - - ``` - { - "counters": {"cnt1": 1042, "cnt2": 1512.9839999999983}, - "runtime.goroutines": 5 - } - ``` - - In the above case, the exported variables will be available under `runtime.goroutines`, - `counters.cnt1` and `counters.cnt2` expvar_keys. If the flattening results in a key collision, - the first defined key wins and all subsequent keys with the same name are ignored. - config: | - app1: - name : 'app1' - url : 'http://127.0.0.1:8080/debug/vars' - collect_memstats: true - extra_charts: - - id: "runtime_goroutines" - options: - name: num_goroutines - title: "runtime: number of goroutines" - units: goroutines - family: runtime - context: expvar.runtime.goroutines - chart_type: line - lines: - - {expvar_key: 'runtime.goroutines', expvar_type: int, id: runtime_goroutines} - - id: "foo_counters" - options: - name: counters - title: "some random counters" - units: awesomeness - family: counters - context: expvar.foo.counters - chart_type: line - lines: - - {expvar_key: 'counters.cnt1', expvar_type: int, id: counters_cnt1} - - {expvar_key: 'counters.cnt2', expvar_type: float, id: counters_cnt2} - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: expvar.memstats.heap - description: "memory: size of heap memory structures" - unit: "KiB" - chart_type: line - dimensions: - - name: alloc - - name: inuse - - name: expvar.memstats.stack - description: "memory: size of stack memory structures" - unit: "KiB" - chart_type: line - dimensions: - - name: inuse - - name: expvar.memstats.mspan - description: "memory: size of mspan memory structures" - unit: "KiB" - chart_type: line - dimensions: - - name: inuse - - name: expvar.memstats.mcache - description: "memory: size of mcache memory structures" - unit: "KiB" - chart_type: line - dimensions: - - name: inuse - - name: expvar.memstats.live_objects - description: "memory: number of live objects" - unit: "objects" - chart_type: line - dimensions: - - name: live - - name: expvar.memstats.sys - description: "memory: size of reserved virtual address space" - unit: "KiB" - chart_type: line - dimensions: - - name: sys - - name: expvar.memstats.gc_pauses - description: "memory: average duration of GC pauses" - unit: "ns" - chart_type: line - dimensions: - - name: avg diff --git a/collectors/python.d.plugin/haproxy/Makefile.inc b/collectors/python.d.plugin/haproxy/Makefile.inc deleted file mode 100644 index ad24deaa0..000000000 --- a/collectors/python.d.plugin/haproxy/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += haproxy/haproxy.chart.py -dist_pythonconfig_DATA += haproxy/haproxy.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += haproxy/README.md haproxy/Makefile.inc - diff --git a/collectors/python.d.plugin/haproxy/README.md b/collectors/python.d.plugin/haproxy/README.md deleted file mode 100644 index 2fa203f60..000000000 --- a/collectors/python.d.plugin/haproxy/README.md +++ /dev/null @@ -1,90 +0,0 @@ -<!-- -title: "HAProxy monitoring with Netdata" -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/haproxy/README.md" -sidebar_label: "haproxy-python.d.plugin" -learn_status: "Published" -learn_topic_type: "References" -learn_rel_path: "Integrations/Monitor/Webapps" ---> - -# HAProxy collector - -Monitors frontend and backend metrics such as bytes in, bytes out, sessions current, sessions in queue current. -And health metrics such as backend servers status (server check should be used). - -Plugin can obtain data from URL or Unix socket. - -Requirement: - -- Socket must be readable and writable by the `netdata` user. -- URL must have `stats uri <path>` present in the haproxy config, otherwise you will get HTTP 503 in the haproxy logs. - -It produces: - -1. **Frontend** family charts - - - Kilobytes in/s - - Kilobytes out/s - - Sessions current - - Sessions in queue current - -2. **Backend** family charts - - - Kilobytes in/s - - Kilobytes out/s - - Sessions current - - Sessions in queue current - -3. **Health** chart - - - number of failed servers for every backend (in DOWN state) - -## Configuration - -Edit the `python.d/haproxy.conf` configuration file using `edit-config` from the Netdata [config -directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`. - -```bash -cd /etc/netdata # Replace this path with your Netdata config directory, if different -sudo ./edit-config python.d/haproxy.conf -``` - -Sample: - -```yaml -via_url: - user: 'username' # ONLY IF stats auth is used - pass: 'password' # # ONLY IF stats auth is used - url: 'http://ip.address:port/url;csv;norefresh' -``` - -OR - -```yaml -via_socket: - socket: 'path/to/haproxy/sock' -``` - -If no configuration is given, module will fail to run. - - -### Troubleshooting - -To troubleshoot issues with the `haproxy` module, run the `python.d.plugin` with the debug option enabled. The -output will give you the output of the data collection job or error messages on why the collector isn't working. - -First, navigate to your plugins directory, usually they are located under `/usr/libexec/netdata/plugins.d/`. If that's -not the case on your system, open `netdata.conf` and look for the setting `plugins directory`. Once you're in the -plugin's directory, switch to the `netdata` user. - -```bash -cd /usr/libexec/netdata/plugins.d/ -sudo su -s /bin/bash netdata -``` - -Now you can manually run the `haproxy` module in debug mode: - -```bash -./python.d.plugin haproxy debug trace -``` - diff --git a/collectors/python.d.plugin/haproxy/metadata.yaml b/collectors/python.d.plugin/haproxy/metadata.yaml deleted file mode 100644 index 82ab37d26..000000000 --- a/collectors/python.d.plugin/haproxy/metadata.yaml +++ /dev/null @@ -1,322 +0,0 @@ -# This collector will not appear in documentation, as the go version is preferred, -# https://github.com/netdata/go.d.plugin/blob/master/modules/haproxy/README.md -# -# -# meta: -# plugin_name: python.d.plugin -# module_name: haproxy -# monitored_instance: -# name: HAProxy -# link: 'https://www.haproxy.org/' -# categories: -# - data-collection.web-servers-and-web-proxies -# icon_filename: 'haproxy.png' -# related_resources: -# integrations: -# list: [] -# info_provided_to_referring_integrations: -# description: '' -# keywords: -# - haproxy -# - tcp -# - balancer -# most_popular: false -# overview: -# data_collection: -# metrics_description: 'This collector monitors HAProxy metrics about frontend servers, backend servers, responses and more.' -# method_description: 'It connects to the HAProxy instance via URL or UNIX socket.' -# supported_platforms: -# include: [] -# exclude: [] -# multi_instance: true -# additional_permissions: -# description: '' -# default_behavior: -# auto_detection: -# description: '' -# limits: -# description: '' -# performance_impact: -# description: '' -# setup: -# prerequisites: -# list: -# - title: 'HAProxy setup for socket' -# description: 'Socket must be readable and writable by the netdata user.' -# - title: 'HAProxy setup for URL' -# description: 'URL must have `stats uri <path>` present in the haproxy config, otherwise you will get HTTP 503 in the haproxy logs.' -# configuration: -# file: -# name: python.d/haproxy.conf -# options: -# description: | -# There are 2 sections: - -# * Global variables -# * One or more JOBS that can define multiple different instances to monitor. - -# The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -# Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -# Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -# folding: -# title: "Config options" -# enabled: true -# list: -# - name: update_every -# description: Sets the default data collection frequency. -# default_value: 5 -# required: false -# - name: priority -# description: Controls the order of charts at the netdata dashboard. -# default_value: 60000 -# required: false -# - name: autodetection_retry -# description: Sets the job re-check interval in seconds. -# default_value: 0 -# required: false -# - name: penalty -# description: Indicates whether to apply penalty to update_every in case of failures. -# default_value: yes -# required: false -# - name: name -# description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. -# default_value: '' -# required: false -# - name: user -# description: Username if stats auth is used. -# default_value: '' -# required: false -# - name: pass -# description: Password if stats auth is used. -# default_value: '' -# required: false -# - name: url -# description: URL to the haproxy_stats endpoint. Also make sure the parameters `csv` and `norefresh` are provided. -# default_value: '' -# required: false -# - name: socket -# description: Unix socket path to the haproxy sock file. -# default_value: '' -# required: false -# examples: -# folding: -# enabled: true -# title: "Config" -# list: -# - name: URL method -# description: Use a URL to specify the endpoint to check for haproxy statistics. -# config: | -# via_url: -# user: 'username' # ONLY IF stats auth is used -# pass: 'password' # # ONLY IF stats auth is used -# url: 'http://ip.address:port/url;csv;norefresh' -# - name: Local socket -# description: Use a local socket to check for haproxy statistics. -# config: | -# via_socket: -# socket: 'path/to/haproxy/sock' -# troubleshooting: -# problems: -# list: [] -# alerts: -# - name: haproxy_backend_server_status -# link: https://github.com/netdata/netdata/blob/master/health/health.d/haproxy.conf -# metric: haproxy_hs.down -# info: average number of failed haproxy backend servers over the last 10 seconds -# - name: haproxy_backend_status -# link: https://github.com/netdata/netdata/blob/master/health/health.d/haproxy.conf -# metric: haproxy_hb.down -# info: average number of failed haproxy backends over the last 10 seconds -# metrics: -# folding: -# title: Metrics -# enabled: false -# description: "" -# availability: [] -# scopes: -# - name: global -# description: 'These metrics refer to the entire monitored application.' -# labels: [] -# metrics: -# - name: haproxy_f.bin -# description: Kilobytes In -# unit: "KiB/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.bout -# description: Kilobytes Out -# unit: "KiB/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.scur -# description: Sessions Active -# unit: "sessions" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.qcur -# description: Session In Queue -# unit: "sessions" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.hrsp_1xx -# description: HTTP responses with 1xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.hrsp_2xx -# description: HTTP responses with 2xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.hrsp_3xx -# description: HTTP responses with 3xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.hrsp_4xx -# description: HTTP responses with 4xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.hrsp_5xx -# description: HTTP responses with 5xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.hrsp_other -# description: HTTP responses with other codes (protocol error) -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_f.hrsp_total -# description: HTTP responses -# unit: "responses" -# chart_type: line -# dimensions: -# - name: a dimension per frontend server -# - name: haproxy_b.bin -# description: Kilobytes In -# unit: "KiB/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.bout -# description: Kilobytes Out -# unit: "KiB/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.scur -# description: Sessions Active -# unit: "sessions" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.qcur -# description: Sessions In Queue -# unit: "sessions" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.hrsp_1xx -# description: HTTP responses with 1xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.hrsp_2xx -# description: HTTP responses with 2xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.hrsp_3xx -# description: HTTP responses with 3xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.hrsp_4xx -# description: HTTP responses with 4xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.hrsp_5xx -# description: HTTP responses with 5xx code -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.hrsp_other -# description: HTTP responses with other codes (protocol error) -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.hrsp_total -# description: HTTP responses (total) -# unit: "responses/s" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.qtime -# description: The average queue time over the 1024 last requests -# unit: "milliseconds" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.ctime -# description: The average connect time over the 1024 last requests -# unit: "milliseconds" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.rtime -# description: The average response time over the 1024 last requests -# unit: "milliseconds" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_b.ttime -# description: The average total session time over the 1024 last requests -# unit: "milliseconds" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_hs.down -# description: Backend Servers In DOWN State -# unit: "failed servers" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_hs.up -# description: Backend Servers In UP State -# unit: "health servers" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy_hb.down -# description: Is Backend Failed? -# unit: "boolean" -# chart_type: line -# dimensions: -# - name: a dimension per backend server -# - name: haproxy.idle -# description: The Ratio Of Polling Time Vs Total Time -# unit: "percentage" -# chart_type: line -# dimensions: -# - name: idle diff --git a/collectors/python.d.plugin/hddtemp/Makefile.inc b/collectors/python.d.plugin/hddtemp/Makefile.inc deleted file mode 100644 index 22852b646..000000000 --- a/collectors/python.d.plugin/hddtemp/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += hddtemp/hddtemp.chart.py -dist_pythonconfig_DATA += hddtemp/hddtemp.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += hddtemp/README.md hddtemp/Makefile.inc - diff --git a/collectors/python.d.plugin/hddtemp/hddtemp.chart.py b/collectors/python.d.plugin/hddtemp/hddtemp.chart.py deleted file mode 100644 index 6427aa180..000000000 --- a/collectors/python.d.plugin/hddtemp/hddtemp.chart.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: hddtemp netdata python.d module -# Author: Pawel Krupa (paulfantom) -# Author: Ilya Mashchenko (ilyam8) -# SPDX-License-Identifier: GPL-3.0-or-later - - -import re -from copy import deepcopy - -from bases.FrameworkServices.SocketService import SocketService - -ORDER = [ - 'temperatures', -] - -CHARTS = { - 'temperatures': { - 'options': ['disks_temp', 'Disks Temperatures', 'Celsius', 'temperatures', 'hddtemp.temperatures', 'line'], - 'lines': [ - # lines are created dynamically in `check()` method - ]}} - -RE = re.compile(r'\/dev\/([^|]+)\|([^|]+)\|([0-9]+|SLP|UNK)\|') - - -class Disk: - def __init__(self, id_, name, temp): - self.id = id_.split('/')[-1] - self.name = name.replace(' ', '_') - self.temp = temp if temp.isdigit() else None - - def __repr__(self): - return self.id - - -class Service(SocketService): - def __init__(self, configuration=None, name=None): - SocketService.__init__(self, configuration=configuration, name=name) - self.order = ORDER - self.definitions = deepcopy(CHARTS) - self.do_only = self.configuration.get('devices') - self._keep_alive = False - self.request = "" - self.host = "127.0.0.1" - self.port = 7634 - - def get_disks(self): - r = self._get_raw_data() - - if not r: - return None - - m = RE.findall(r) - - if not m: - self.error("received data doesn't have needed records") - return None - - rv = [Disk(*d) for d in m] - self.debug('available disks: {0}'.format(rv)) - - if self.do_only: - return [v for v in rv if v.id in self.do_only] - return rv - - def get_data(self): - """ - Get data from TCP/IP socket - :return: dict - """ - - disks = self.get_disks() - - if not disks: - return None - - return dict((d.id, d.temp) for d in disks) - - def check(self): - """ - Parse configuration, check if hddtemp is available, and dynamically create chart lines data - :return: boolean - """ - self._parse_config() - disks = self.get_disks() - - if not disks: - return False - - for d in disks: - dim = [d.id] - self.definitions['temperatures']['lines'].append(dim) - - return True - - @staticmethod - def _check_raw_data(data): - return not bool(data) diff --git a/collectors/python.d.plugin/hddtemp/hddtemp.conf b/collectors/python.d.plugin/hddtemp/hddtemp.conf deleted file mode 100644 index b2d7aef63..000000000 --- a/collectors/python.d.plugin/hddtemp/hddtemp.conf +++ /dev/null @@ -1,95 +0,0 @@ -# netdata python.d.plugin configuration for hddtemp -# -# This file is in YaML format. Generally the format is: -# -# name: value -# -# There are 2 sections: -# - global variables -# - one or more JOBS -# -# JOBS allow you to collect values from multiple sources. -# Each source will have its own set of charts. -# -# JOB parameters have to be indented (using spaces only, example below). - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 1 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# -# Additionally to the above, hddtemp also supports the following: -# -# host: 'IP or HOSTNAME' # the host to connect to -# port: PORT # the port to connect to -# - -# By default this module will try to autodetect disks -# (autodetection works only for disk which names start with "sd"). -# However this can be overridden by setting variable `disks` to -# array of desired disks. Example for two disks: -# -# devices: -# - sda -# - sdb -# - -# ---------------------------------------------------------------------- -# AUTO-DETECTION JOBS -# only one of them will run (they have the same name) - -localhost: - name: 'local' - host: 'localhost' - port: 7634 - -localipv4: - name: 'local' - host: '127.0.0.1' - port: 7634 - -localipv6: - name: 'local' - host: '::1' - port: 7634 diff --git a/collectors/python.d.plugin/hddtemp/integrations/hdd_temperature.md b/collectors/python.d.plugin/hddtemp/integrations/hdd_temperature.md deleted file mode 100644 index 4a1504f07..000000000 --- a/collectors/python.d.plugin/hddtemp/integrations/hdd_temperature.md +++ /dev/null @@ -1,217 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/hddtemp/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/hddtemp/metadata.yaml" -sidebar_label: "HDD temperature" -learn_status: "Published" -learn_rel_path: "Data Collection/Hardware Devices and Sensors" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# HDD temperature - - -<img src="https://netdata.cloud/img/hard-drive.svg" width="150"/> - - -Plugin: python.d.plugin -Module: hddtemp - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -This collector monitors disk temperatures. - - -It uses the `hddtemp` daemon to gather the metrics. - - -This collector is only supported on the following platforms: - -- Linux - -This collector supports collecting metrics from multiple instances of this integration, including remote instances. - - -### Default Behavior - -#### Auto-Detection - -By default, this collector will attempt to connect to the `hddtemp` daemon on `127.0.0.1:7634` - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per HDD temperature instance - -These metrics refer to the entire monitored application. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| hddtemp.temperatures | a dimension per disk | Celsius | - - - -## Alerts - -There are no alerts configured by default for this integration. - - -## Setup - -### Prerequisites - -#### Run `hddtemp` in daemon mode - -You can execute `hddtemp` in TCP/IP daemon mode by using the `-d` argument. - -So running `hddtemp -d` would run the daemon, by default on port 7634. - - - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/hddtemp.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/hddtemp.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - -By default this collector will try to autodetect disks (autodetection works only for disk which names start with "sd"). However this can be overridden by setting the option `disks` to an array of desired disks. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| update_every | Sets the default data collection frequency. | 1 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | -| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | local | no | -| devices | Array of desired disks to detect, in case their name doesn't start with `sd`. | | no | -| host | The IP or HOSTNAME to connect to. | localhost | yes | -| port | The port to connect to. | 7634 | no | - -</details> - -#### Examples - -##### Basic - -A basic example configuration. - -```yaml -localhost: - name: 'local' - host: '127.0.0.1' - port: 7634 - -``` -##### Custom disk names - -An example defining the disk names to detect. - -<details><summary>Config</summary> - -```yaml -localhost: - name: 'local' - host: '127.0.0.1' - port: 7634 - devices: - - customdisk1 - - customdisk2 - -``` -</details> - -##### Multi-instance - -> **Note**: When you define multiple jobs, their names must be unique. - -Collecting metrics from local and remote instances. - - -<details><summary>Config</summary> - -```yaml -localhost: - name: 'local' - host: '127.0.0.1' - port: 7634 - -remote_job: - name : 'remote' - host : 'http://192.0.2.1:2812' - -``` -</details> - - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `hddtemp` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin hddtemp debug trace - ``` - - diff --git a/collectors/python.d.plugin/hddtemp/metadata.yaml b/collectors/python.d.plugin/hddtemp/metadata.yaml deleted file mode 100644 index d8b56fc66..000000000 --- a/collectors/python.d.plugin/hddtemp/metadata.yaml +++ /dev/null @@ -1,163 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: hddtemp - monitored_instance: - name: HDD temperature - link: https://linux.die.net/man/8/hddtemp - categories: - - data-collection.hardware-devices-and-sensors - icon_filename: "hard-drive.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - hardware - - hdd temperature - - disk temperature - - temperature - most_popular: false - overview: - data_collection: - metrics_description: | - This collector monitors disk temperatures. - method_description: | - It uses the `hddtemp` daemon to gather the metrics. - supported_platforms: - include: - - Linux - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: By default, this collector will attempt to connect to the `hddtemp` daemon on `127.0.0.1:7634` - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Run `hddtemp` in daemon mode - description: | - You can execute `hddtemp` in TCP/IP daemon mode by using the `-d` argument. - - So running `hddtemp -d` would run the daemon, by default on port 7634. - configuration: - file: - name: "python.d/hddtemp.conf" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - By default this collector will try to autodetect disks (autodetection works only for disk which names start with "sd"). However this can be overridden by setting the option `disks` to an array of desired disks. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 1 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: > - Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "local" - required: false - - name: devices - description: Array of desired disks to detect, in case their name doesn't start with `sd`. - default_value: "" - required: false - - name: host - description: The IP or HOSTNAME to connect to. - default_value: "localhost" - required: true - - name: port - description: The port to connect to. - default_value: 7634 - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic - description: A basic example configuration. - folding: - enabled: false - config: | - localhost: - name: 'local' - host: '127.0.0.1' - port: 7634 - - name: Custom disk names - description: An example defining the disk names to detect. - config: | - localhost: - name: 'local' - host: '127.0.0.1' - port: 7634 - devices: - - customdisk1 - - customdisk2 - - name: Multi-instance - description: | - > **Note**: When you define multiple jobs, their names must be unique. - - Collecting metrics from local and remote instances. - config: | - localhost: - name: 'local' - host: '127.0.0.1' - port: 7634 - - remote_job: - name : 'remote' - host : 'http://192.0.2.1:2812' - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: hddtemp.temperatures - description: Disk Temperatures - unit: "Celsius" - chart_type: line - dimensions: - - name: a dimension per disk diff --git a/collectors/python.d.plugin/hpssa/Makefile.inc b/collectors/python.d.plugin/hpssa/Makefile.inc deleted file mode 100644 index 1c04aa49c..000000000 --- a/collectors/python.d.plugin/hpssa/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += hpssa/hpssa.chart.py -dist_pythonconfig_DATA += hpssa/hpssa.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += hpssa/README.md hpssa/Makefile.inc - diff --git a/collectors/python.d.plugin/hpssa/README.md b/collectors/python.d.plugin/hpssa/README.md deleted file mode 120000 index 82802d8b4..000000000 --- a/collectors/python.d.plugin/hpssa/README.md +++ /dev/null @@ -1 +0,0 @@ -integrations/hp_smart_storage_arrays.md
\ No newline at end of file diff --git a/collectors/python.d.plugin/hpssa/hpssa.chart.py b/collectors/python.d.plugin/hpssa/hpssa.chart.py deleted file mode 100644 index 66be00837..000000000 --- a/collectors/python.d.plugin/hpssa/hpssa.chart.py +++ /dev/null @@ -1,396 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: hpssa netdata python.d module -# Author: Peter Gnodde (gnoddep) -# SPDX-License-Identifier: GPL-3.0-or-later - -import os -import re -from copy import deepcopy - -from bases.FrameworkServices.ExecutableService import ExecutableService -from bases.collection import find_binary - -disabled_by_default = True -update_every = 5 - -ORDER = [ - 'ctrl_status', - 'ctrl_temperature', - 'ld_status', - 'pd_status', - 'pd_temperature', -] - -CHARTS = { - 'ctrl_status': { - 'options': [ - None, - 'Status 1 is OK, Status 0 is not OK', - 'Status', - 'Controller', - 'hpssa.ctrl_status', - 'line' - ], - 'lines': [] - }, - 'ctrl_temperature': { - 'options': [ - None, - 'Temperature', - 'Celsius', - 'Controller', - 'hpssa.ctrl_temperature', - 'line' - ], - 'lines': [] - }, - 'ld_status': { - 'options': [ - None, - 'Status 1 is OK, Status 0 is not OK', - 'Status', - 'Logical drives', - 'hpssa.ld_status', - 'line' - ], - 'lines': [] - }, - 'pd_status': { - 'options': [ - None, - 'Status 1 is OK, Status 0 is not OK', - 'Status', - 'Physical drives', - 'hpssa.pd_status', - 'line' - ], - 'lines': [] - }, - 'pd_temperature': { - 'options': [ - None, - 'Temperature', - 'Celsius', - 'Physical drives', - 'hpssa.pd_temperature', - 'line' - ], - 'lines': [] - } -} - -adapter_regex = re.compile(r'^(?P<adapter_type>.+) in Slot (?P<slot>\d+)') -ignored_sections_regex = re.compile( - r''' - ^ - Physical[ ]Drives - | None[ ]attached - | (?:Expander|Enclosure|SEP|Port[ ]Name:)[ ].+ - | .+[ ]at[ ]Port[ ]\S+,[ ]Box[ ]\d+,[ ].+ - | Mirror[ ]Group[ ]\d+: - $ - ''', - re.X -) -mirror_group_regex = re.compile(r'^Mirror Group \d+:$') -disk_partition_regex = re.compile(r'^Disk Partition Information$') -array_regex = re.compile(r'^Array: (?P<id>[A-Z]+)$') -drive_regex = re.compile( - r''' - ^ - Logical[ ]Drive:[ ](?P<logical_drive_id>\d+) - | physicaldrive[ ](?P<fqn>[^:]+:\d+:\d+) - $ - ''', - re.X -) -key_value_regex = re.compile(r'^(?P<key>[^:]+): ?(?P<value>.*)$') -ld_status_regex = re.compile(r'^Status: (?P<status>[^,]+)(?:, (?P<percentage>[0-9.]+)% complete)?$') -error_match = re.compile(r'Error:') - - -class HPSSAException(Exception): - pass - - -class HPSSA(object): - def __init__(self, lines): - self.lines = [line.strip() for line in lines if line.strip()] - self.current_line = 0 - self.adapters = [] - self.parse() - - def __iter__(self): - return self - - def __next__(self): - if self.current_line == len(self.lines): - raise StopIteration - - line = self.lines[self.current_line] - self.current_line += 1 - - return line - - def next(self): - """ - This is for Python 2.7 compatibility - """ - return self.__next__() - - def rewind(self): - self.current_line = max(self.current_line - 1, 0) - - @staticmethod - def match_any(line, *regexes): - return any([regex.match(line) for regex in regexes]) - - def parse(self): - for line in self: - match = adapter_regex.match(line) - if match: - self.adapters.append(self.parse_adapter(**match.groupdict())) - - def parse_adapter(self, slot, adapter_type): - adapter = { - 'slot': int(slot), - 'type': adapter_type, - - 'controller': { - 'status': None, - 'temperature': None, - }, - 'cache': { - 'present': False, - 'status': None, - 'temperature': None, - }, - 'battery': { - 'status': None, - 'count': 0, - }, - - 'logical_drives': [], - 'physical_drives': [], - } - - for line in self: - if error_match.match(line): - raise HPSSAException('Error: {}'.format(line)) - elif adapter_regex.match(line): - self.rewind() - break - elif array_regex.match(line): - self.parse_array(adapter) - elif line in ('Unassigned', 'unassigned') or line == 'HBA Drives': - self.parse_physical_drives(adapter) - elif ignored_sections_regex.match(line): - self.parse_ignored_section() - else: - match = key_value_regex.match(line) - if match: - key, value = match.group('key', 'value') - if key == 'Controller Status': - adapter['controller']['status'] = value == 'OK' - elif key == 'Controller Temperature (C)': - adapter['controller']['temperature'] = int(value) - elif key == 'Cache Board Present': - adapter['cache']['present'] = value == 'True' - elif key == 'Cache Status': - adapter['cache']['status'] = value == 'OK' - elif key == 'Cache Module Temperature (C)': - adapter['cache']['temperature'] = int(value) - elif key == 'Battery/Capacitor Count': - adapter['battery']['count'] = int(value) - elif key == 'Battery/Capacitor Status': - adapter['battery']['status'] = value == 'OK' - else: - raise HPSSAException('Cannot parse line: {}'.format(line)) - - return adapter - - def parse_array(self, adapter): - for line in self: - if HPSSA.match_any(line, adapter_regex, array_regex, ignored_sections_regex): - self.rewind() - break - - match = drive_regex.match(line) - if match: - data = match.groupdict() - if data['logical_drive_id']: - self.parse_logical_drive(adapter, int(data['logical_drive_id'])) - else: - self.parse_physical_drive(adapter, data['fqn']) - elif not key_value_regex.match(line): - self.rewind() - break - - def parse_physical_drives(self, adapter): - for line in self: - match = drive_regex.match(line) - if match: - self.parse_physical_drive(adapter, match.group('fqn')) - else: - self.rewind() - break - - def parse_logical_drive(self, adapter, logical_drive_id): - ld = { - 'id': logical_drive_id, - 'status': None, - 'status_complete': None, - } - - for line in self: - if HPSSA.match_any(line, mirror_group_regex, disk_partition_regex): - self.parse_ignored_section() - continue - - match = ld_status_regex.match(line) - if match: - ld['status'] = match.group('status') == 'OK' - - if match.group('percentage'): - ld['status_complete'] = float(match.group('percentage')) / 100 - elif HPSSA.match_any(line, adapter_regex, array_regex, drive_regex, ignored_sections_regex) \ - or not key_value_regex.match(line): - self.rewind() - break - - adapter['logical_drives'].append(ld) - - def parse_physical_drive(self, adapter, fqn): - pd = { - 'fqn': fqn, - 'status': None, - 'temperature': None, - } - - for line in self: - if HPSSA.match_any(line, adapter_regex, array_regex, drive_regex, ignored_sections_regex): - self.rewind() - break - - match = key_value_regex.match(line) - if match: - key, value = match.group('key', 'value') - if key == 'Status': - pd['status'] = value == 'OK' - elif key == 'Current Temperature (C)': - pd['temperature'] = int(value) - else: - self.rewind() - break - - adapter['physical_drives'].append(pd) - - def parse_ignored_section(self): - for line in self: - if HPSSA.match_any(line, adapter_regex, array_regex, drive_regex, ignored_sections_regex) \ - or not key_value_regex.match(line): - self.rewind() - break - - -class Service(ExecutableService): - def __init__(self, configuration=None, name=None): - super(Service, self).__init__(configuration=configuration, name=name) - self.order = ORDER - self.definitions = deepcopy(CHARTS) - self.ssacli_path = self.configuration.get('ssacli_path', 'ssacli') - self.use_sudo = self.configuration.get('use_sudo', True) - self.cmd = [] - - def get_adapters(self): - try: - adapters = HPSSA(self._get_raw_data(command=self.cmd)).adapters - if not adapters: - # If no adapters are returned, run the command again but capture stderr - err = self._get_raw_data(command=self.cmd, stderr=True) - if err: - raise HPSSAException('Error executing cmd {}: {}'.format(' '.join(self.cmd), '\n'.join(err))) - return adapters - except HPSSAException as ex: - self.error(ex) - return [] - - def check(self): - if not os.path.isfile(self.ssacli_path): - ssacli_path = find_binary(self.ssacli_path) - if ssacli_path: - self.ssacli_path = ssacli_path - else: - self.error('Cannot locate "{}" binary'.format(self.ssacli_path)) - return False - - if self.use_sudo: - sudo = find_binary('sudo') - if not sudo: - self.error('Cannot locate "{}" binary'.format('sudo')) - return False - - allowed = self._get_raw_data(command=[sudo, '-n', '-l', self.ssacli_path]) - if not allowed or allowed[0].strip() != os.path.realpath(self.ssacli_path): - self.error('Not allowed to run sudo for command {}'.format(self.ssacli_path)) - return False - - self.cmd = [sudo, '-n'] - - self.cmd.extend([self.ssacli_path, 'ctrl', 'all', 'show', 'config', 'detail']) - self.info('Command: {}'.format(self.cmd)) - - adapters = self.get_adapters() - - self.info('Discovered adapters: {}'.format([adapter['type'] for adapter in adapters])) - if not adapters: - self.error('No adapters discovered') - return False - - return True - - def get_data(self): - netdata = {} - - for adapter in self.get_adapters(): - status_key = '{}_status'.format(adapter['slot']) - temperature_key = '{}_temperature'.format(adapter['slot']) - ld_key = 'ld_{}_'.format(adapter['slot']) - - data = { - 'ctrl_status': { - 'ctrl_' + status_key: adapter['controller']['status'], - 'cache_' + status_key: adapter['cache']['present'] and adapter['cache']['status'], - 'battery_' + status_key: - adapter['battery']['status'] if adapter['battery']['count'] > 0 else None - }, - - 'ctrl_temperature': { - 'ctrl_' + temperature_key: adapter['controller']['temperature'], - 'cache_' + temperature_key: adapter['cache']['temperature'], - }, - - 'ld_status': { - ld_key + '{}_status'.format(ld['id']): ld['status'] for ld in adapter['logical_drives'] - }, - - 'pd_status': {}, - 'pd_temperature': {}, - } - - for pd in adapter['physical_drives']: - pd_key = 'pd_{}_{}'.format(adapter['slot'], pd['fqn']) - data['pd_status'][pd_key + '_status'] = pd['status'] - data['pd_temperature'][pd_key + '_temperature'] = pd['temperature'] - - for chart, dimension_data in data.items(): - for dimension_id, value in dimension_data.items(): - if value is None: - continue - - if dimension_id not in self.charts[chart]: - self.charts[chart].add_dimension([dimension_id]) - - netdata[dimension_id] = value - - return netdata diff --git a/collectors/python.d.plugin/hpssa/hpssa.conf b/collectors/python.d.plugin/hpssa/hpssa.conf deleted file mode 100644 index cc50c9836..000000000 --- a/collectors/python.d.plugin/hpssa/hpssa.conf +++ /dev/null @@ -1,61 +0,0 @@ -# netdata python.d.plugin configuration for hpssa -# -# This file is in YaML format. Generally the format is: -# -# name: value -# - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 5 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 5 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# -# Additionally to the above, hpssa also supports the following: -# -# ssacli_path: /usr/sbin/ssacli # The path to the ssacli executable -# use_sudo: True # Whether to use sudo or not -# ---------------------------------------------------------------------- - -# ssacli_path: /usr/sbin/ssacli -# use_sudo: True diff --git a/collectors/python.d.plugin/hpssa/integrations/hp_smart_storage_arrays.md b/collectors/python.d.plugin/hpssa/integrations/hp_smart_storage_arrays.md deleted file mode 100644 index d46cc9065..000000000 --- a/collectors/python.d.plugin/hpssa/integrations/hp_smart_storage_arrays.md +++ /dev/null @@ -1,205 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/hpssa/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/hpssa/metadata.yaml" -sidebar_label: "HP Smart Storage Arrays" -learn_status: "Published" -learn_rel_path: "Data Collection/Storage, Mount Points and Filesystems" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# HP Smart Storage Arrays - - -<img src="https://netdata.cloud/img/hp.svg" width="150"/> - - -Plugin: python.d.plugin -Module: hpssa - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -This collector monitors HP Smart Storage Arrays metrics about operational statuses and temperatures. - -It uses the command line tool `ssacli`. The exact command used is `sudo -n ssacli ctrl all show config detail` - -This collector is supported on all platforms. - -This collector only supports collecting metrics from a single instance of this integration. - - -### Default Behavior - -#### Auto-Detection - -If no configuration is provided, the collector will try to execute the `ssacli` binary. - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per HP Smart Storage Arrays instance - -These metrics refer to the entire monitored application. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| hpssa.ctrl_status | ctrl_{adapter slot}_status, cache_{adapter slot}_status, battery_{adapter slot}_status per adapter | Status | -| hpssa.ctrl_temperature | ctrl_{adapter slot}_temperature, cache_{adapter slot}_temperature per adapter | Celsius | -| hpssa.ld_status | a dimension per logical drive | Status | -| hpssa.pd_status | a dimension per physical drive | Status | -| hpssa.pd_temperature | a dimension per physical drive | Celsius | - - - -## Alerts - -There are no alerts configured by default for this integration. - - -## Setup - -### Prerequisites - -#### Enable the hpssa collector - -The `hpssa` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. - -```bash -cd /etc/netdata # Replace this path with your Netdata config directory, if different -sudo ./edit-config python.d.conf -``` - -Change the value of the `hpssa` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/configure/start-stop-restart.md) for your system. - - -#### Allow user netdata to execute `ssacli` as root. - -This module uses `ssacli`, which can only be executed by root. It uses `sudo` and assumes that it is configured such that the `netdata` user can execute `ssacli` as root without a password. - -- Add to your `/etc/sudoers` file: - -`which ssacli` shows the full path to the binary. - -```bash -netdata ALL=(root) NOPASSWD: /path/to/ssacli -``` - -- Reset Netdata's systemd - unit [CapabilityBoundingSet](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Capabilities) (Linux - distributions with systemd) - -The default CapabilityBoundingSet doesn't allow using `sudo`, and is quite strict in general. Resetting is not optimal, but a next-best solution given the inability to execute `ssacli` using `sudo`. - -As the `root` user, do the following: - -```cmd -mkdir /etc/systemd/system/netdata.service.d -echo -e '[Service]\nCapabilityBoundingSet=~' | tee /etc/systemd/system/netdata.service.d/unset-capability-bounding-set.conf -systemctl daemon-reload -systemctl restart netdata.service -``` - - - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/hpssa.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/hpssa.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| update_every | Sets the default data collection frequency. | 5 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | -| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no | -| ssacli_path | Path to the `ssacli` command line utility. Configure this if `ssacli` is not in the $PATH | | no | -| use_sudo | Whether or not to use `sudo` to execute `ssacli` | True | no | - -</details> - -#### Examples - -##### Local simple config - -A basic configuration, specyfing the path to `ssacli` - -```yaml -local: - ssacli_path: /usr/sbin/ssacli - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `hpssa` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin hpssa debug trace - ``` - - diff --git a/collectors/python.d.plugin/hpssa/metadata.yaml b/collectors/python.d.plugin/hpssa/metadata.yaml deleted file mode 100644 index 7871cc276..000000000 --- a/collectors/python.d.plugin/hpssa/metadata.yaml +++ /dev/null @@ -1,185 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: hpssa - monitored_instance: - name: HP Smart Storage Arrays - link: 'https://buy.hpe.com/us/en/software/server-management-software/server-management-software/smart-array-management-software/hpe-smart-storage-administrator/p/5409020' - categories: - - data-collection.storage-mount-points-and-filesystems - icon_filename: 'hp.svg' - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: '' - keywords: - - storage - - hp - - hpssa - - array - most_popular: false - overview: - data_collection: - metrics_description: 'This collector monitors HP Smart Storage Arrays metrics about operational statuses and temperatures.' - method_description: 'It uses the command line tool `ssacli`. The exact command used is `sudo -n ssacli ctrl all show config detail`' - supported_platforms: - include: [] - exclude: [] - multi_instance: false - additional_permissions: - description: '' - default_behavior: - auto_detection: - description: 'If no configuration is provided, the collector will try to execute the `ssacli` binary.' - limits: - description: '' - performance_impact: - description: '' - setup: - prerequisites: - list: - - title: 'Enable the hpssa collector' - description: | - The `hpssa` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. - - ```bash - cd /etc/netdata # Replace this path with your Netdata config directory, if different - sudo ./edit-config python.d.conf - ``` - - Change the value of the `hpssa` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/configure/start-stop-restart.md) for your system. - - title: 'Allow user netdata to execute `ssacli` as root.' - description: | - This module uses `ssacli`, which can only be executed by root. It uses `sudo` and assumes that it is configured such that the `netdata` user can execute `ssacli` as root without a password. - - - Add to your `/etc/sudoers` file: - - `which ssacli` shows the full path to the binary. - - ```bash - netdata ALL=(root) NOPASSWD: /path/to/ssacli - ``` - - - Reset Netdata's systemd - unit [CapabilityBoundingSet](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Capabilities) (Linux - distributions with systemd) - - The default CapabilityBoundingSet doesn't allow using `sudo`, and is quite strict in general. Resetting is not optimal, but a next-best solution given the inability to execute `ssacli` using `sudo`. - - As the `root` user, do the following: - - ```cmd - mkdir /etc/systemd/system/netdata.service.d - echo -e '[Service]\nCapabilityBoundingSet=~' | tee /etc/systemd/system/netdata.service.d/unset-capability-bounding-set.conf - systemctl daemon-reload - systemctl restart netdata.service - ``` - configuration: - file: - name: python.d/hpssa.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: '' - required: false - - name: ssacli_path - description: Path to the `ssacli` command line utility. Configure this if `ssacli` is not in the $PATH - default_value: '' - required: false - - name: use_sudo - description: Whether or not to use `sudo` to execute `ssacli` - default_value: 'True' - required: false - examples: - folding: - enabled: false - title: "Config" - list: - - name: Local simple config - description: A basic configuration, specyfing the path to `ssacli` - folding: - enabled: false - config: | - local: - ssacli_path: /usr/sbin/ssacli - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: hpssa.ctrl_status - description: Status 1 is OK, Status 0 is not OK - unit: "Status" - chart_type: line - dimensions: - - name: ctrl_{adapter slot}_status - - name: cache_{adapter slot}_status - - name: battery_{adapter slot}_status per adapter - - name: hpssa.ctrl_temperature - description: Temperature - unit: "Celsius" - chart_type: line - dimensions: - - name: ctrl_{adapter slot}_temperature - - name: cache_{adapter slot}_temperature per adapter - - name: hpssa.ld_status - description: Status 1 is OK, Status 0 is not OK - unit: "Status" - chart_type: line - dimensions: - - name: a dimension per logical drive - - name: hpssa.pd_status - description: Status 1 is OK, Status 0 is not OK - unit: "Status" - chart_type: line - dimensions: - - name: a dimension per physical drive - - name: hpssa.pd_temperature - description: Temperature - unit: "Celsius" - chart_type: line - dimensions: - - name: a dimension per physical drive diff --git a/collectors/python.d.plugin/icecast/Makefile.inc b/collectors/python.d.plugin/icecast/Makefile.inc deleted file mode 100644 index cb7c6fa0e..000000000 --- a/collectors/python.d.plugin/icecast/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += icecast/icecast.chart.py -dist_pythonconfig_DATA += icecast/icecast.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += icecast/README.md icecast/Makefile.inc - diff --git a/collectors/python.d.plugin/ipfs/Makefile.inc b/collectors/python.d.plugin/ipfs/Makefile.inc deleted file mode 100644 index 68458cb38..000000000 --- a/collectors/python.d.plugin/ipfs/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += ipfs/ipfs.chart.py -dist_pythonconfig_DATA += ipfs/ipfs.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += ipfs/README.md ipfs/Makefile.inc - diff --git a/collectors/python.d.plugin/ipfs/metadata.yaml b/collectors/python.d.plugin/ipfs/metadata.yaml deleted file mode 100644 index dbc421c90..000000000 --- a/collectors/python.d.plugin/ipfs/metadata.yaml +++ /dev/null @@ -1,172 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: ipfs - monitored_instance: - name: IPFS - link: "https://ipfs.tech/" - categories: - - data-collection.storage-mount-points-and-filesystems - icon_filename: "ipfs.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: [] - most_popular: false - overview: - data_collection: - metrics_description: "This collector monitors IPFS server metrics about its quality and performance." - method_description: "It connects to an http endpoint of the IPFS server to collect the metrics" - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "If the endpoint is accessible by the Agent, netdata will autodetect it" - limits: - description: | - Calls to the following endpoints are disabled due to IPFS bugs: - - /api/v0/stats/repo (https://github.com/ipfs/go-ipfs/issues/3874) - /api/v0/pin/ls (https://github.com/ipfs/go-ipfs/issues/7528) - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: "python.d/ipfs.conf" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: The JOB's name as it will appear at the dashboard (by default is the job_name) - default_value: job_name - required: false - - name: url - description: URL to the IPFS API - default_value: no - required: true - - name: repoapi - description: Collect repo metrics. - default_value: no - required: false - - name: pinapi - description: Set status of IPFS pinned object polling. - default_value: no - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic (default out-of-the-box) - description: A basic example configuration, one job will run at a time. Autodetect mechanism uses it by default. - folding: - enabled: false - config: | - localhost: - name: 'local' - url: 'http://localhost:5001' - repoapi: no - pinapi: no - - name: Multi-instance - description: | - > **Note**: When you define multiple jobs, their names must be unique. - - Collecting metrics from local and remote instances. - config: | - localhost: - name: 'local' - url: 'http://localhost:5001' - repoapi: no - pinapi: no - - remote_host: - name: 'remote' - url: 'http://192.0.2.1:5001' - repoapi: no - pinapi: no - troubleshooting: - problems: - list: [] - alerts: - - name: ipfs_datastore_usage - link: https://github.com/netdata/netdata/blob/master/health/health.d/ipfs.conf - metric: ipfs.repo_size - info: IPFS datastore utilization - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: ipfs.bandwidth - description: IPFS Bandwidth - unit: "kilobits/s" - chart_type: line - dimensions: - - name: in - - name: out - - name: ipfs.peers - description: IPFS Peers - unit: "peers" - chart_type: line - dimensions: - - name: peers - - name: ipfs.repo_size - description: IPFS Repo Size - unit: "GiB" - chart_type: area - dimensions: - - name: avail - - name: size - - name: ipfs.repo_objects - description: IPFS Repo Objects - unit: "objects" - chart_type: line - dimensions: - - name: objects - - name: pinned - - name: recursive_pins diff --git a/collectors/python.d.plugin/litespeed/Makefile.inc b/collectors/python.d.plugin/litespeed/Makefile.inc deleted file mode 100644 index 5dd645020..000000000 --- a/collectors/python.d.plugin/litespeed/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += litespeed/litespeed.chart.py -dist_pythonconfig_DATA += litespeed/litespeed.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += litespeed/README.md litespeed/Makefile.inc - diff --git a/collectors/python.d.plugin/litespeed/integrations/litespeed.md b/collectors/python.d.plugin/litespeed/integrations/litespeed.md deleted file mode 100644 index 87f2d0b12..000000000 --- a/collectors/python.d.plugin/litespeed/integrations/litespeed.md +++ /dev/null @@ -1,170 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/litespeed/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/litespeed/metadata.yaml" -sidebar_label: "Litespeed" -learn_status: "Published" -learn_rel_path: "Data Collection/Web Servers and Web Proxies" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# Litespeed - - -<img src="https://netdata.cloud/img/litespeed.svg" width="150"/> - - -Plugin: python.d.plugin -Module: litespeed - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -Examine Litespeed metrics for insights into web server operations. Analyze request rates, response times, and error rates for efficient web service delivery. - -The collector uses the statistics under /tmp/lshttpd to gather the metrics. - -This collector is supported on all platforms. - -This collector only supports collecting metrics from a single instance of this integration. - - -### Default Behavior - -#### Auto-Detection - -If no configuration is present, the collector will attempt to read files under /tmp/lshttpd/. - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per Litespeed instance - -These metrics refer to the entire monitored application. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| litespeed.net_throughput | in, out | kilobits/s | -| litespeed.net_throughput | in, out | kilobits/s | -| litespeed.connections | free, used | conns | -| litespeed.connections | free, used | conns | -| litespeed.requests | requests | requests/s | -| litespeed.requests_processing | processing | requests | -| litespeed.cache | hits | hits/s | -| litespeed.cache | hits | hits/s | -| litespeed.static | hits | hits/s | - - - -## Alerts - -There are no alerts configured by default for this integration. - - -## Setup - -### Prerequisites - -No action required. - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/litespeed.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/litespeed.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| update_every | Sets the default data collection frequency. | 5 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | -| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no | -| path | Use a different path than the default, where the lightspeed stats files reside. | /tmp/lshttpd/ | no | - -</details> - -#### Examples - -##### Set the path to statistics - -Change the path for the litespeed stats files - -```yaml -localhost: - name: 'local' - path: '/tmp/lshttpd' - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `litespeed` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin litespeed debug trace - ``` - - diff --git a/collectors/python.d.plugin/litespeed/litespeed.chart.py b/collectors/python.d.plugin/litespeed/litespeed.chart.py deleted file mode 100644 index 7ef8189ea..000000000 --- a/collectors/python.d.plugin/litespeed/litespeed.chart.py +++ /dev/null @@ -1,188 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: litespeed netdata python.d module -# Author: Ilya Mashchenko (ilyam8) -# SPDX-License-Identifier: GPL-3.0-or-later - -import glob -import os -import re -from collections import namedtuple - -from bases.FrameworkServices.SimpleService import SimpleService - -update_every = 10 - -# charts order (can be overridden if you want less charts, or different order) -ORDER = [ - 'net_throughput_http', # net throughput - 'net_throughput_https', # net throughput - 'connections_http', # connections - 'connections_https', # connections - 'requests', # requests - 'requests_processing', # requests - 'pub_cache_hits', # cache - 'private_cache_hits', # cache - 'static_hits', # static -] - -CHARTS = { - 'net_throughput_http': { - 'options': [None, 'Network Throughput HTTP', 'kilobits/s', 'net throughput', - 'litespeed.net_throughput', 'area'], - 'lines': [ - ['bps_in', 'in', 'absolute'], - ['bps_out', 'out', 'absolute', -1] - ] - }, - 'net_throughput_https': { - 'options': [None, 'Network Throughput HTTPS', 'kilobits/s', 'net throughput', - 'litespeed.net_throughput', 'area'], - 'lines': [ - ['ssl_bps_in', 'in', 'absolute'], - ['ssl_bps_out', 'out', 'absolute', -1] - ] - }, - 'connections_http': { - 'options': [None, 'Connections HTTP', 'conns', 'connections', 'litespeed.connections', 'stacked'], - 'lines': [ - ['conn_free', 'free', 'absolute'], - ['conn_used', 'used', 'absolute'] - ] - }, - 'connections_https': { - 'options': [None, 'Connections HTTPS', 'conns', 'connections', 'litespeed.connections', 'stacked'], - 'lines': [ - ['ssl_conn_free', 'free', 'absolute'], - ['ssl_conn_used', 'used', 'absolute'] - ] - }, - 'requests': { - 'options': [None, 'Requests', 'requests/s', 'requests', 'litespeed.requests', 'line'], - 'lines': [ - ['requests', None, 'absolute', 1, 100] - ] - }, - 'requests_processing': { - 'options': [None, 'Requests In Processing', 'requests', 'requests', 'litespeed.requests_processing', 'line'], - 'lines': [ - ['requests_processing', 'processing', 'absolute'] - ] - }, - 'pub_cache_hits': { - 'options': [None, 'Public Cache Hits', 'hits/s', 'cache', 'litespeed.cache', 'line'], - 'lines': [ - ['pub_cache_hits', 'hits', 'absolute', 1, 100] - ] - }, - 'private_cache_hits': { - 'options': [None, 'Private Cache Hits', 'hits/s', 'cache', 'litespeed.cache', 'line'], - 'lines': [ - ['private_cache_hits', 'hits', 'absolute', 1, 100] - ] - }, - 'static_hits': { - 'options': [None, 'Static Hits', 'hits/s', 'static', 'litespeed.static', 'line'], - 'lines': [ - ['static_hits', 'hits', 'absolute', 1, 100] - ] - } -} - -t = namedtuple('T', ['key', 'id', 'mul']) - -T = [ - t('BPS_IN', 'bps_in', 8), - t('BPS_OUT', 'bps_out', 8), - t('SSL_BPS_IN', 'ssl_bps_in', 8), - t('SSL_BPS_OUT', 'ssl_bps_out', 8), - t('REQ_PER_SEC', 'requests', 100), - t('REQ_PROCESSING', 'requests_processing', 1), - t('PUB_CACHE_HITS_PER_SEC', 'pub_cache_hits', 100), - t('PRIVATE_CACHE_HITS_PER_SEC', 'private_cache_hits', 100), - t('STATIC_HITS_PER_SEC', 'static_hits', 100), - t('PLAINCONN', 'conn_used', 1), - t('AVAILCONN', 'conn_free', 1), - t('SSLCONN', 'ssl_conn_used', 1), - t('AVAILSSL', 'ssl_conn_free', 1), -] - -RE = re.compile(r'([A-Z_]+): ([0-9.]+)') - -ZERO_DATA = { - 'bps_in': 0, - 'bps_out': 0, - 'ssl_bps_in': 0, - 'ssl_bps_out': 0, - 'requests': 0, - 'requests_processing': 0, - 'pub_cache_hits': 0, - 'private_cache_hits': 0, - 'static_hits': 0, - 'conn_used': 0, - 'conn_free': 0, - 'ssl_conn_used': 0, - 'ssl_conn_free': 0, -} - - -class Service(SimpleService): - def __init__(self, configuration=None, name=None): - SimpleService.__init__(self, configuration=configuration, name=name) - self.order = ORDER - self.definitions = CHARTS - self.path = self.configuration.get('path', '/tmp/lshttpd/') - self.files = list() - - def check(self): - if not self.path: - self.error('"path" not specified') - return False - - fs = glob.glob(os.path.join(self.path, '.rtreport*')) - - if not fs: - self.error('"{0}" has no "rtreport" files or dir is not readable'.format(self.path)) - return None - - self.debug('stats files:', fs) - - for f in fs: - if not is_readable_file(f): - self.error('{0} is not readable'.format(f)) - continue - self.files.append(f) - - return bool(self.files) - - def get_data(self): - """ - Format data received from http request - :return: dict - """ - data = dict(ZERO_DATA) - - for f in self.files: - try: - with open(f) as b: - lines = b.readlines() - except (OSError, IOError) as err: - self.error(err) - return None - else: - parse_file(data, lines) - - return data - - -def parse_file(data, lines): - for line in lines: - if not line.startswith(('BPS_IN:', 'MAXCONN:', 'PLAINCONN:', 'REQ_RATE []:')): - continue - m = dict(RE.findall(line)) - for v in T: - if v.key in m: - data[v.id] += float(m[v.key]) * v.mul - - -def is_readable_file(v): - return os.path.isfile(v) and os.access(v, os.R_OK) diff --git a/collectors/python.d.plugin/litespeed/litespeed.conf b/collectors/python.d.plugin/litespeed/litespeed.conf deleted file mode 100644 index a326e184e..000000000 --- a/collectors/python.d.plugin/litespeed/litespeed.conf +++ /dev/null @@ -1,72 +0,0 @@ -# netdata python.d.plugin configuration for litespeed -# -# This file is in YaML format. Generally the format is: -# -# name: value -# -# There are 2 sections: -# - global variables -# - one or more JOBS -# -# JOBS allow you to collect values from multiple sources. -# Each source will have its own set of charts. -# -# JOB parameters have to be indented (using spaces only, example below). - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 1 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# -# Additionally to the above, lightspeed also supports the following: -# -# path: 'PATH' # path to lightspeed stats files directory -# -# ---------------------------------------------------------------------- -# AUTO-DETECTION JOBS -# only one of them will run (they have the same name) - -localhost: - name : 'local' - path : '/tmp/lshttpd/' diff --git a/collectors/python.d.plugin/litespeed/metadata.yaml b/collectors/python.d.plugin/litespeed/metadata.yaml deleted file mode 100644 index 400f3a7f6..000000000 --- a/collectors/python.d.plugin/litespeed/metadata.yaml +++ /dev/null @@ -1,168 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: litespeed - monitored_instance: - name: Litespeed - link: "https://www.litespeedtech.com/products/litespeed-web-server" - categories: - - data-collection.web-servers-and-web-proxies - icon_filename: "litespeed.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - litespeed - - web - - server - most_popular: false - overview: - data_collection: - metrics_description: "Examine Litespeed metrics for insights into web server operations. Analyze request rates, response times, and error rates for efficient web service delivery." - method_description: "The collector uses the statistics under /tmp/lshttpd to gather the metrics." - supported_platforms: - include: [] - exclude: [] - multi_instance: false - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "If no configuration is present, the collector will attempt to read files under /tmp/lshttpd/." - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: python.d/litespeed.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - - name: path - description: Use a different path than the default, where the lightspeed stats files reside. - default_value: "/tmp/lshttpd/" - required: false - examples: - folding: - enabled: false - title: "Config" - list: - - name: Set the path to statistics - description: Change the path for the litespeed stats files - config: | - localhost: - name: 'local' - path: '/tmp/lshttpd' - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: litespeed.net_throughput - description: Network Throughput HTTP - unit: "kilobits/s" - chart_type: area - dimensions: - - name: in - - name: out - - name: litespeed.net_throughput - description: Network Throughput HTTPS - unit: "kilobits/s" - chart_type: area - dimensions: - - name: in - - name: out - - name: litespeed.connections - description: Connections HTTP - unit: "conns" - chart_type: stacked - dimensions: - - name: free - - name: used - - name: litespeed.connections - description: Connections HTTPS - unit: "conns" - chart_type: stacked - dimensions: - - name: free - - name: used - - name: litespeed.requests - description: Requests - unit: "requests/s" - chart_type: line - dimensions: - - name: requests - - name: litespeed.requests_processing - description: Requests In Processing - unit: "requests" - chart_type: line - dimensions: - - name: processing - - name: litespeed.cache - description: Public Cache Hits - unit: "hits/s" - chart_type: line - dimensions: - - name: hits - - name: litespeed.cache - description: Private Cache Hits - unit: "hits/s" - chart_type: line - dimensions: - - name: hits - - name: litespeed.static - description: Static Hits - unit: "hits/s" - chart_type: line - dimensions: - - name: hits diff --git a/collectors/python.d.plugin/megacli/Makefile.inc b/collectors/python.d.plugin/megacli/Makefile.inc deleted file mode 100644 index 83680d723..000000000 --- a/collectors/python.d.plugin/megacli/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += megacli/megacli.chart.py -dist_pythonconfig_DATA += megacli/megacli.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += megacli/README.md megacli/Makefile.inc - diff --git a/collectors/python.d.plugin/megacli/README.md b/collectors/python.d.plugin/megacli/README.md deleted file mode 120000 index e5df4d41d..000000000 --- a/collectors/python.d.plugin/megacli/README.md +++ /dev/null @@ -1 +0,0 @@ -integrations/megacli.md
\ No newline at end of file diff --git a/collectors/python.d.plugin/megacli/integrations/megacli.md b/collectors/python.d.plugin/megacli/integrations/megacli.md deleted file mode 100644 index 0c4af78a9..000000000 --- a/collectors/python.d.plugin/megacli/integrations/megacli.md +++ /dev/null @@ -1,220 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/megacli/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/megacli/metadata.yaml" -sidebar_label: "MegaCLI" -learn_status: "Published" -learn_rel_path: "Data Collection/Storage, Mount Points and Filesystems" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# MegaCLI - - -<img src="https://netdata.cloud/img/hard-drive.svg" width="150"/> - - -Plugin: python.d.plugin -Module: megacli - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -Examine MegaCLI metrics with Netdata for insights into RAID controller performance. Improve your RAID controller efficiency with real-time MegaCLI metrics. - -Collects adapter, physical drives and battery stats using megacli command-line tool - -Executed commands: - - - `sudo -n megacli -LDPDInfo -aAll` - - `sudo -n megacli -AdpBbuCmd -a0` - - -This collector is supported on all platforms. - -This collector only supports collecting metrics from a single instance of this integration. - -The module uses megacli, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute megacli as root without a password. - -### Default Behavior - -#### Auto-Detection - -After all the permissions are satisfied, netdata should be to execute commands via the megacli command line utility - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per MegaCLI instance - -These metrics refer to the entire monitored application. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| megacli.adapter_degraded | a dimension per adapter | is degraded | -| megacli.pd_media_error | a dimension per physical drive | errors/s | -| megacli.pd_predictive_failure | a dimension per physical drive | failures/s | - -### Per battery - -Metrics related to Battery Backup Units, each BBU provides its own set of the following metrics. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| megacli.bbu_relative_charge | adapter {battery id} | percentage | -| megacli.bbu_cycle_count | adapter {battery id} | cycle count | - - - -## Alerts - - -The following alerts are available: - -| Alert name | On metric | Description | -|:------------|:----------|:------------| -| [ megacli_adapter_state ](https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf) | megacli.adapter_degraded | adapter is in the degraded state (0: false, 1: true) | -| [ megacli_pd_media_errors ](https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf) | megacli.pd_media_error | number of physical drive media errors | -| [ megacli_pd_predictive_failures ](https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf) | megacli.pd_predictive_failure | number of physical drive predictive failures | -| [ megacli_bbu_relative_charge ](https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf) | megacli.bbu_relative_charge | average battery backup unit (BBU) relative state of charge over the last 10 seconds | -| [ megacli_bbu_cycle_count ](https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf) | megacli.bbu_cycle_count | average battery backup unit (BBU) charge cycles count over the last 10 seconds | - - -## Setup - -### Prerequisites - -#### Grant permissions for netdata, to run megacli as sudoer - -The module uses megacli, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute megacli as root without a password. - -Add to your /etc/sudoers file: -which megacli shows the full path to the binary. - -```bash -netdata ALL=(root) NOPASSWD: /path/to/megacli -``` - - -#### Reset Netdata's systemd unit CapabilityBoundingSet (Linux distributions with systemd) - -The default CapabilityBoundingSet doesn't allow using sudo, and is quite strict in general. Resetting is not optimal, but a next-best solution given the inability to execute arcconf using sudo. - -As root user, do the following: - -```bash -mkdir /etc/systemd/system/netdata.service.d -echo -e '[Service]\nCapabilityBoundingSet=~' | tee /etc/systemd/system/netdata.service.d/unset-capability-bounding-set.conf -systemctl daemon-reload -systemctl restart netdata.service -``` - - - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/megacli.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/megacli.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| update_every | Sets the default data collection frequency. | 5 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | -| do_battery | default is no. Battery stats (adds additional call to megacli `megacli -AdpBbuCmd -a0`). | no | no | - -</details> - -#### Examples - -##### Basic - -A basic example configuration per job - -```yaml -job_name: - name: myname - update_every: 1 - priority: 60000 - penalty: yes - autodetection_retry: 0 - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `megacli` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin megacli debug trace - ``` - - diff --git a/collectors/python.d.plugin/megacli/megacli.chart.py b/collectors/python.d.plugin/megacli/megacli.chart.py deleted file mode 100644 index 8222092a8..000000000 --- a/collectors/python.d.plugin/megacli/megacli.chart.py +++ /dev/null @@ -1,278 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: megacli netdata python.d module -# Author: Ilya Mashchenko (ilyam8) -# SPDX-License-Identifier: GPL-3.0-or-later - - -import re - -from bases.FrameworkServices.ExecutableService import ExecutableService -from bases.collection import find_binary - -disabled_by_default = True - -update_every = 5 - - -def adapter_charts(ads): - order = [ - 'adapter_degraded', - ] - - def dims(ad): - return [['adapter_{0}_degraded'.format(a.id), 'adapter {0}'.format(a.id)] for a in ad] - - charts = { - 'adapter_degraded': { - 'options': [None, 'Adapter State', 'is degraded', 'adapter', 'megacli.adapter_degraded', 'line'], - 'lines': dims(ads) - }, - } - - return order, charts - - -def pd_charts(pds): - order = [ - 'pd_media_error', - 'pd_predictive_failure', - ] - - def dims(k, pd): - return [['slot_{0}_{1}'.format(p.id, k), 'slot {0}'.format(p.id), 'incremental'] for p in pd] - - charts = { - 'pd_media_error': { - 'options': [None, 'Physical Drives Media Errors', 'errors/s', 'pd', 'megacli.pd_media_error', 'line'], - 'lines': dims('media_error', pds) - }, - 'pd_predictive_failure': { - 'options': [None, 'Physical Drives Predictive Failures', 'failures/s', 'pd', - 'megacli.pd_predictive_failure', 'line'], - 'lines': dims('predictive_failure', pds) - } - } - - return order, charts - - -def battery_charts(bats): - order = list() - charts = dict() - - for b in bats: - order.append('bbu_{0}_relative_charge'.format(b.id)) - charts.update( - { - 'bbu_{0}_relative_charge'.format(b.id): { - 'options': [None, 'Relative State of Charge', 'percentage', 'battery', - 'megacli.bbu_relative_charge', 'line'], - 'lines': [ - ['bbu_{0}_relative_charge'.format(b.id), 'adapter {0}'.format(b.id)], - ] - } - } - ) - - for b in bats: - order.append('bbu_{0}_cycle_count'.format(b.id)) - charts.update( - { - 'bbu_{0}_cycle_count'.format(b.id): { - 'options': [None, 'Cycle Count', 'cycle count', 'battery', 'megacli.bbu_cycle_count', 'line'], - 'lines': [ - ['bbu_{0}_cycle_count'.format(b.id), 'adapter {0}'.format(b.id)], - ] - } - } - ) - - return order, charts - - -RE_ADAPTER = re.compile( - r'Adapter #([0-9]+) State(?:\s+)?: ([a-zA-Z ]+)' -) - -RE_VD = re.compile( - r'Slot Number: ([0-9]+) Media Error Count: ([0-9]+) Predictive Failure Count: ([0-9]+)' -) - -RE_BATTERY = re.compile( - r'BBU Capacity Info for Adapter: ([0-9]+) Relative State of Charge: ([0-9]+) % Cycle Count: ([0-9]+)' -) - - -def find_adapters(d): - keys = ('Adapter #', 'State') - d = ' '.join(v.strip() for v in d if v.startswith(keys)) - return [Adapter(*v) for v in RE_ADAPTER.findall(d)] - - -def find_pds(d): - keys = ('Slot Number', 'Media Error Count', 'Predictive Failure Count') - d = ' '.join(v.strip() for v in d if v.startswith(keys)) - return [PD(*v) for v in RE_VD.findall(d)] - - -def find_batteries(d): - keys = ('BBU Capacity Info for Adapter', 'Relative State of Charge', 'Cycle Count') - d = ' '.join(v.strip() for v in d if v.strip().startswith(keys)) - return [Battery(*v) for v in RE_BATTERY.findall(d)] - - -class Adapter: - def __init__(self, n, state): - self.id = n - # TODO: Rewrite all of this - self.state = int(state in ("Partially Degraded", "Degraded", "Failed")) - - def data(self): - return { - 'adapter_{0}_degraded'.format(self.id): self.state, - } - -class PD: - def __init__(self, n, media_err, predict_fail): - self.id = n - self.media_err = media_err - self.predict_fail = predict_fail - - def data(self): - return { - 'slot_{0}_media_error'.format(self.id): self.media_err, - 'slot_{0}_predictive_failure'.format(self.id): self.predict_fail, - } - - -class Battery: - def __init__(self, adapt_id, rel_charge, cycle_count): - self.id = adapt_id - self.rel_charge = rel_charge - self.cycle_count = cycle_count - - def data(self): - return { - 'bbu_{0}_relative_charge'.format(self.id): self.rel_charge, - 'bbu_{0}_cycle_count'.format(self.id): self.cycle_count, - } - - -# TODO: hardcoded sudo... -class Megacli: - def __init__(self): - self.s = find_binary('sudo') - self.m = find_binary('megacli') or find_binary('MegaCli') # Binary on FreeBSD is MegaCli - self.sudo_check = [self.s, '-n', '-l'] - self.disk_info = [self.s, '-n', self.m, '-LDPDInfo', '-aAll', '-NoLog'] - self.battery_info = [self.s, '-n', self.m, '-AdpBbuCmd', '-a0', '-NoLog'] - - def __bool__(self): - return bool(self.s and self.m) - - def __nonzero__(self): - return self.__bool__() - - -class Service(ExecutableService): - def __init__(self, configuration=None, name=None): - ExecutableService.__init__(self, configuration=configuration, name=name) - self.order = list() - self.definitions = dict() - self.do_battery = self.configuration.get('do_battery') - self.megacli = Megacli() - - def check_sudo(self): - err = self._get_raw_data(command=self.megacli.sudo_check, stderr=True) - if err: - self.error(''.join(err)) - return False - return True - - def check_disk_info(self): - d = self._get_raw_data(command=self.megacli.disk_info) - if not d: - return False - - ads = find_adapters(d) - pds = find_pds(d) - - if not (ads and pds): - self.error('failed to parse "{0}" output'.format(' '.join(self.megacli.disk_info))) - return False - - o, c = adapter_charts(ads) - self.order.extend(o) - self.definitions.update(c) - - o, c = pd_charts(pds) - self.order.extend(o) - self.definitions.update(c) - - return True - - def check_battery(self): - d = self._get_raw_data(command=self.megacli.battery_info) - if not d: - return False - - bats = find_batteries(d) - - if not bats: - self.error('failed to parse "{0}" output'.format(' '.join(self.megacli.battery_info))) - return False - - o, c = battery_charts(bats) - self.order.extend(o) - self.definitions.update(c) - return True - - def check(self): - if not self.megacli: - self.error('can\'t locate "sudo" or "megacli" binary') - return None - - if not (self.check_sudo() and self.check_disk_info()): - return False - - if self.do_battery: - self.do_battery = self.check_battery() - - return True - - def get_data(self): - data = dict() - - data.update(self.get_adapter_pd_data()) - - if self.do_battery: - data.update(self.get_battery_data()) - - return data or None - - def get_adapter_pd_data(self): - raw = self._get_raw_data(command=self.megacli.disk_info) - data = dict() - - if not raw: - return data - - for a in find_adapters(raw): - data.update(a.data()) - - for p in find_pds(raw): - data.update(p.data()) - - return data - - def get_battery_data(self): - raw = self._get_raw_data(command=self.megacli.battery_info) - data = dict() - - if not raw: - return data - - for b in find_batteries(raw): - data.update(b.data()) - - return data diff --git a/collectors/python.d.plugin/megacli/megacli.conf b/collectors/python.d.plugin/megacli/megacli.conf deleted file mode 100644 index 1af4292d9..000000000 --- a/collectors/python.d.plugin/megacli/megacli.conf +++ /dev/null @@ -1,60 +0,0 @@ -# netdata python.d.plugin configuration for megacli -# -# This file is in YaML format. Generally the format is: -# -# name: value -# - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 1 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# -# Additionally to the above, megacli also supports the following: -# -# do_battery: yes/no # default is no. Battery stats (adds additional call to megacli `megacli -AdpBbuCmd -a0`). -# -# ---------------------------------------------------------------------- -# uncomment the line below to collect battery statistics -# do_battery: yes diff --git a/collectors/python.d.plugin/megacli/metadata.yaml b/collectors/python.d.plugin/megacli/metadata.yaml deleted file mode 100644 index 4a2ba43ee..000000000 --- a/collectors/python.d.plugin/megacli/metadata.yaml +++ /dev/null @@ -1,193 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: megacli - monitored_instance: - name: MegaCLI - link: "https://wikitech.wikimedia.org/wiki/MegaCli" - categories: - - data-collection.storage-mount-points-and-filesystems - icon_filename: "hard-drive.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - storage - - raid-controller - - manage-disks - most_popular: false - overview: - data_collection: - metrics_description: "Examine MegaCLI metrics with Netdata for insights into RAID controller performance. Improve your RAID controller efficiency with real-time MegaCLI metrics." - method_description: | - Collects adapter, physical drives and battery stats using megacli command-line tool - - Executed commands: - - - `sudo -n megacli -LDPDInfo -aAll` - - `sudo -n megacli -AdpBbuCmd -a0` - supported_platforms: - include: [] - exclude: [] - multi_instance: false - additional_permissions: - description: "The module uses megacli, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute megacli as root without a password." - default_behavior: - auto_detection: - description: "After all the permissions are satisfied, netdata should be to execute commands via the megacli command line utility" - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Grant permissions for netdata, to run megacli as sudoer - description: | - The module uses megacli, which can only be executed by root. It uses sudo and assumes that it is configured such that the netdata user can execute megacli as root without a password. - - Add to your /etc/sudoers file: - which megacli shows the full path to the binary. - - ```bash - netdata ALL=(root) NOPASSWD: /path/to/megacli - ``` - - title: "Reset Netdata's systemd unit CapabilityBoundingSet (Linux distributions with systemd)" - description: | - The default CapabilityBoundingSet doesn't allow using sudo, and is quite strict in general. Resetting is not optimal, but a next-best solution given the inability to execute arcconf using sudo. - - As root user, do the following: - - ```bash - mkdir /etc/systemd/system/netdata.service.d - echo -e '[Service]\nCapabilityBoundingSet=~' | tee /etc/systemd/system/netdata.service.d/unset-capability-bounding-set.conf - systemctl daemon-reload - systemctl restart netdata.service - ``` - configuration: - file: - name: "python.d/megacli.conf" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: do_battery - description: default is no. Battery stats (adds additional call to megacli `megacli -AdpBbuCmd -a0`). - default_value: no - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic - folding: - enabled: false - description: A basic example configuration per job - config: | - job_name: - name: myname - update_every: 1 - priority: 60000 - penalty: yes - autodetection_retry: 0 - troubleshooting: - problems: - list: [] - alerts: - - name: megacli_adapter_state - link: https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf - metric: megacli.adapter_degraded - info: "adapter is in the degraded state (0: false, 1: true)" - - name: megacli_pd_media_errors - link: https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf - metric: megacli.pd_media_error - info: number of physical drive media errors - - name: megacli_pd_predictive_failures - link: https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf - metric: megacli.pd_predictive_failure - info: number of physical drive predictive failures - - name: megacli_bbu_relative_charge - link: https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf - metric: megacli.bbu_relative_charge - info: average battery backup unit (BBU) relative state of charge over the last 10 seconds - - name: megacli_bbu_cycle_count - link: https://github.com/netdata/netdata/blob/master/health/health.d/megacli.conf - metric: megacli.bbu_cycle_count - info: average battery backup unit (BBU) charge cycles count over the last 10 seconds - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: megacli.adapter_degraded - description: Adapter State - unit: "is degraded" - chart_type: line - dimensions: - - name: a dimension per adapter - - name: megacli.pd_media_error - description: Physical Drives Media Errors - unit: "errors/s" - chart_type: line - dimensions: - - name: a dimension per physical drive - - name: megacli.pd_predictive_failure - description: Physical Drives Predictive Failures - unit: "failures/s" - chart_type: line - dimensions: - - name: a dimension per physical drive - - name: battery - description: "Metrics related to Battery Backup Units, each BBU provides its own set of the following metrics." - labels: [] - metrics: - - name: megacli.bbu_relative_charge - description: Relative State of Charge - unit: "percentage" - chart_type: line - dimensions: - - name: adapter {battery id} - - name: megacli.bbu_cycle_count - description: Cycle Count - unit: "cycle count" - chart_type: line - dimensions: - - name: adapter {battery id} diff --git a/collectors/python.d.plugin/memcached/Makefile.inc b/collectors/python.d.plugin/memcached/Makefile.inc deleted file mode 100644 index e60357161..000000000 --- a/collectors/python.d.plugin/memcached/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += memcached/memcached.chart.py -dist_pythonconfig_DATA += memcached/memcached.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += memcached/README.md memcached/Makefile.inc - diff --git a/collectors/python.d.plugin/memcached/metadata.yaml b/collectors/python.d.plugin/memcached/metadata.yaml deleted file mode 100644 index 38c9f6853..000000000 --- a/collectors/python.d.plugin/memcached/metadata.yaml +++ /dev/null @@ -1,247 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: memcached - monitored_instance: - name: Memcached - link: https://memcached.org/ - categories: - - data-collection.database-servers - icon_filename: "memcached.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - memcached - - memcache - - cache - - database - most_popular: false - overview: - data_collection: - metrics_description: "Monitor Memcached metrics for proficient in-memory key-value store operations. Track cache hits, misses, and memory usage for efficient data caching." - method_description: "It reads server response to stats command ([stats interface](https://github.com/memcached/memcached/wiki/Commands#stats))." - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: | - If no configuration is given, collector will attempt to connect to memcached instance on `127.0.0.1:11211` address. - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: python.d/memcached.conf - description: "" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: Config options - enabled: true - list: - - name: host - description: the host to connect to. - default_value: "127.0.0.1" - required: false - - name: port - description: the port to connect to. - default_value: "11211" - required: false - - name: update_every - description: Sets the default data collection frequency. - default_value: 10 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: localhost - description: An example configuration for localhost. - folding: - enabled: false - config: | - localhost: - name: 'local' - host: 'localhost' - port: 11211 - - name: localipv4 - description: An example configuration for localipv4. - folding: - enabled: true - config: | - localhost: - name: 'local' - host: '127.0.0.1' - port: 11211 - - name: localipv6 - description: An example configuration for localipv6. - folding: - enabled: true - config: | - localhost: - name: 'local' - host: '::1' - port: 11211 - troubleshooting: - problems: - list: [] - alerts: - - name: memcached_cache_memory_usage - link: https://github.com/netdata/netdata/blob/master/health/health.d/memcached.conf - metric: memcached.cache - info: cache memory utilization - - name: memcached_cache_fill_rate - link: https://github.com/netdata/netdata/blob/master/health/health.d/memcached.conf - metric: memcached.cache - info: average rate the cache fills up (positive), or frees up (negative) space over the last hour - - name: memcached_out_of_cache_space_time - link: https://github.com/netdata/netdata/blob/master/health/health.d/memcached.conf - metric: memcached.cache - info: estimated time the cache will run out of space if the system continues to add data at the same rate as the past hour - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: memcached.cache - description: Cache Size - unit: "MiB" - chart_type: stacked - dimensions: - - name: available - - name: used - - name: memcached.net - description: Network - unit: "kilobits/s" - chart_type: area - dimensions: - - name: in - - name: out - - name: memcached.connections - description: Connections - unit: "connections/s" - chart_type: line - dimensions: - - name: current - - name: rejected - - name: total - - name: memcached.items - description: Items - unit: "items" - chart_type: line - dimensions: - - name: current - - name: total - - name: memcached.evicted_reclaimed - description: Evicted and Reclaimed Items - unit: "items" - chart_type: line - dimensions: - - name: reclaimed - - name: evicted - - name: memcached.get - description: Get Requests - unit: "requests" - chart_type: stacked - dimensions: - - name: hints - - name: misses - - name: memcached.get_rate - description: Get Request Rate - unit: "requests/s" - chart_type: line - dimensions: - - name: rate - - name: memcached.set_rate - description: Set Request Rate - unit: "requests/s" - chart_type: line - dimensions: - - name: rate - - name: memcached.delete - description: Delete Requests - unit: "requests" - chart_type: stacked - dimensions: - - name: hits - - name: misses - - name: memcached.cas - description: Check and Set Requests - unit: "requests" - chart_type: stacked - dimensions: - - name: hits - - name: misses - - name: bad value - - name: memcached.increment - description: Increment Requests - unit: "requests" - chart_type: stacked - dimensions: - - name: hits - - name: misses - - name: memcached.decrement - description: Decrement Requests - unit: "requests" - chart_type: stacked - dimensions: - - name: hits - - name: misses - - name: memcached.touch - description: Touch Requests - unit: "requests" - chart_type: stacked - dimensions: - - name: hits - - name: misses - - name: memcached.touch_rate - description: Touch Request Rate - unit: "requests/s" - chart_type: line - dimensions: - - name: rate diff --git a/collectors/python.d.plugin/monit/Makefile.inc b/collectors/python.d.plugin/monit/Makefile.inc deleted file mode 100644 index 4a3673fd5..000000000 --- a/collectors/python.d.plugin/monit/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += monit/monit.chart.py -dist_pythonconfig_DATA += monit/monit.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += monit/README.md monit/Makefile.inc - diff --git a/collectors/python.d.plugin/nsd/Makefile.inc b/collectors/python.d.plugin/nsd/Makefile.inc deleted file mode 100644 index 58e9fd67d..000000000 --- a/collectors/python.d.plugin/nsd/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += nsd/nsd.chart.py -dist_pythonconfig_DATA += nsd/nsd.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += nsd/README.md nsd/Makefile.inc - diff --git a/collectors/python.d.plugin/nvidia_smi/Makefile.inc b/collectors/python.d.plugin/nvidia_smi/Makefile.inc deleted file mode 100644 index 52fb25a68..000000000 --- a/collectors/python.d.plugin/nvidia_smi/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += nvidia_smi/nvidia_smi.chart.py -dist_pythonconfig_DATA += nvidia_smi/nvidia_smi.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += nvidia_smi/README.md nvidia_smi/Makefile.inc - diff --git a/collectors/python.d.plugin/nvidia_smi/README.md b/collectors/python.d.plugin/nvidia_smi/README.md deleted file mode 100644 index 7d45289a4..000000000 --- a/collectors/python.d.plugin/nvidia_smi/README.md +++ /dev/null @@ -1,157 +0,0 @@ -<!-- -title: "Nvidia GPU monitoring with Netdata" -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/nvidia_smi/README.md" -sidebar_label: "nvidia_smi-python.d.plugin" -learn_status: "Published" -learn_topic_type: "References" -learn_rel_path: "Integrations/Monitor/Devices" ---> - -# Nvidia GPU collector - -Monitors performance metrics (memory usage, fan speed, pcie bandwidth utilization, temperature, etc.) using `nvidia-smi` cli tool. - -## Requirements and Notes - -- You must have the `nvidia-smi` tool installed and your NVIDIA GPU(s) must support the tool. Mostly the newer high end models used for AI / ML and Crypto or Pro range, read more about [nvidia_smi](https://developer.nvidia.com/nvidia-system-management-interface). -- You must enable this plugin, as its disabled by default due to minor performance issues: - ```bash - cd /etc/netdata # Replace this path with your Netdata config directory, if different - sudo ./edit-config python.d.conf - ``` - Remove the '#' before nvidia_smi so it reads: `nvidia_smi: yes`. - -- On some systems when the GPU is idle the `nvidia-smi` tool unloads and there is added latency again when it is next queried. If you are running GPUs under constant workload this isn't likely to be an issue. -- Currently the `nvidia-smi` tool is being queried via cli. Updating the plugin to use the nvidia c/c++ API directly should resolve this issue. See discussion here: <https://github.com/netdata/netdata/pull/4357> -- Contributions are welcome. -- Make sure `netdata` user can execute `/usr/bin/nvidia-smi` or wherever your binary is. -- If `nvidia-smi` process [is not killed after netdata restart](https://github.com/netdata/netdata/issues/7143) you need to off `loop_mode`. -- `poll_seconds` is how often in seconds the tool is polled for as an integer. - -## Charts - -It produces the following charts: - -- PCI Express Bandwidth Utilization in `KiB/s` -- Fan Speed in `percentage` -- GPU Utilization in `percentage` -- Memory Bandwidth Utilization in `percentage` -- Encoder/Decoder Utilization in `percentage` -- Memory Usage in `MiB` -- Temperature in `celsius` -- Clock Frequencies in `MHz` -- Power Utilization in `Watts` -- Memory Used by Each Process in `MiB` -- Memory Used by Each User in `MiB` -- Number of User on GPU in `num` - -## Configuration - -Edit the `python.d/nvidia_smi.conf` configuration file using `edit-config` from the Netdata [config -directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`. - -```bash -cd /etc/netdata # Replace this path with your Netdata config directory, if different -sudo ./edit-config python.d/nvidia_smi.conf -``` - -Sample: - -```yaml -loop_mode : yes -poll_seconds : 1 -exclude_zero_memory_users : yes -``` - - -### Troubleshooting - -To troubleshoot issues with the `nvidia_smi` module, run the `python.d.plugin` with the debug option enabled. The -output will give you the output of the data collection job or error messages on why the collector isn't working. - -First, navigate to your plugins directory, usually they are located under `/usr/libexec/netdata/plugins.d/`. If that's -not the case on your system, open `netdata.conf` and look for the setting `plugins directory`. Once you're in the -plugin's directory, switch to the `netdata` user. - -```bash -cd /usr/libexec/netdata/plugins.d/ -sudo su -s /bin/bash netdata -``` - -Now you can manually run the `nvidia_smi` module in debug mode: - -```bash -./python.d.plugin nvidia_smi debug trace -``` - -## Docker - -GPU monitoring in a docker container is possible with [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) installed on the host system, and `gcompat` added to the `NETDATA_EXTRA_APK_PACKAGES` environment variable. - -Sample `docker-compose.yml` -```yaml -version: '3' -services: - netdata: - image: netdata/netdata - container_name: netdata - hostname: example.com # set to fqdn of host - ports: - - 19999:19999 - restart: unless-stopped - cap_add: - - SYS_PTRACE - security_opt: - - apparmor:unconfined - environment: - - NETDATA_EXTRA_APK_PACKAGES=gcompat - volumes: - - netdataconfig:/etc/netdata - - netdatalib:/var/lib/netdata - - netdatacache:/var/cache/netdata - - /etc/passwd:/host/etc/passwd:ro - - /etc/group:/host/etc/group:ro - - /proc:/host/proc:ro - - /sys:/host/sys:ro - - /etc/os-release:/host/etc/os-release:ro - deploy: - resources: - reservations: - devices: - - driver: nvidia - count: all - capabilities: [gpu] - -volumes: - netdataconfig: - netdatalib: - netdatacache: -``` - -Sample `docker run` -```yaml -docker run -d --name=netdata \ - -p 19999:19999 \ - -e NETDATA_EXTRA_APK_PACKAGES=gcompat \ - -v netdataconfig:/etc/netdata \ - -v netdatalib:/var/lib/netdata \ - -v netdatacache:/var/cache/netdata \ - -v /etc/passwd:/host/etc/passwd:ro \ - -v /etc/group:/host/etc/group:ro \ - -v /proc:/host/proc:ro \ - -v /sys:/host/sys:ro \ - -v /etc/os-release:/host/etc/os-release:ro \ - --restart unless-stopped \ - --cap-add SYS_PTRACE \ - --security-opt apparmor=unconfined \ - --gpus all \ - netdata/netdata -``` - -### Docker Troubleshooting -To troubleshoot `nvidia-smi` in a docker container, first confirm that `nvidia-smi` is working on the host system. If that is working correctly, run `docker exec -it netdata nvidia-smi` to confirm it's working within the docker container. If `nvidia-smi` is fuctioning both inside and outside of the container, confirm that `nvidia-smi: yes` is uncommented in `python.d.conf`. -```bash -docker exec -it netdata bash -cd /etc/netdata -./edit-config python.d.conf -``` diff --git a/collectors/python.d.plugin/nvidia_smi/metadata.yaml b/collectors/python.d.plugin/nvidia_smi/metadata.yaml deleted file mode 100644 index 9bf1e6ca7..000000000 --- a/collectors/python.d.plugin/nvidia_smi/metadata.yaml +++ /dev/null @@ -1,166 +0,0 @@ -# This collector will not appear in documentation, as the go version is preferred, -# https://github.com/netdata/go.d.plugin/blob/master/modules/nvidia_smi/README.md -# -# meta: -# plugin_name: python.d.plugin -# module_name: nvidia_smi -# monitored_instance: -# name: python.d nvidia_smi -# link: '' -# categories: [] -# icon_filename: '' -# related_resources: -# integrations: -# list: [] -# info_provided_to_referring_integrations: -# description: '' -# keywords: [] -# most_popular: false -# overview: -# data_collection: -# metrics_description: '' -# method_description: '' -# supported_platforms: -# include: [] -# exclude: [] -# multi_instance: true -# additional_permissions: -# description: '' -# default_behavior: -# auto_detection: -# description: '' -# limits: -# description: '' -# performance_impact: -# description: '' -# setup: -# prerequisites: -# list: [] -# configuration: -# file: -# name: '' -# description: '' -# options: -# description: '' -# folding: -# title: '' -# enabled: true -# list: [] -# examples: -# folding: -# enabled: true -# title: '' -# list: [] -# troubleshooting: -# problems: -# list: [] -# alerts: [] -# metrics: -# folding: -# title: Metrics -# enabled: false -# description: "" -# availability: [] -# scopes: -# - name: GPU -# description: "" -# labels: [] -# metrics: -# - name: nvidia_smi.pci_bandwidth -# description: PCI Express Bandwidth Utilization -# unit: "KiB/s" -# chart_type: area -# dimensions: -# - name: rx -# - name: tx -# - name: nvidia_smi.pci_bandwidth_percent -# description: PCI Express Bandwidth Percent -# unit: "percentage" -# chart_type: area -# dimensions: -# - name: rx_percent -# - name: tx_percent -# - name: nvidia_smi.fan_speed -# description: Fan Speed -# unit: "percentage" -# chart_type: line -# dimensions: -# - name: speed -# - name: nvidia_smi.gpu_utilization -# description: GPU Utilization -# unit: "percentage" -# chart_type: line -# dimensions: -# - name: utilization -# - name: nvidia_smi.mem_utilization -# description: Memory Bandwidth Utilization -# unit: "percentage" -# chart_type: line -# dimensions: -# - name: utilization -# - name: nvidia_smi.encoder_utilization -# description: Encoder/Decoder Utilization -# unit: "percentage" -# chart_type: line -# dimensions: -# - name: encoder -# - name: decoder -# - name: nvidia_smi.memory_allocated -# description: Memory Usage -# unit: "MiB" -# chart_type: stacked -# dimensions: -# - name: free -# - name: used -# - name: nvidia_smi.bar1_memory_usage -# description: Bar1 Memory Usage -# unit: "MiB" -# chart_type: stacked -# dimensions: -# - name: free -# - name: used -# - name: nvidia_smi.temperature -# description: Temperature -# unit: "celsius" -# chart_type: line -# dimensions: -# - name: temp -# - name: nvidia_smi.clocks -# description: Clock Frequencies -# unit: "MHz" -# chart_type: line -# dimensions: -# - name: graphics -# - name: video -# - name: sm -# - name: mem -# - name: nvidia_smi.power -# description: Power Utilization -# unit: "Watts" -# chart_type: line -# dimensions: -# - name: power -# - name: nvidia_smi.power_state -# description: Power State -# unit: "state" -# chart_type: line -# dimensions: -# - name: a dimension per {power_state} -# - name: nvidia_smi.processes_mem -# description: Memory Used by Each Process -# unit: "MiB" -# chart_type: stacked -# dimensions: -# - name: a dimension per process -# - name: nvidia_smi.user_mem -# description: Memory Used by Each User -# unit: "MiB" -# chart_type: stacked -# dimensions: -# - name: a dimension per user -# - name: nvidia_smi.user_num -# description: Number of User on GPU -# unit: "num" -# chart_type: line -# dimensions: -# - name: users diff --git a/collectors/python.d.plugin/openldap/Makefile.inc b/collectors/python.d.plugin/openldap/Makefile.inc deleted file mode 100644 index dc947e214..000000000 --- a/collectors/python.d.plugin/openldap/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += openldap/openldap.chart.py -dist_pythonconfig_DATA += openldap/openldap.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += openldap/README.md openldap/Makefile.inc - diff --git a/collectors/python.d.plugin/oracledb/Makefile.inc b/collectors/python.d.plugin/oracledb/Makefile.inc deleted file mode 100644 index ea3a8240a..000000000 --- a/collectors/python.d.plugin/oracledb/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += oracledb/oracledb.chart.py -dist_pythonconfig_DATA += oracledb/oracledb.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += oracledb/README.md oracledb/Makefile.inc - diff --git a/collectors/python.d.plugin/pandas/Makefile.inc b/collectors/python.d.plugin/pandas/Makefile.inc deleted file mode 100644 index 9f4f9b34b..000000000 --- a/collectors/python.d.plugin/pandas/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += pandas/pandas.chart.py -dist_pythonconfig_DATA += pandas/pandas.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += pandas/README.md pandas/Makefile.inc - diff --git a/collectors/python.d.plugin/pandas/metadata.yaml b/collectors/python.d.plugin/pandas/metadata.yaml deleted file mode 100644 index 92ee1e986..000000000 --- a/collectors/python.d.plugin/pandas/metadata.yaml +++ /dev/null @@ -1,308 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: pandas - monitored_instance: - name: Pandas - link: https://pandas.pydata.org/ - categories: - - data-collection.generic-data-collection - icon_filename: pandas.png - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - pandas - - python - most_popular: false - overview: - data_collection: - metrics_description: | - [Pandas](https://pandas.pydata.org/) is a de-facto standard in reading and processing most types of structured data in Python. - If you have metrics appearing in a CSV, JSON, XML, HTML, or [other supported format](https://pandas.pydata.org/docs/user_guide/io.html), - either locally or via some HTTP endpoint, you can easily ingest and present those metrics in Netdata, by leveraging the Pandas collector. - - This collector can be used to collect pretty much anything that can be read by Pandas, and then processed by Pandas. - method_description: | - The collector uses [pandas](https://pandas.pydata.org/) to pull data and do pandas-based preprocessing, before feeding to Netdata. - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "" - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Python Requirements - description: | - This collector depends on some Python (Python 3 only) packages that can usually be installed via `pip` or `pip3`. - - ```bash - sudo pip install pandas requests - ``` - - Note: If you would like to use [`pandas.read_sql`](https://pandas.pydata.org/docs/reference/api/pandas.read_sql.html) to query a database, you will need to install the below packages as well. - - ```bash - sudo pip install 'sqlalchemy<2.0' psycopg2-binary - ``` - configuration: - file: - name: python.d/pandas.conf - description: "" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: Config options - enabled: true - list: - - name: chart_configs - description: an array of chart configuration dictionaries - default_value: "[]" - required: true - - name: chart_configs.name - description: name of the chart to be displayed in the dashboard. - default_value: None - required: true - - name: chart_configs.title - description: title of the chart to be displayed in the dashboard. - default_value: None - required: true - - name: chart_configs.family - description: "[family](https://github.com/netdata/netdata/blob/master/docs/cloud/visualize/interact-new-charts.md#families) of the chart to be displayed in the dashboard." - default_value: None - required: true - - name: chart_configs.context - description: "[context](https://github.com/netdata/netdata/blob/master/docs/cloud/visualize/interact-new-charts.md#contexts) of the chart to be displayed in the dashboard." - default_value: None - required: true - - name: chart_configs.type - description: the type of the chart to be displayed in the dashboard. - default_value: None - required: true - - name: chart_configs.units - description: the units of the chart to be displayed in the dashboard. - default_value: None - required: true - - name: chart_configs.df_steps - description: a series of pandas operations (one per line) that each returns a dataframe. - default_value: None - required: true - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - examples: - folding: - enabled: true - title: Config - list: - - name: Temperature API Example - folding: - enabled: true - description: example pulling some hourly temperature data, a chart for today forecast (mean,min,max) and another chart for current. - config: | - temperature: - name: "temperature" - update_every: 5 - chart_configs: - - name: "temperature_forecast_by_city" - title: "Temperature By City - Today Forecast" - family: "temperature.today" - context: "pandas.temperature" - type: "line" - units: "Celsius" - df_steps: > - pd.DataFrame.from_dict( - {city: requests.get(f'https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lng}&hourly=temperature_2m').json()['hourly']['temperature_2m'] - for (city,lat,lng) - in [ - ('dublin', 53.3441, -6.2675), - ('athens', 37.9792, 23.7166), - ('london', 51.5002, -0.1262), - ('berlin', 52.5235, 13.4115), - ('paris', 48.8567, 2.3510), - ('madrid', 40.4167, -3.7033), - ('new_york', 40.71, -74.01), - ('los_angeles', 34.05, -118.24), - ] - } - ); - df.describe(); # get aggregate stats for each city; - df.transpose()[['mean', 'max', 'min']].reset_index(); # just take mean, min, max; - df.rename(columns={'index':'city'}); # some column renaming; - df.pivot(columns='city').mean().to_frame().reset_index(); # force to be one row per city; - df.rename(columns={0:'degrees'}); # some column renaming; - pd.concat([df, df['city']+'_'+df['level_0']], axis=1); # add new column combining city and summary measurement label; - df.rename(columns={0:'measurement'}); # some column renaming; - df[['measurement', 'degrees']].set_index('measurement'); # just take two columns we want; - df.sort_index(); # sort by city name; - df.transpose(); # transpose so its just one wide row; - - name: "temperature_current_by_city" - title: "Temperature By City - Current" - family: "temperature.current" - context: "pandas.temperature" - type: "line" - units: "Celsius" - df_steps: > - pd.DataFrame.from_dict( - {city: requests.get(f'https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lng}¤t_weather=true').json()['current_weather'] - for (city,lat,lng) - in [ - ('dublin', 53.3441, -6.2675), - ('athens', 37.9792, 23.7166), - ('london', 51.5002, -0.1262), - ('berlin', 52.5235, 13.4115), - ('paris', 48.8567, 2.3510), - ('madrid', 40.4167, -3.7033), - ('new_york', 40.71, -74.01), - ('los_angeles', 34.05, -118.24), - ] - } - ); - df.transpose(); - df[['temperature']]; - df.transpose(); - - name: API CSV Example - folding: - enabled: true - description: example showing a read_csv from a url and some light pandas data wrangling. - config: | - example_csv: - name: "example_csv" - update_every: 2 - chart_configs: - - name: "london_system_cpu" - title: "London System CPU - Ratios" - family: "london_system_cpu" - context: "pandas" - type: "line" - units: "n" - df_steps: > - pd.read_csv('https://london.my-netdata.io/api/v1/data?chart=system.cpu&format=csv&after=-60', storage_options={'User-Agent': 'netdata'}); - df.drop('time', axis=1); - df.mean().to_frame().transpose(); - df.apply(lambda row: (row.user / row.system), axis = 1).to_frame(); - df.rename(columns={0:'average_user_system_ratio'}); - df*100; - - name: API JSON Example - folding: - enabled: true - description: example showing a read_json from a url and some light pandas data wrangling. - config: | - example_json: - name: "example_json" - update_every: 2 - chart_configs: - - name: "london_system_net" - title: "London System Net - Total Bandwidth" - family: "london_system_net" - context: "pandas" - type: "area" - units: "kilobits/s" - df_steps: > - pd.DataFrame(requests.get('https://london.my-netdata.io/api/v1/data?chart=system.net&format=json&after=-1').json()['data'], columns=requests.get('https://london.my-netdata.io/api/v1/data?chart=system.net&format=json&after=-1').json()['labels']); - df.drop('time', axis=1); - abs(df); - df.sum(axis=1).to_frame(); - df.rename(columns={0:'total_bandwidth'}); - - name: XML Example - folding: - enabled: true - description: example showing a read_xml from a url and some light pandas data wrangling. - config: | - example_xml: - name: "example_xml" - update_every: 2 - line_sep: "|" - chart_configs: - - name: "temperature_forcast" - title: "Temperature Forecast" - family: "temp" - context: "pandas.temp" - type: "line" - units: "celsius" - df_steps: > - pd.read_xml('http://metwdb-openaccess.ichec.ie/metno-wdb2ts/locationforecast?lat=54.7210798611;long=-8.7237392806', xpath='./product/time[1]/location/temperature', parser='etree')| - df.rename(columns={'value': 'dublin'})| - df[['dublin']]| - - name: SQL Example - folding: - enabled: true - description: example showing a read_sql from a postgres database using sqlalchemy. - config: | - sql: - name: "sql" - update_every: 5 - chart_configs: - - name: "sql" - title: "SQL Example" - family: "sql.example" - context: "example" - type: "line" - units: "percent" - df_steps: > - pd.read_sql_query( - sql='\ - select \ - random()*100 as metric_1, \ - random()*100 as metric_2 \ - ', - con=create_engine('postgresql://localhost/postgres?user=netdata&password=netdata') - ); - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: | - This collector is expecting one row in the final pandas DataFrame. It is that first row that will be taken - as the most recent values for each dimension on each chart using (`df.to_dict(orient='records')[0]`). - See [pd.to_dict()](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_dict.html)." - availability: [] - scopes: - - name: global - description: | - These metrics refer to the entire monitored application. - labels: [] - metrics: [] diff --git a/collectors/python.d.plugin/postfix/Makefile.inc b/collectors/python.d.plugin/postfix/Makefile.inc deleted file mode 100644 index f4091b217..000000000 --- a/collectors/python.d.plugin/postfix/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += postfix/postfix.chart.py -dist_pythonconfig_DATA += postfix/postfix.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += postfix/README.md postfix/Makefile.inc - diff --git a/collectors/python.d.plugin/puppet/Makefile.inc b/collectors/python.d.plugin/puppet/Makefile.inc deleted file mode 100644 index fe94b9254..000000000 --- a/collectors/python.d.plugin/puppet/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += puppet/puppet.chart.py -dist_pythonconfig_DATA += puppet/puppet.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += puppet/README.md puppet/Makefile.inc - diff --git a/collectors/python.d.plugin/puppet/metadata.yaml b/collectors/python.d.plugin/puppet/metadata.yaml deleted file mode 100644 index 781519b6a..000000000 --- a/collectors/python.d.plugin/puppet/metadata.yaml +++ /dev/null @@ -1,185 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: puppet - monitored_instance: - name: Puppet - link: "https://www.puppet.com/" - categories: - - data-collection.ci-cd-systems - icon_filename: "puppet.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - puppet - - jvm heap - most_popular: false - overview: - data_collection: - metrics_description: | - This collector monitors Puppet metrics about JVM Heap, Non-Heap, CPU usage and file descriptors.' - method_description: | - It uses Puppet's metrics API endpoint to gather the metrics. - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: By default, this collector will use `https://fqdn.example.com:8140` as the URL to look for metrics. - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: "python.d/puppet.conf" - options: - description: | - This particular collector does not need further configuration to work if permissions are satisfied, but you can always customize it's data collection behavior. - - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - > Notes: - > - Exact Fully Qualified Domain Name of the node should be used. - > - Usually Puppet Server/DB startup time is VERY long. So, there should be quite reasonable retry count. - > - A secured PuppetDB config may require a client certificate. This does not apply to the default PuppetDB configuration though. - folding: - title: "Config options" - enabled: true - list: - - name: url - description: HTTP or HTTPS URL, exact Fully Qualified Domain Name of the node should be used. - default_value: https://fqdn.example.com:8081 - required: true - - name: tls_verify - description: Control HTTPS server certificate verification. - default_value: "False" - required: false - - name: tls_ca_file - description: Optional CA (bundle) file to use - default_value: "" - required: false - - name: tls_cert_file - description: Optional client certificate file - default_value: "" - required: false - - name: tls_key_file - description: Optional client key file - default_value: "" - required: false - - name: update_every - description: Sets the default data collection frequency. - default_value: 30 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: > - Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic - description: A basic example configuration - folding: - enabled: false - config: | - puppetserver: - url: 'https://fqdn.example.com:8140' - autodetection_retry: 1 - - name: TLS Certificate - description: An example using a TLS certificate - config: | - puppetdb: - url: 'https://fqdn.example.com:8081' - tls_cert_file: /path/to/client.crt - tls_key_file: /path/to/client.key - autodetection_retry: 1 - - name: Multi-instance - description: | - > **Note**: When you define multiple jobs, their names must be unique. - - Collecting metrics from local and remote instances. - config: | - puppetserver1: - url: 'https://fqdn.example.com:8140' - autodetection_retry: 1 - - puppetserver2: - url: 'https://fqdn.example2.com:8140' - autodetection_retry: 1 - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: puppet.jvm - description: JVM Heap - unit: "MiB" - chart_type: area - dimensions: - - name: committed - - name: used - - name: puppet.jvm - description: JVM Non-Heap - unit: "MiB" - chart_type: area - dimensions: - - name: committed - - name: used - - name: puppet.cpu - description: CPU usage - unit: "percentage" - chart_type: stacked - dimensions: - - name: execution - - name: GC - - name: puppet.fdopen - description: File Descriptors - unit: "descriptors" - chart_type: line - dimensions: - - name: used diff --git a/collectors/python.d.plugin/python.d.conf b/collectors/python.d.plugin/python.d.conf deleted file mode 100644 index 3953ce2b4..000000000 --- a/collectors/python.d.plugin/python.d.conf +++ /dev/null @@ -1,78 +0,0 @@ -# netdata python.d.plugin configuration -# -# This file is in YaML format. -# Generally the format is: -# -# name: value -# - -# Enable / disable the whole python.d.plugin (all its modules) -enabled: yes - -# ---------------------------------------------------------------------- -# Enable / Disable python.d.plugin modules -#default_run: yes -# -# If "default_run" = "yes" the default for all modules is enabled (yes). -# Setting any of these to "no" will disable it. -# -# If "default_run" = "no" the default for all modules is disabled (no). -# Setting any of these to "yes" will enable it. - -# Enable / Disable explicit garbage collection (full collection run). Default is enabled. -gc_run: yes - -# Garbage collection interval in seconds. Default is 300. -gc_interval: 300 - -# adaptec_raid: yes -# alarms: yes -# am2320: yes -# anomalies: no -# beanstalk: yes -# bind_rndc: yes -# boinc: yes -# ceph: yes -# changefinder: no -# dovecot: yes - -# this is just an example -example: no - -# exim: yes -# fail2ban: yes -# gearman: yes -go_expvar: no - -# haproxy: yes -# hddtemp: yes -hpssa: no -# icecast: yes -# ipfs: yes -# litespeed: yes -# megacli: yes -# memcached: yes -# mongodb: yes -# monit: yes -# nvidia_smi: yes -# nsd: yes -# openldap: yes -# oracledb: yes -# pandas: yes -# postfix: yes -# puppet: yes -# rethinkdbs: yes -# retroshare: yes -# riakkv: yes -# samba: yes -# sensors: yes -# smartd_log: yes -# spigotmc: yes -# squid: yes -# traefik: yes -# tomcat: yes -# tor: yes -# uwsgi: yes -# varnish: yes -# w1sensor: yes -# zscores: no diff --git a/collectors/python.d.plugin/rethinkdbs/Makefile.inc b/collectors/python.d.plugin/rethinkdbs/Makefile.inc deleted file mode 100644 index dec604464..000000000 --- a/collectors/python.d.plugin/rethinkdbs/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += rethinkdbs/rethinkdbs.chart.py -dist_pythonconfig_DATA += rethinkdbs/rethinkdbs.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += rethinkdbs/README.md rethinkdbs/Makefile.inc - diff --git a/collectors/python.d.plugin/retroshare/Makefile.inc b/collectors/python.d.plugin/retroshare/Makefile.inc deleted file mode 100644 index 891193e6d..000000000 --- a/collectors/python.d.plugin/retroshare/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += retroshare/retroshare.chart.py -dist_pythonconfig_DATA += retroshare/retroshare.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += retroshare/README.md retroshare/Makefile.inc - diff --git a/collectors/python.d.plugin/retroshare/metadata.yaml b/collectors/python.d.plugin/retroshare/metadata.yaml deleted file mode 100644 index 0a769616b..000000000 --- a/collectors/python.d.plugin/retroshare/metadata.yaml +++ /dev/null @@ -1,144 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: retroshare - monitored_instance: - name: RetroShare - link: "https://retroshare.cc/" - categories: - - data-collection.media-streaming-servers - icon_filename: "retroshare.png" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - retroshare - - p2p - most_popular: false - overview: - data_collection: - metrics_description: "This collector monitors RetroShare statistics such as application bandwidth, peers, and DHT metrics." - method_description: "It connects to the RetroShare web interface to gather metrics." - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "The collector will attempt to connect and detect a RetroShare web interface through http://localhost:9090, even without any configuration." - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: "RetroShare web interface" - description: | - RetroShare needs to be configured to enable the RetroShare WEB Interface and allow access from the Netdata host. - configuration: - file: - name: python.d/retroshare.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - - name: url - description: The URL to the RetroShare Web UI. - default_value: "http://localhost:9090" - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Local RetroShare Web UI - description: A basic configuration for a RetroShare server running on localhost. - config: | - localhost: - name: 'local retroshare' - url: 'http://localhost:9090' - - name: Remote RetroShare Web UI - description: A basic configuration for a remote RetroShare server. - config: | - remote: - name: 'remote retroshare' - url: 'http://1.2.3.4:9090' - - troubleshooting: - problems: - list: [] - alerts: - - name: retroshare_dht_working - link: https://github.com/netdata/netdata/blob/master/health/health.d/retroshare.conf - metric: retroshare.dht - info: number of DHT peers - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: retroshare.bandwidth - description: RetroShare Bandwidth - unit: "kilobits/s" - chart_type: area - dimensions: - - name: Upload - - name: Download - - name: retroshare.peers - description: RetroShare Peers - unit: "peers" - chart_type: line - dimensions: - - name: All friends - - name: Connected friends - - name: retroshare.dht - description: Retroshare DHT - unit: "peers" - chart_type: line - dimensions: - - name: DHT nodes estimated - - name: RS nodes estimated diff --git a/collectors/python.d.plugin/riakkv/Makefile.inc b/collectors/python.d.plugin/riakkv/Makefile.inc deleted file mode 100644 index 87d29f82f..000000000 --- a/collectors/python.d.plugin/riakkv/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += riakkv/riakkv.chart.py -dist_pythonconfig_DATA += riakkv/riakkv.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += riakkv/README.md riakkv/Makefile.inc - diff --git a/collectors/python.d.plugin/riakkv/metadata.yaml b/collectors/python.d.plugin/riakkv/metadata.yaml deleted file mode 100644 index 441937f89..000000000 --- a/collectors/python.d.plugin/riakkv/metadata.yaml +++ /dev/null @@ -1,358 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: riakkv - monitored_instance: - name: RiakKV - link: "https://riak.com/products/riak-kv/index.html" - categories: - - data-collection.database-servers - icon_filename: "riak.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - database - - nosql - - big data - most_popular: false - overview: - data_collection: - metrics_description: | - This collector monitors RiakKV metrics about throughput, latency, resources and more.' - method_description: "This collector reads the database stats from the `/stats` endpoint." - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "If the /stats endpoint is accessible, RiakKV instances on the local host running on port 8098 will be autodetected." - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Configure RiakKV to enable /stats endpoint - description: | - You can follow the RiakKV configuration reference documentation for how to enable this. - - Source : https://docs.riak.com/riak/kv/2.2.3/configuring/reference/#client-interfaces - configuration: - file: - name: "python.d/riakkv.conf" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: url - description: The url of the server - default_value: no - required: true - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic (default) - folding: - enabled: false - description: A basic example configuration per job - config: | - local: - url: 'http://localhost:8098/stats' - - name: Multi-instance - description: | - > **Note**: When you define multiple jobs, their names must be unique. - - Collecting metrics from local and remote instances. - config: | - local: - url: 'http://localhost:8098/stats' - - remote: - url: 'http://192.0.2.1:8098/stats' - troubleshooting: - problems: - list: [] - alerts: - - name: riakkv_1h_kv_get_mean_latency - link: https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf - metric: riak.kv.latency.get - info: average time between reception of client GET request and subsequent response to client over the last hour - - name: riakkv_kv_get_slow - link: https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf - metric: riak.kv.latency.get - info: average time between reception of client GET request and subsequent response to the client over the last 3 minutes, compared to the average over the last hour - - name: riakkv_1h_kv_put_mean_latency - link: https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf - metric: riak.kv.latency.put - info: average time between reception of client PUT request and subsequent response to the client over the last hour - - name: riakkv_kv_put_slow - link: https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf - metric: riak.kv.latency.put - info: average time between reception of client PUT request and subsequent response to the client over the last 3 minutes, compared to the average over the last hour - - name: riakkv_vm_high_process_count - link: https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf - metric: riak.vm - info: number of processes running in the Erlang VM - - name: riakkv_list_keys_active - link: https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf - metric: riak.core.fsm_active - info: number of currently running list keys finite state machines - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: riak.kv.throughput - description: Reads & writes coordinated by this node - unit: "operations/s" - chart_type: line - dimensions: - - name: gets - - name: puts - - name: riak.dt.vnode_updates - description: Update operations coordinated by local vnodes by data type - unit: "operations/s" - chart_type: line - dimensions: - - name: counters - - name: sets - - name: maps - - name: riak.search - description: Search queries on the node - unit: "queries/s" - chart_type: line - dimensions: - - name: queries - - name: riak.search.documents - description: Documents indexed by search - unit: "documents/s" - chart_type: line - dimensions: - - name: indexed - - name: riak.consistent.operations - description: Consistent node operations - unit: "operations/s" - chart_type: line - dimensions: - - name: gets - - name: puts - - name: riak.kv.latency.get - description: Time between reception of a client GET request and subsequent response to client - unit: "ms" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.kv.latency.put - description: Time between reception of a client PUT request and subsequent response to client - unit: "ms" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.dt.latency.counter_merge - description: Time it takes to perform an Update Counter operation - unit: "ms" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.dt.latency.set_merge - description: Time it takes to perform an Update Set operation - unit: "ms" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.dt.latency.map_merge - description: Time it takes to perform an Update Map operation - unit: "ms" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.search.latency.query - description: Search query latency - unit: "ms" - chart_type: line - dimensions: - - name: median - - name: min - - name: "95" - - name: "99" - - name: "999" - - name: max - - name: riak.search.latency.index - description: Time it takes Search to index a new document - unit: "ms" - chart_type: line - dimensions: - - name: median - - name: min - - name: "95" - - name: "99" - - name: "999" - - name: max - - name: riak.consistent.latency.get - description: Strongly consistent read latency - unit: "ms" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.consistent.latency.put - description: Strongly consistent write latency - unit: "ms" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.vm - description: Total processes running in the Erlang VM - unit: "total" - chart_type: line - dimensions: - - name: processes - - name: riak.vm.memory.processes - description: Memory allocated & used by Erlang processes - unit: "MB" - chart_type: line - dimensions: - - name: allocated - - name: used - - name: riak.kv.siblings_encountered.get - description: Number of siblings encountered during GET operations by this node during the past minute - unit: "siblings" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.kv.objsize.get - description: Object size encountered by this node during the past minute - unit: "KB" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.search.vnodeq_size - description: Number of unprocessed messages in the vnode message queues of Search on this node in the past minute - unit: "messages" - chart_type: line - dimensions: - - name: mean - - name: median - - name: "95" - - name: "99" - - name: "100" - - name: riak.search.index - description: Number of document index errors encountered by Search - unit: "errors" - chart_type: line - dimensions: - - name: errors - - name: riak.core.protobuf_connections - description: Protocol buffer connections by status - unit: "connections" - chart_type: line - dimensions: - - name: active - - name: riak.core.repairs - description: Number of repair operations this node has coordinated - unit: "repairs" - chart_type: line - dimensions: - - name: read - - name: riak.core.fsm_active - description: Active finite state machines by kind - unit: "fsms" - chart_type: line - dimensions: - - name: get - - name: put - - name: secondary index - - name: list keys - - name: riak.core.fsm_rejected - description: Finite state machines being rejected by Sidejobs overload protection - unit: "fsms" - chart_type: line - dimensions: - - name: get - - name: put - - name: riak.search.index - description: Number of writes to Search failed due to bad data format by reason - unit: "writes" - chart_type: line - dimensions: - - name: bad_entry - - name: extract_fail diff --git a/collectors/python.d.plugin/samba/Makefile.inc b/collectors/python.d.plugin/samba/Makefile.inc deleted file mode 100644 index 230a8ba43..000000000 --- a/collectors/python.d.plugin/samba/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += samba/samba.chart.py -dist_pythonconfig_DATA += samba/samba.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += samba/README.md samba/Makefile.inc - diff --git a/collectors/python.d.plugin/samba/metadata.yaml b/collectors/python.d.plugin/samba/metadata.yaml deleted file mode 100644 index ec31e0475..000000000 --- a/collectors/python.d.plugin/samba/metadata.yaml +++ /dev/null @@ -1,205 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: samba - monitored_instance: - name: Samba - link: https://www.samba.org/samba/ - categories: - - data-collection.storage-mount-points-and-filesystems - icon_filename: "samba.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - samba - - file sharing - most_popular: false - overview: - data_collection: - metrics_description: "This collector monitors the performance metrics of Samba file sharing." - method_description: | - It is using the `smbstatus` command-line tool. - - Executed commands: - - - `sudo -n smbstatus -P` - supported_platforms: - include: [] - exclude: [] - multi_instance: false - additional_permissions: - description: | - `smbstatus` is used, which can only be executed by `root`. It uses `sudo` and assumes that it is configured such that the `netdata` user can execute `smbstatus` as root without a password. - default_behavior: - auto_detection: - description: "After all the permissions are satisfied, the `smbstatus -P` binary is executed." - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Enable the samba collector - description: | - The `samba` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. - - ```bash - cd /etc/netdata # Replace this path with your Netdata config directory, if different - sudo ./edit-config python.d.conf - ``` - Change the value of the `samba` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/configure/start-stop-restart.md) for your system. - - title: Permissions and programs - description: | - To run the collector you need: - - - `smbstatus` program - - `sudo` program - - `smbd` must be compiled with profiling enabled - - `smbd` must be started either with the `-P 1` option or inside `smb.conf` using `smbd profiling level` - - The module uses `smbstatus`, which can only be executed by `root`. It uses `sudo` and assumes that it is configured such that the `netdata` user can execute `smbstatus` as root without a password. - - - add to your `/etc/sudoers` file: - - `which smbstatus` shows the full path to the binary. - - ```bash - netdata ALL=(root) NOPASSWD: /path/to/smbstatus - ``` - - - Reset Netdata's systemd unit [CapabilityBoundingSet](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Capabilities) (Linux distributions with systemd) - - The default CapabilityBoundingSet doesn't allow using `sudo`, and is quite strict in general. Resetting is not optimal, but a next-best solution given the inability to execute `smbstatus` using `sudo`. - - - As the `root` user, do the following: - - ```cmd - mkdir /etc/systemd/system/netdata.service.d - echo -e '[Service]\nCapabilityBoundingSet=~' | tee /etc/systemd/system/netdata.service.d/unset-capability-bounding-set.conf - systemctl daemon-reload - systemctl restart netdata.service - ``` - configuration: - file: - name: python.d/samba.conf - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic - description: A basic example configuration. - config: | - my_job_name: - name: my_name - update_every: 1 - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: syscall.rw - description: R/Ws - unit: "KiB/s" - chart_type: area - dimensions: - - name: sendfile - - name: recvfile - - name: smb2.rw - description: R/Ws - unit: "KiB/s" - chart_type: area - dimensions: - - name: readout - - name: writein - - name: readin - - name: writeout - - name: smb2.create_close - description: Create/Close - unit: "operations/s" - chart_type: line - dimensions: - - name: create - - name: close - - name: smb2.get_set_info - description: Info - unit: "operations/s" - chart_type: line - dimensions: - - name: getinfo - - name: setinfo - - name: smb2.find - description: Find - unit: "operations/s" - chart_type: line - dimensions: - - name: find - - name: smb2.notify - description: Notify - unit: "operations/s" - chart_type: line - dimensions: - - name: notify - - name: smb2.sm_counters - description: Lesser Ops - unit: "count" - chart_type: stacked - dimensions: - - name: tcon - - name: negprot - - name: tdis - - name: cancel - - name: logoff - - name: flush - - name: lock - - name: keepalive - - name: break - - name: sessetup diff --git a/collectors/python.d.plugin/sensors/Makefile.inc b/collectors/python.d.plugin/sensors/Makefile.inc deleted file mode 100644 index 5fb26e1c8..000000000 --- a/collectors/python.d.plugin/sensors/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += sensors/sensors.chart.py -dist_pythonconfig_DATA += sensors/sensors.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += sensors/README.md sensors/Makefile.inc - diff --git a/collectors/python.d.plugin/sensors/integrations/linux_sensors_lm-sensors.md b/collectors/python.d.plugin/sensors/integrations/linux_sensors_lm-sensors.md deleted file mode 100644 index e426c8c83..000000000 --- a/collectors/python.d.plugin/sensors/integrations/linux_sensors_lm-sensors.md +++ /dev/null @@ -1,187 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/sensors/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/sensors/metadata.yaml" -sidebar_label: "Linux Sensors (lm-sensors)" -learn_status: "Published" -learn_rel_path: "Data Collection/Hardware Devices and Sensors" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# Linux Sensors (lm-sensors) - - -<img src="https://netdata.cloud/img/microchip.svg" width="150"/> - - -Plugin: python.d.plugin -Module: sensors - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -Examine Linux Sensors metrics with Netdata for insights into hardware health and performance. - -Enhance your system's reliability with real-time hardware health insights. - - -Reads system sensors information (temperature, voltage, electric current, power, etc.) via [lm-sensors](https://hwmon.wiki.kernel.org/lm_sensors). - - -This collector is supported on all platforms. - -This collector supports collecting metrics from multiple instances of this integration, including remote instances. - - -### Default Behavior - -#### Auto-Detection - -The following type of sensors are auto-detected: -- temperature - fan - voltage - current - power - energy - humidity - - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per chip - -Metrics related to chips. Each chip provides a set of the following metrics, each having the chip name in the metric name as reported by `sensors -u`. - - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| sensors.temperature | a dimension per sensor | Celsius | -| sensors.voltage | a dimension per sensor | Volts | -| sensors.current | a dimension per sensor | Ampere | -| sensors.power | a dimension per sensor | Watt | -| sensors.fan | a dimension per sensor | Rotations/min | -| sensors.energy | a dimension per sensor | Joule | -| sensors.humidity | a dimension per sensor | Percent | - - - -## Alerts - -There are no alerts configured by default for this integration. - - -## Setup - -### Prerequisites - -No action required. - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/sensors.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/sensors.conf -``` -#### Options - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| types | The types of sensors to collect. | temperature, fan, voltage, current, power, energy, humidity | yes | -| update_every | Sets the default data collection frequency. | 1 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | - -</details> - -#### Examples - -##### Default - -Default configuration. - -```yaml -types: - - temperature - - fan - - voltage - - current - - power - - energy - - humidity - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `sensors` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin sensors debug trace - ``` - -### lm-sensors doesn't work on your device - - - -### ACPI ring buffer errors are printed - - - - diff --git a/collectors/python.d.plugin/sensors/metadata.yaml b/collectors/python.d.plugin/sensors/metadata.yaml deleted file mode 100644 index d7cb2206f..000000000 --- a/collectors/python.d.plugin/sensors/metadata.yaml +++ /dev/null @@ -1,184 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: sensors - monitored_instance: - name: Linux Sensors (lm-sensors) - link: https://hwmon.wiki.kernel.org/lm_sensors - categories: - - data-collection.hardware-devices-and-sensors - icon_filename: "microchip.svg" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - sensors - - temperature - - voltage - - current - - power - - fan - - energy - - humidity - most_popular: false - overview: - data_collection: - metrics_description: | - Examine Linux Sensors metrics with Netdata for insights into hardware health and performance. - - Enhance your system's reliability with real-time hardware health insights. - method_description: > - Reads system sensors information (temperature, voltage, electric current, power, etc.) via [lm-sensors](https://hwmon.wiki.kernel.org/lm_sensors). - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: > - The following type of sensors are auto-detected: - - - temperature - - fan - - voltage - - current - - power - - energy - - humidity - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: [] - configuration: - file: - name: python.d/sensors.conf - description: "" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: Config options - enabled: true - list: - - name: types - description: The types of sensors to collect. - default_value: "temperature, fan, voltage, current, power, energy, humidity" - required: true - - name: update_every - description: Sets the default data collection frequency. - default_value: 1 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - examples: - folding: - enabled: true - title: Config - list: - - name: Default - folding: - enabled: false - description: Default configuration. - config: | - types: - - temperature - - fan - - voltage - - current - - power - - energy - - humidity - troubleshooting: - problems: - list: - - name: lm-sensors doesn't work on your device - description: | - When `lm-sensors` doesn't work on your device (e.g. for RPi temperatures), - use [the legacy bash collector](https://github.com/netdata/netdata/blob/master/collectors/charts.d.plugin/sensors/README.md) - - name: ACPI ring buffer errors are printed - description: | - There have been reports from users that on certain servers, ACPI ring buffer errors are printed by the kernel (`dmesg`) - when ACPI sensors are being accessed. We are tracking such cases in issue [#827](https://github.com/netdata/netdata/issues/827). - Please join this discussion for help. - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: chip - description: > - Metrics related to chips. Each chip provides a set of the following metrics, each having the chip name in the metric name as reported by `sensors -u`. - labels: [] - metrics: - - name: sensors.temperature - description: Temperature - unit: "Celsius" - chart_type: line - dimensions: - - name: a dimension per sensor - - name: sensors.voltage - description: Voltage - unit: "Volts" - chart_type: line - dimensions: - - name: a dimension per sensor - - name: sensors.current - description: Current - unit: "Ampere" - chart_type: line - dimensions: - - name: a dimension per sensor - - name: sensors.power - description: Power - unit: "Watt" - chart_type: line - dimensions: - - name: a dimension per sensor - - name: sensors.fan - description: Fans speed - unit: "Rotations/min" - chart_type: line - dimensions: - - name: a dimension per sensor - - name: sensors.energy - description: Energy - unit: "Joule" - chart_type: line - dimensions: - - name: a dimension per sensor - - name: sensors.humidity - description: Humidity - unit: "Percent" - chart_type: line - dimensions: - - name: a dimension per sensor diff --git a/collectors/python.d.plugin/sensors/sensors.chart.py b/collectors/python.d.plugin/sensors/sensors.chart.py deleted file mode 100644 index 0d9de3750..000000000 --- a/collectors/python.d.plugin/sensors/sensors.chart.py +++ /dev/null @@ -1,179 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: sensors netdata python.d plugin -# Author: Pawel Krupa (paulfantom) -# SPDX-License-Identifier: GPL-3.0-or-later - -from collections import defaultdict - -from bases.FrameworkServices.SimpleService import SimpleService -from third_party import lm_sensors as sensors - -ORDER = [ - 'temperature', - 'fan', - 'voltage', - 'current', - 'power', - 'energy', - 'humidity', -] - -# This is a prototype of chart definition which is used to dynamically create self.definitions -CHARTS = { - 'temperature': { - 'options': [None, 'Temperature', 'Celsius', 'temperature', 'sensors.temperature', 'line'], - 'lines': [ - [None, None, 'absolute', 1, 1000] - ] - }, - 'voltage': { - 'options': [None, 'Voltage', 'Volts', 'voltage', 'sensors.voltage', 'line'], - 'lines': [ - [None, None, 'absolute', 1, 1000] - ] - }, - 'current': { - 'options': [None, 'Current', 'Ampere', 'current', 'sensors.current', 'line'], - 'lines': [ - [None, None, 'absolute', 1, 1000] - ] - }, - 'power': { - 'options': [None, 'Power', 'Watt', 'power', 'sensors.power', 'line'], - 'lines': [ - [None, None, 'absolute', 1, 1000] - ] - }, - 'fan': { - 'options': [None, 'Fans speed', 'Rotations/min', 'fans', 'sensors.fan', 'line'], - 'lines': [ - [None, None, 'absolute', 1, 1000] - ] - }, - 'energy': { - 'options': [None, 'Energy', 'Joule', 'energy', 'sensors.energy', 'line'], - 'lines': [ - [None, None, 'incremental', 1, 1000] - ] - }, - 'humidity': { - 'options': [None, 'Humidity', 'Percent', 'humidity', 'sensors.humidity', 'line'], - 'lines': [ - [None, None, 'absolute', 1, 1000] - ] - } -} - -LIMITS = { - 'temperature': [-127, 1000], - 'voltage': [-400, 400], - 'current': [-127, 127], - 'fan': [0, 65535] -} - -TYPE_MAP = { - 0: 'voltage', - 1: 'fan', - 2: 'temperature', - 3: 'power', - 4: 'energy', - 5: 'current', - 6: 'humidity', - # 7: 'max_main', - # 16: 'vid', - # 17: 'intrusion', - # 18: 'max_other', - # 24: 'beep_enable' -} - - -class Service(SimpleService): - def __init__(self, configuration=None, name=None): - SimpleService.__init__(self, configuration=configuration, name=name) - self.order = list() - self.definitions = dict() - self.chips = configuration.get('chips') - self.priority = 60000 - - def get_data(self): - seen, data = dict(), dict() - try: - for chip in sensors.ChipIterator(): - chip_name = sensors.chip_snprintf_name(chip) - seen[chip_name] = defaultdict(list) - - for feat in sensors.FeatureIterator(chip): - if feat.type not in TYPE_MAP: - continue - - feat_type = TYPE_MAP[feat.type] - feat_name = str(feat.name.decode()) - feat_label = sensors.get_label(chip, feat) - feat_limits = LIMITS.get(feat_type) - sub_feat = next(sensors.SubFeatureIterator(chip, feat)) # current value - - if not sub_feat: - continue - - try: - v = sensors.get_value(chip, sub_feat.number) - except sensors.SensorsError: - continue - - if v is None: - continue - - seen[chip_name][feat_type].append((feat_name, feat_label)) - - if feat_limits and (v < feat_limits[0] or v > feat_limits[1]): - continue - - data[chip_name + '_' + feat_name] = int(v * 1000) - - except sensors.SensorsError as error: - self.error(error) - return None - - self.update_sensors_charts(seen) - - return data or None - - def update_sensors_charts(self, seen): - for chip_name, feat in seen.items(): - if self.chips and not any([chip_name.startswith(ex) for ex in self.chips]): - continue - - for feat_type, sub_feat in feat.items(): - if feat_type not in ORDER or feat_type not in CHARTS: - continue - - chart_id = '{}_{}'.format(chip_name, feat_type) - if chart_id in self.charts: - continue - - params = [chart_id] + list(CHARTS[feat_type]['options']) - new_chart = self.charts.add_chart(params) - new_chart.params['priority'] = self.get_chart_priority(feat_type) - - for name, label in sub_feat: - lines = list(CHARTS[feat_type]['lines'][0]) - lines[0] = chip_name + '_' + name - lines[1] = label - new_chart.add_dimension(lines) - - def check(self): - try: - sensors.init() - except sensors.SensorsError as error: - self.error(error) - return False - - self.priority = self.charts.priority - - return bool(self.get_data() and self.charts) - - def get_chart_priority(self, feat_type): - for i, v in enumerate(ORDER): - if v == feat_type: - return self.priority + i - return self.priority diff --git a/collectors/python.d.plugin/sensors/sensors.conf b/collectors/python.d.plugin/sensors/sensors.conf deleted file mode 100644 index d3369ba66..000000000 --- a/collectors/python.d.plugin/sensors/sensors.conf +++ /dev/null @@ -1,61 +0,0 @@ -# netdata python.d.plugin configuration for sensors -# -# This file is in YaML format. Generally the format is: -# -# name: value -# - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# Limit the number of sensors types. -# Comment the ones you want to disable. -# Also, re-arranging this list controls the order of the charts at the -# netdata dashboard. - -types: - - temperature - - fan - - voltage - - current - - power - - energy - - humidity - -# ---------------------------------------------------------------------- -# Limit the number of sensors chips. -# Uncomment the first line (chips:) and add chip names below it. -# The chip names that start with like that will be matched. -# You can find the chip names using the sensors command. - -#chips: -# - i8k -# - coretemp -# -# chip names can be found using the sensors shell command -# the prefix is matched (anything that starts like that) -# -#---------------------------------------------------------------------- - diff --git a/collectors/python.d.plugin/smartd_log/Makefile.inc b/collectors/python.d.plugin/smartd_log/Makefile.inc deleted file mode 100644 index dc1d0f3fb..000000000 --- a/collectors/python.d.plugin/smartd_log/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += smartd_log/smartd_log.chart.py -dist_pythonconfig_DATA += smartd_log/smartd_log.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += smartd_log/README.md smartd_log/Makefile.inc - diff --git a/collectors/python.d.plugin/smartd_log/integrations/s.m.a.r.t..md b/collectors/python.d.plugin/smartd_log/integrations/s.m.a.r.t..md deleted file mode 100644 index 5c5b569e9..000000000 --- a/collectors/python.d.plugin/smartd_log/integrations/s.m.a.r.t..md +++ /dev/null @@ -1,223 +0,0 @@ -<!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/smartd_log/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/smartd_log/metadata.yaml" -sidebar_label: "S.M.A.R.T." -learn_status: "Published" -learn_rel_path: "Data Collection/Hardware Devices and Sensors" -most_popular: False -message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -endmeta--> - -# S.M.A.R.T. - - -<img src="https://netdata.cloud/img/smart.png" width="150"/> - - -Plugin: python.d.plugin -Module: smartd_log - -<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" /> - -## Overview - -This collector monitors HDD/SSD S.M.A.R.T. metrics about drive health and performance. - - -It reads `smartd` log files to collect the metrics. - - -This collector is supported on all platforms. - -This collector only supports collecting metrics from a single instance of this integration. - - -### Default Behavior - -#### Auto-Detection - -Upon satisfying the prerequisites, the collector will auto-detect metrics if written in either `/var/log/smartd/` or `/var/lib/smartmontools/`. - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - -The metrics listed below are split in terms of availability on device type, SCSI or ATA. - -### Per S.M.A.R.T. instance - -These metrics refer to the entire monitored application. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | SCSI | ATA | -|:------|:----------|:----|:---:|:---:| -| smartd_log.read_error_rate | a dimension per device | value | | • | -| smartd_log.seek_error_rate | a dimension per device | value | | • | -| smartd_log.soft_read_error_rate | a dimension per device | errors | | • | -| smartd_log.write_error_rate | a dimension per device | value | | • | -| smartd_log.read_total_err_corrected | a dimension per device | errors | • | | -| smartd_log.read_total_unc_errors | a dimension per device | errors | • | | -| smartd_log.write_total_err_corrected | a dimension per device | errors | • | | -| smartd_log.write_total_unc_errors | a dimension per device | errors | • | | -| smartd_log.verify_total_err_corrected | a dimension per device | errors | • | | -| smartd_log.verify_total_unc_errors | a dimension per device | errors | • | | -| smartd_log.sata_interface_downshift | a dimension per device | events | | • | -| smartd_log.udma_crc_error_count | a dimension per device | errors | | • | -| smartd_log.throughput_performance | a dimension per device | value | | • | -| smartd_log.seek_time_performance | a dimension per device | value | | • | -| smartd_log.start_stop_count | a dimension per device | events | | • | -| smartd_log.power_on_hours_count | a dimension per device | hours | | • | -| smartd_log.power_cycle_count | a dimension per device | events | | • | -| smartd_log.unexpected_power_loss | a dimension per device | events | | • | -| smartd_log.spin_up_time | a dimension per device | ms | | • | -| smartd_log.spin_up_retries | a dimension per device | retries | | • | -| smartd_log.calibration_retries | a dimension per device | retries | | • | -| smartd_log.airflow_temperature_celsius | a dimension per device | celsius | | • | -| smartd_log.temperature_celsius | a dimension per device | celsius | • | • | -| smartd_log.reallocated_sectors_count | a dimension per device | sectors | | • | -| smartd_log.reserved_block_count | a dimension per device | percentage | | • | -| smartd_log.program_fail_count | a dimension per device | errors | | • | -| smartd_log.erase_fail_count | a dimension per device | failures | | • | -| smartd_log.wear_leveller_worst_case_erase_count | a dimension per device | erases | | • | -| smartd_log.unused_reserved_nand_blocks | a dimension per device | blocks | | • | -| smartd_log.reallocation_event_count | a dimension per device | events | | • | -| smartd_log.current_pending_sector_count | a dimension per device | sectors | | • | -| smartd_log.offline_uncorrectable_sector_count | a dimension per device | sectors | | • | -| smartd_log.percent_lifetime_used | a dimension per device | percentage | | • | -| smartd_log.media_wearout_indicator | a dimension per device | percentage | | • | -| smartd_log.nand_writes_1gib | a dimension per device | GiB | | • | - - - -## Alerts - -There are no alerts configured by default for this integration. - - -## Setup - -### Prerequisites - -#### Configure `smartd` to write attribute information to files. - -`smartd` must be running with `-A` option to write `smartd` attribute information to files. - -For this you need to set `smartd_opts` (or `SMARTD_ARGS`, check _smartd.service_ content) in `/etc/default/smartmontools`: - -``` -# dump smartd attrs info every 600 seconds -smartd_opts="-A /var/log/smartd/ -i 600" -``` - -You may need to create the smartd directory before smartd will write to it: - -```sh -mkdir -p /var/log/smartd -``` - -Otherwise, all the smartd `.csv` files may get written to `/var/lib/smartmontools` (default location). See also <https://linux.die.net/man/8/smartd> for more info on the `-A --attributelog=PREFIX` command. - -`smartd` appends logs at every run. It's strongly recommended to use `logrotate` for smartd files. - - - -### Configuration - -#### File - -The configuration file name for this integration is `python.d/smartd_log.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config python.d/smartd_log.conf -``` -#### Options - -This particular collector does not need further configuration to work if permissions are satisfied, but you can always customize it's data collection behavior. - -There are 2 sections: - -* Global variables -* One or more JOBS that can define multiple different instances to monitor. - -The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - -Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - -Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - - -<details><summary>Config options</summary> - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| log_path | path to smartd log files. | /var/log/smartd | yes | -| exclude_disks | Space-separated patterns. If the pattern is in the drive name, the module will not collect data for it. | | no | -| age | Time in minutes since the last dump to file. | 30 | no | -| update_every | Sets the default data collection frequency. | 1 | no | -| priority | Controls the order of charts at the netdata dashboard. | 60000 | no | -| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no | -| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no | -| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no | - -</details> - -#### Examples - -##### Basic - -A basic configuration example. - -```yaml -custom: - name: smartd_log - log_path: '/var/log/smartd/' - -``` - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `smartd_log` collector, run the `python.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `python.d.plugin` to debug the collector: - - ```bash - ./python.d.plugin smartd_log debug trace - ``` - - diff --git a/collectors/python.d.plugin/smartd_log/metadata.yaml b/collectors/python.d.plugin/smartd_log/metadata.yaml deleted file mode 100644 index d11949691..000000000 --- a/collectors/python.d.plugin/smartd_log/metadata.yaml +++ /dev/null @@ -1,429 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: smartd_log - monitored_instance: - name: S.M.A.R.T. - link: "https://linux.die.net/man/8/smartd" - categories: - - data-collection.hardware-devices-and-sensors - icon_filename: "smart.png" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - smart - - S.M.A.R.T. - - SCSI devices - - ATA devices - most_popular: false - overview: - data_collection: - metrics_description: | - This collector monitors HDD/SSD S.M.A.R.T. metrics about drive health and performance. - method_description: | - It reads `smartd` log files to collect the metrics. - supported_platforms: - include: [] - exclude: [] - multi_instance: false - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: Upon satisfying the prerequisites, the collector will auto-detect metrics if written in either `/var/log/smartd/` or `/var/lib/smartmontools/`. - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Configure `smartd` to write attribute information to files. - description: | - `smartd` must be running with `-A` option to write `smartd` attribute information to files. - - For this you need to set `smartd_opts` (or `SMARTD_ARGS`, check _smartd.service_ content) in `/etc/default/smartmontools`: - - ``` - # dump smartd attrs info every 600 seconds - smartd_opts="-A /var/log/smartd/ -i 600" - ``` - - You may need to create the smartd directory before smartd will write to it: - - ```sh - mkdir -p /var/log/smartd - ``` - - Otherwise, all the smartd `.csv` files may get written to `/var/lib/smartmontools` (default location). See also <https://linux.die.net/man/8/smartd> for more info on the `-A --attributelog=PREFIX` command. - - `smartd` appends logs at every run. It's strongly recommended to use `logrotate` for smartd files. - configuration: - file: - name: "python.d/smartd_log.conf" - options: - description: | - This particular collector does not need further configuration to work if permissions are satisfied, but you can always customize it's data collection behavior. - - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: log_path - description: path to smartd log files. - default_value: /var/log/smartd - required: true - - name: exclude_disks - description: Space-separated patterns. If the pattern is in the drive name, the module will not collect data for it. - default_value: "" - required: false - - name: age - description: Time in minutes since the last dump to file. - default_value: 30 - required: false - - name: update_every - description: Sets the default data collection frequency. - default_value: 1 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - - name: name - description: > - Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. - default_value: "" - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Basic - description: A basic configuration example. - folding: - enabled: false - config: | - custom: - name: smartd_log - log_path: '/var/log/smartd/' - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "The metrics listed below are split in terms of availability on device type, SCSI or ATA." - availability: - - "SCSI" - - "ATA" - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: smartd_log.read_error_rate - description: Read Error Rate - availability: - - ATA - unit: "value" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.seek_error_rate - description: Seek Error Rate - availability: - - ATA - unit: "value" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.soft_read_error_rate - description: Soft Read Error Rate - availability: - - ATA - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.write_error_rate - description: Write Error Rate - availability: - - ATA - unit: "value" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.read_total_err_corrected - description: Read Error Corrected - availability: - - SCSI - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.read_total_unc_errors - description: Read Error Uncorrected - availability: - - SCSI - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.write_total_err_corrected - description: Write Error Corrected - availability: - - SCSI - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.write_total_unc_errors - description: Write Error Uncorrected - availability: - - SCSI - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.verify_total_err_corrected - description: Verify Error Corrected - availability: - - SCSI - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.verify_total_unc_errors - description: Verify Error Uncorrected - availability: - - SCSI - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.sata_interface_downshift - description: SATA Interface Downshift - availability: - - ATA - unit: "events" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.udma_crc_error_count - description: UDMA CRC Error Count - availability: - - ATA - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.throughput_performance - description: Throughput Performance - availability: - - ATA - unit: "value" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.seek_time_performance - description: Seek Time Performance - availability: - - ATA - unit: "value" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.start_stop_count - description: Start/Stop Count - availability: - - ATA - unit: "events" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.power_on_hours_count - description: Power-On Hours Count - availability: - - ATA - unit: "hours" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.power_cycle_count - description: Power Cycle Count - availability: - - ATA - unit: "events" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.unexpected_power_loss - description: Unexpected Power Loss - availability: - - ATA - unit: "events" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.spin_up_time - description: Spin-Up Time - availability: - - ATA - unit: "ms" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.spin_up_retries - description: Spin-up Retries - availability: - - ATA - unit: "retries" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.calibration_retries - description: Calibration Retries - availability: - - ATA - unit: "retries" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.airflow_temperature_celsius - description: Airflow Temperature Celsius - availability: - - ATA - unit: "celsius" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.temperature_celsius - description: Temperature - availability: - - SCSI - - ATA - unit: "celsius" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.reallocated_sectors_count - description: Reallocated Sectors Count - availability: - - ATA - unit: "sectors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.reserved_block_count - description: Reserved Block Count - availability: - - ATA - unit: "percentage" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.program_fail_count - description: Program Fail Count - availability: - - ATA - unit: "errors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.erase_fail_count - description: Erase Fail Count - availability: - - ATA - unit: "failures" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.wear_leveller_worst_case_erase_count - description: Wear Leveller Worst Case Erase Count - availability: - - ATA - unit: "erases" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.unused_reserved_nand_blocks - description: Unused Reserved NAND Blocks - availability: - - ATA - unit: "blocks" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.reallocation_event_count - description: Reallocation Event Count - availability: - - ATA - unit: "events" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.current_pending_sector_count - description: Current Pending Sector Count - availability: - - ATA - unit: "sectors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.offline_uncorrectable_sector_count - description: Offline Uncorrectable Sector Count - availability: - - ATA - unit: "sectors" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.percent_lifetime_used - description: Percent Lifetime Used - availability: - - ATA - unit: "percentage" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.media_wearout_indicator - description: Media Wearout Indicator - availability: - - ATA - unit: "percentage" - chart_type: line - dimensions: - - name: a dimension per device - - name: smartd_log.nand_writes_1gib - description: NAND Writes - availability: - - ATA - unit: "GiB" - chart_type: line - dimensions: - - name: a dimension per device diff --git a/collectors/python.d.plugin/smartd_log/smartd_log.chart.py b/collectors/python.d.plugin/smartd_log/smartd_log.chart.py deleted file mode 100644 index a896164df..000000000 --- a/collectors/python.d.plugin/smartd_log/smartd_log.chart.py +++ /dev/null @@ -1,790 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: smart netdata python.d module -# Author: ilyam8, vorph1 -# SPDX-License-Identifier: GPL-3.0-or-later - -import os -import re -from copy import deepcopy -from time import time - -from bases.FrameworkServices.SimpleService import SimpleService -from bases.collection import read_last_line - -INCREMENTAL = 'incremental' -ABSOLUTE = 'absolute' - -ATA = 'ata' -SCSI = 'scsi' -CSV = '.csv' - -DEF_RESCAN_INTERVAL = 60 -DEF_AGE = 30 -DEF_PATH = '/var/log/smartd' - -ATTR1 = '1' -ATTR2 = '2' -ATTR3 = '3' -ATTR4 = '4' -ATTR5 = '5' -ATTR7 = '7' -ATTR8 = '8' -ATTR9 = '9' -ATTR10 = '10' -ATTR11 = '11' -ATTR12 = '12' -ATTR13 = '13' -ATTR170 = '170' -ATTR171 = '171' -ATTR172 = '172' -ATTR173 = '173' -ATTR174 = '174' -ATTR177 = '177' -ATTR180 = '180' -ATTR183 = '183' -ATTR190 = '190' -ATTR194 = '194' -ATTR196 = '196' -ATTR197 = '197' -ATTR198 = '198' -ATTR199 = '199' -ATTR202 = '202' -ATTR206 = '206' -ATTR233 = '233' -ATTR241 = '241' -ATTR242 = '242' -ATTR249 = '249' -ATTR_READ_ERR_COR = 'read-total-err-corrected' -ATTR_READ_ERR_UNC = 'read-total-unc-errors' -ATTR_WRITE_ERR_COR = 'write-total-err-corrected' -ATTR_WRITE_ERR_UNC = 'write-total-unc-errors' -ATTR_VERIFY_ERR_COR = 'verify-total-err-corrected' -ATTR_VERIFY_ERR_UNC = 'verify-total-unc-errors' -ATTR_TEMPERATURE = 'temperature' - -RE_ATA = re.compile( - '(\d+);' # attribute - '(\d+);' # normalized value - '(\d+)', # raw value - re.X -) - -RE_SCSI = re.compile( - '([a-z-]+);' # attribute - '([0-9.]+)', # raw value - re.X -) - -ORDER = [ - # errors - 'read_error_rate', - 'seek_error_rate', - 'soft_read_error_rate', - 'write_error_rate', - 'read_total_err_corrected', - 'read_total_unc_errors', - 'write_total_err_corrected', - 'write_total_unc_errors', - 'verify_total_err_corrected', - 'verify_total_unc_errors', - # external failure - 'sata_interface_downshift', - 'udma_crc_error_count', - # performance - 'throughput_performance', - 'seek_time_performance', - # power - 'start_stop_count', - 'power_on_hours_count', - 'power_cycle_count', - 'unexpected_power_loss', - # spin - 'spin_up_time', - 'spin_up_retries', - 'calibration_retries', - # temperature - 'airflow_temperature_celsius', - 'temperature_celsius', - # wear - 'reallocated_sectors_count', - 'reserved_block_count', - 'program_fail_count', - 'erase_fail_count', - 'wear_leveller_worst_case_erase_count', - 'unused_reserved_nand_blocks', - 'reallocation_event_count', - 'current_pending_sector_count', - 'offline_uncorrectable_sector_count', - 'percent_lifetime_used', - 'media_wearout_indicator', - 'total_lbas_written', - 'total_lbas_read', -] - -CHARTS = { - 'read_error_rate': { - 'options': [None, 'Read Error Rate', 'value', 'errors', 'smartd_log.read_error_rate', 'line'], - 'lines': [], - 'attrs': [ATTR1], - 'algo': ABSOLUTE, - }, - 'seek_error_rate': { - 'options': [None, 'Seek Error Rate', 'value', 'errors', 'smartd_log.seek_error_rate', 'line'], - 'lines': [], - 'attrs': [ATTR7], - 'algo': ABSOLUTE, - }, - 'soft_read_error_rate': { - 'options': [None, 'Soft Read Error Rate', 'errors', 'errors', 'smartd_log.soft_read_error_rate', 'line'], - 'lines': [], - 'attrs': [ATTR13], - 'algo': INCREMENTAL, - }, - 'write_error_rate': { - 'options': [None, 'Write Error Rate', 'value', 'errors', 'smartd_log.write_error_rate', 'line'], - 'lines': [], - 'attrs': [ATTR206], - 'algo': ABSOLUTE, - }, - 'read_total_err_corrected': { - 'options': [None, 'Read Error Corrected', 'errors', 'errors', 'smartd_log.read_total_err_corrected', 'line'], - 'lines': [], - 'attrs': [ATTR_READ_ERR_COR], - 'algo': INCREMENTAL, - }, - 'read_total_unc_errors': { - 'options': [None, 'Read Error Uncorrected', 'errors', 'errors', 'smartd_log.read_total_unc_errors', 'line'], - 'lines': [], - 'attrs': [ATTR_READ_ERR_UNC], - 'algo': INCREMENTAL, - }, - 'write_total_err_corrected': { - 'options': [None, 'Write Error Corrected', 'errors', 'errors', 'smartd_log.write_total_err_corrected', 'line'], - 'lines': [], - 'attrs': [ATTR_WRITE_ERR_COR], - 'algo': INCREMENTAL, - }, - 'write_total_unc_errors': { - 'options': [None, 'Write Error Uncorrected', 'errors', 'errors', 'smartd_log.write_total_unc_errors', 'line'], - 'lines': [], - 'attrs': [ATTR_WRITE_ERR_UNC], - 'algo': INCREMENTAL, - }, - 'verify_total_err_corrected': { - 'options': [None, 'Verify Error Corrected', 'errors', 'errors', 'smartd_log.verify_total_err_corrected', - 'line'], - 'lines': [], - 'attrs': [ATTR_VERIFY_ERR_COR], - 'algo': INCREMENTAL, - }, - 'verify_total_unc_errors': { - 'options': [None, 'Verify Error Uncorrected', 'errors', 'errors', 'smartd_log.verify_total_unc_errors', 'line'], - 'lines': [], - 'attrs': [ATTR_VERIFY_ERR_UNC], - 'algo': INCREMENTAL, - }, - 'sata_interface_downshift': { - 'options': [None, 'SATA Interface Downshift', 'events', 'external failure', - 'smartd_log.sata_interface_downshift', 'line'], - 'lines': [], - 'attrs': [ATTR183], - 'algo': INCREMENTAL, - }, - 'udma_crc_error_count': { - 'options': [None, 'UDMA CRC Error Count', 'errors', 'external failure', 'smartd_log.udma_crc_error_count', - 'line'], - 'lines': [], - 'attrs': [ATTR199], - 'algo': INCREMENTAL, - }, - 'throughput_performance': { - 'options': [None, 'Throughput Performance', 'value', 'performance', 'smartd_log.throughput_performance', - 'line'], - 'lines': [], - 'attrs': [ATTR2], - 'algo': ABSOLUTE, - }, - 'seek_time_performance': { - 'options': [None, 'Seek Time Performance', 'value', 'performance', 'smartd_log.seek_time_performance', 'line'], - 'lines': [], - 'attrs': [ATTR8], - 'algo': ABSOLUTE, - }, - 'start_stop_count': { - 'options': [None, 'Start/Stop Count', 'events', 'power', 'smartd_log.start_stop_count', 'line'], - 'lines': [], - 'attrs': [ATTR4], - 'algo': ABSOLUTE, - }, - 'power_on_hours_count': { - 'options': [None, 'Power-On Hours Count', 'hours', 'power', 'smartd_log.power_on_hours_count', 'line'], - 'lines': [], - 'attrs': [ATTR9], - 'algo': ABSOLUTE, - }, - 'power_cycle_count': { - 'options': [None, 'Power Cycle Count', 'events', 'power', 'smartd_log.power_cycle_count', 'line'], - 'lines': [], - 'attrs': [ATTR12], - 'algo': ABSOLUTE, - }, - 'unexpected_power_loss': { - 'options': [None, 'Unexpected Power Loss', 'events', 'power', 'smartd_log.unexpected_power_loss', 'line'], - 'lines': [], - 'attrs': [ATTR174], - 'algo': ABSOLUTE, - }, - 'spin_up_time': { - 'options': [None, 'Spin-Up Time', 'ms', 'spin', 'smartd_log.spin_up_time', 'line'], - 'lines': [], - 'attrs': [ATTR3], - 'algo': ABSOLUTE, - }, - 'spin_up_retries': { - 'options': [None, 'Spin-up Retries', 'retries', 'spin', 'smartd_log.spin_up_retries', 'line'], - 'lines': [], - 'attrs': [ATTR10], - 'algo': INCREMENTAL, - }, - 'calibration_retries': { - 'options': [None, 'Calibration Retries', 'retries', 'spin', 'smartd_log.calibration_retries', 'line'], - 'lines': [], - 'attrs': [ATTR11], - 'algo': INCREMENTAL, - }, - 'airflow_temperature_celsius': { - 'options': [None, 'Airflow Temperature Celsius', 'celsius', 'temperature', - 'smartd_log.airflow_temperature_celsius', 'line'], - 'lines': [], - 'attrs': [ATTR190], - 'algo': ABSOLUTE, - }, - 'temperature_celsius': { - 'options': [None, 'Temperature', 'celsius', 'temperature', 'smartd_log.temperature_celsius', 'line'], - 'lines': [], - 'attrs': [ATTR194, ATTR_TEMPERATURE], - 'algo': ABSOLUTE, - }, - 'reallocated_sectors_count': { - 'options': [None, 'Reallocated Sectors Count', 'sectors', 'wear', 'smartd_log.reallocated_sectors_count', - 'line'], - 'lines': [], - 'attrs': [ATTR5], - 'algo': ABSOLUTE, - }, - 'reserved_block_count': { - 'options': [None, 'Reserved Block Count', 'percentage', 'wear', 'smartd_log.reserved_block_count', 'line'], - 'lines': [], - 'attrs': [ATTR170], - 'algo': ABSOLUTE, - }, - 'program_fail_count': { - 'options': [None, 'Program Fail Count', 'errors', 'wear', 'smartd_log.program_fail_count', 'line'], - 'lines': [], - 'attrs': [ATTR171], - 'algo': INCREMENTAL, - }, - 'erase_fail_count': { - 'options': [None, 'Erase Fail Count', 'failures', 'wear', 'smartd_log.erase_fail_count', 'line'], - 'lines': [], - 'attrs': [ATTR172], - 'algo': INCREMENTAL, - }, - 'wear_leveller_worst_case_erase_count': { - 'options': [None, 'Wear Leveller Worst Case Erase Count', 'erases', 'wear', - 'smartd_log.wear_leveller_worst_case_erase_count', 'line'], - 'lines': [], - 'attrs': [ATTR173], - 'algo': ABSOLUTE, - }, - 'unused_reserved_nand_blocks': { - 'options': [None, 'Unused Reserved NAND Blocks', 'blocks', 'wear', 'smartd_log.unused_reserved_nand_blocks', - 'line'], - 'lines': [], - 'attrs': [ATTR180], - 'algo': ABSOLUTE, - }, - 'reallocation_event_count': { - 'options': [None, 'Reallocation Event Count', 'events', 'wear', 'smartd_log.reallocation_event_count', 'line'], - 'lines': [], - 'attrs': [ATTR196], - 'algo': INCREMENTAL, - }, - 'current_pending_sector_count': { - 'options': [None, 'Current Pending Sector Count', 'sectors', 'wear', 'smartd_log.current_pending_sector_count', - 'line'], - 'lines': [], - 'attrs': [ATTR197], - 'algo': ABSOLUTE, - }, - 'offline_uncorrectable_sector_count': { - 'options': [None, 'Offline Uncorrectable Sector Count', 'sectors', 'wear', - 'smartd_log.offline_uncorrectable_sector_count', 'line'], - 'lines': [], - 'attrs': [ATTR198], - 'algo': ABSOLUTE, - - }, - 'percent_lifetime_used': { - 'options': [None, 'Percent Lifetime Used', 'percentage', 'wear', 'smartd_log.percent_lifetime_used', 'line'], - 'lines': [], - 'attrs': [ATTR202], - 'algo': ABSOLUTE, - }, - 'media_wearout_indicator': { - 'options': [None, 'Media Wearout Indicator', 'percentage', 'wear', 'smartd_log.media_wearout_indicator', 'line'], - 'lines': [], - 'attrs': [ATTR233, ATTR177], - 'algo': ABSOLUTE, - }, - 'nand_writes_1gib': { - 'options': [None, 'NAND Writes', 'GiB', 'wear', 'smartd_log.nand_writes_1gib', 'line'], - 'lines': [], - 'attrs': [ATTR249], - 'algo': ABSOLUTE, - }, - 'total_lbas_written': { - 'options': [None, 'Total LBAs Written', 'sectors', 'wear', 'smartd_log.total_lbas_written', 'line'], - 'lines': [], - 'attrs': [ATTR241], - 'algo': ABSOLUTE, - }, - 'total_lbas_read': { - 'options': [None, 'Total LBAs Read', 'sectors', 'wear', 'smartd_log.total_lbas_read', 'line'], - 'lines': [], - 'attrs': [ATTR242], - 'algo': ABSOLUTE, - }, -} - -# NOTE: 'parse_temp' decodes ATA 194 raw value. Not heavily tested. Written by @Ferroin -# C code: -# https://github.com/smartmontools/smartmontools/blob/master/smartmontools/atacmds.cpp#L2051 -# -# Calling 'parse_temp' on the raw value will return a 4-tuple, containing -# * temperature -# * minimum -# * maximum -# * over-temperature count -# substituting None for values it can't decode. -# -# Example: -# >>> parse_temp(42952491042) -# >>> (34, 10, 43, None) -# -# -# def check_temp_word(i): -# if i <= 0x7F: -# return 0x11 -# elif i <= 0xFF: -# return 0x01 -# elif 0xFF80 <= i: -# return 0x10 -# return 0x00 -# -# -# def check_temp_range(t, b0, b1): -# if b0 > b1: -# t0, t1 = b1, b0 -# else: -# t0, t1 = b0, b1 -# -# if all([ -# -60 <= t0, -# t0 <= t, -# t <= t1, -# t1 <= 120, -# not (t0 == -1 and t1 <= 0) -# ]): -# return t0, t1 -# return None, None -# -# -# def parse_temp(raw): -# byte = list() -# word = list() -# for i in range(0, 6): -# byte.append(0xFF & (raw >> (i * 8))) -# for i in range(0, 3): -# word.append(0xFFFF & (raw >> (i * 16))) -# -# ctwd = check_temp_word(word[0]) -# -# if not word[2]: -# if ctwd and not word[1]: -# # byte[0] is temp, no other data -# return byte[0], None, None, None -# -# if ctwd and all(check_temp_range(byte[0], byte[2], byte[3])): -# # byte[0] is temp, byte[2] is max or min, byte[3] is min or max -# trange = check_temp_range(byte[0], byte[2], byte[3]) -# return byte[0], trange[0], trange[1], None -# -# if ctwd and all(check_temp_range(byte[0], byte[1], byte[2])): -# # byte[0] is temp, byte[1] is max or min, byte[2] is min or max -# trange = check_temp_range(byte[0], byte[1], byte[2]) -# return byte[0], trange[0], trange[1], None -# -# return None, None, None, None -# -# if ctwd: -# if all( -# [ -# ctwd & check_temp_word(word[1]) & check_temp_word(word[2]) != 0x00, -# all(check_temp_range(byte[0], byte[2], byte[4])), -# ] -# ): -# # byte[0] is temp, byte[2] is max or min, byte[4] is min or max -# trange = check_temp_range(byte[0], byte[2], byte[4]) -# return byte[0], trange[0], trange[1], None -# else: -# trange = check_temp_range(byte[0], byte[2], byte[3]) -# if word[2] < 0x7FFF and all(trange) and trange[1] >= 40: -# # byte[0] is temp, byte[2] is max or min, byte[3] is min or max, word[2] is overtemp count -# return byte[0], trange[0], trange[1], word[2] -# # no data -# return None, None, None, None - - -CHARTED_ATTRS = dict((attr, k) for k, v in CHARTS.items() for attr in v['attrs']) - - -class BaseAtaSmartAttribute: - def __init__(self, name, normalized_value, raw_value): - self.name = name - self.normalized_value = normalized_value - self.raw_value = raw_value - - def value(self): - raise NotImplementedError - - -class AtaRaw(BaseAtaSmartAttribute): - def value(self): - return self.raw_value - - -class AtaNormalized(BaseAtaSmartAttribute): - def value(self): - return self.normalized_value - - -class Ata3(BaseAtaSmartAttribute): - def value(self): - value = int(self.raw_value) - # https://github.com/netdata/netdata/issues/5919 - # - # 3;151;38684000679; - # 423 (Average 447) - # 38684000679 & 0xFFF -> 423 - # (38684000679 & 0xFFF0000) >> 16 -> 447 - if value > 1e6: - return value & 0xFFF - return value - - -class Ata9(BaseAtaSmartAttribute): - def value(self): - value = int(self.raw_value) - if value > 1e6: - return value & 0xFFFF - return value - - -class Ata190(BaseAtaSmartAttribute): - def value(self): - return 100 - int(self.normalized_value) - - -class Ata194(BaseAtaSmartAttribute): - # https://github.com/netdata/netdata/issues/3041 - # https://github.com/netdata/netdata/issues/5919 - # - # The low byte is the current temperature, the third lowest is the maximum, and the fifth lowest is the minimum - def value(self): - value = int(self.raw_value) - if value > 1e6: - return value & 0xFF - return min(int(self.normalized_value), int(self.raw_value)) - - -class BaseSCSISmartAttribute: - def __init__(self, name, raw_value): - self.name = name - self.raw_value = raw_value - - def value(self): - raise NotImplementedError - - -class SCSIRaw(BaseSCSISmartAttribute): - def value(self): - return self.raw_value - - -def ata_attribute_factory(value): - name = value[0] - - if name == ATTR3: - return Ata3(*value) - elif name == ATTR9: - return Ata9(*value) - elif name == ATTR190: - return Ata190(*value) - elif name == ATTR194: - return Ata194(*value) - elif name in [ - ATTR1, - ATTR7, - ATTR177, - ATTR202, - ATTR206, - ATTR233, - ]: - return AtaNormalized(*value) - - return AtaRaw(*value) - - -def scsi_attribute_factory(value): - return SCSIRaw(*value) - - -def attribute_factory(value): - name = value[0] - if name.isdigit(): - return ata_attribute_factory(value) - return scsi_attribute_factory(value) - - -def handle_error(*errors): - def on_method(method): - def on_call(*args): - try: - return method(*args) - except errors: - return None - - return on_call - - return on_method - - -class DiskLogFile: - def __init__(self, full_path): - self.path = full_path - self.size = os.path.getsize(full_path) - - @handle_error(OSError) - def is_changed(self): - return self.size != os.path.getsize(self.path) - - @handle_error(OSError) - def is_active(self, current_time, limit): - return (current_time - os.path.getmtime(self.path)) / 60 < limit - - @handle_error(OSError) - def read(self): - self.size = os.path.getsize(self.path) - return read_last_line(self.path) - - -class BaseDisk: - def __init__(self, name, log_file): - self.raw_name = name - self.name = re.sub(r'_+', '_', name) - self.log_file = log_file - self.attrs = list() - self.alive = True - self.charted = False - - def __eq__(self, other): - if isinstance(other, BaseDisk): - return self.raw_name == other.raw_name - return self.raw_name == other - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash(repr(self)) - - def parser(self, data): - raise NotImplementedError - - @handle_error(TypeError) - def populate_attrs(self): - self.attrs = list() - line = self.log_file.read() - for value in self.parser(line): - self.attrs.append(attribute_factory(value)) - - return len(self.attrs) - - def data(self): - data = dict() - for attr in self.attrs: - data['{0}_{1}'.format(self.name, attr.name)] = attr.value() - return data - - -class ATADisk(BaseDisk): - def parser(self, data): - return RE_ATA.findall(data) - - -class SCSIDisk(BaseDisk): - def parser(self, data): - return RE_SCSI.findall(data) - - -class Service(SimpleService): - def __init__(self, configuration=None, name=None): - SimpleService.__init__(self, configuration=configuration, name=name) - self.order = ORDER - self.definitions = deepcopy(CHARTS) - self.log_path = configuration.get('log_path', DEF_PATH) - self.age = configuration.get('age', DEF_AGE) - self.exclude = configuration.get('exclude_disks', str()).split() - self.disks = list() - self.runs = 0 - self.do_force_rescan = False - - def check(self): - return self.scan() > 0 - - def get_data(self): - self.runs += 1 - - if self.do_force_rescan or self.runs % DEF_RESCAN_INTERVAL == 0: - self.cleanup() - self.scan() - self.do_force_rescan = False - - data = dict() - - for disk in self.disks: - if not disk.alive: - continue - - if not disk.charted: - self.add_disk_to_charts(disk) - - changed = disk.log_file.is_changed() - - if changed is None: - disk.alive = False - self.do_force_rescan = True - continue - - if changed and disk.populate_attrs() is None: - disk.alive = False - self.do_force_rescan = True - continue - - data.update(disk.data()) - - return data - - def cleanup(self): - current_time = time() - for disk in self.disks[:]: - if any( - [ - not disk.alive, - not disk.log_file.is_active(current_time, self.age), - ] - ): - self.disks.remove(disk.raw_name) - self.remove_disk_from_charts(disk) - - def scan(self): - self.debug('scanning {0}'.format(self.log_path)) - current_time = time() - - for full_name in os.listdir(self.log_path): - disk = self.create_disk_from_file(full_name, current_time) - if not disk: - continue - self.disks.append(disk) - - return len(self.disks) - - def create_disk_from_file(self, full_name, current_time): - if not full_name.endswith(CSV): - self.debug('skipping {0}: not a csv file'.format(full_name)) - return None - - name = os.path.basename(full_name).split('.')[-3] - path = os.path.join(self.log_path, full_name) - - if name in self.disks: - self.debug('skipping {0}: already in disks'.format(full_name)) - return None - - if [p for p in self.exclude if p in name]: - self.debug('skipping {0}: filtered by `exclude` option'.format(full_name)) - return None - - if not os.access(path, os.R_OK): - self.debug('skipping {0}: not readable'.format(full_name)) - return None - - if os.path.getsize(path) == 0: - self.debug('skipping {0}: zero size'.format(full_name)) - return None - - if (current_time - os.path.getmtime(path)) / 60 > self.age: - self.debug('skipping {0}: haven\'t been updated for last {1} minutes'.format(full_name, self.age)) - return None - - if ATA in full_name: - disk = ATADisk(name, DiskLogFile(path)) - elif SCSI in full_name: - disk = SCSIDisk(name, DiskLogFile(path)) - else: - self.debug('skipping {0}: unknown type'.format(full_name)) - return None - - disk.populate_attrs() - if not disk.attrs: - self.error('skipping {0}: parsing failed'.format(full_name)) - return None - - self.debug('added {0}'.format(full_name)) - return disk - - def add_disk_to_charts(self, disk): - if len(self.charts) == 0 or disk.charted: - return - disk.charted = True - - for attr in disk.attrs: - chart_id = CHARTED_ATTRS.get(attr.name) - - if not chart_id or chart_id not in self.charts: - continue - - chart = self.charts[chart_id] - dim = [ - '{0}_{1}'.format(disk.name, attr.name), - disk.name, - CHARTS[chart_id]['algo'], - ] - - if dim[0] in self.charts[chart_id].dimensions: - chart.hide_dimension(dim[0], reverse=True) - else: - chart.add_dimension(dim) - - def remove_disk_from_charts(self, disk): - if len(self.charts) == 0 or not disk.charted: - return - - for attr in disk.attrs: - chart_id = CHARTED_ATTRS.get(attr.name) - - if not chart_id or chart_id not in self.charts: - continue - - self.charts[chart_id].del_dimension('{0}_{1}'.format(disk.name, attr.name)) diff --git a/collectors/python.d.plugin/smartd_log/smartd_log.conf b/collectors/python.d.plugin/smartd_log/smartd_log.conf deleted file mode 100644 index 3e81317f1..000000000 --- a/collectors/python.d.plugin/smartd_log/smartd_log.conf +++ /dev/null @@ -1,76 +0,0 @@ -# netdata python.d.plugin configuration for smartd log -# -# This file is in YaML format. Generally the format is: -# -# name: value -# -# There are 2 sections: -# - global variables -# - one or more JOBS -# -# JOBS allow you to collect values from multiple sources. -# Each source will have its own set of charts. -# -# JOB parameters have to be indented (using spaces only, example below). - -# ---------------------------------------------------------------------- -# Global Variables -# These variables set the defaults for all JOBs, however each JOB -# may define its own, overriding the defaults. - -# update_every sets the default data collection frequency. -# If unset, the python.d.plugin default is used. -# update_every: 1 - -# priority controls the order of charts at the netdata dashboard. -# Lower numbers move the charts towards the top of the page. -# If unset, the default for python.d.plugin is used. -# priority: 60000 - -# penalty indicates whether to apply penalty to update_every in case of failures. -# Penalty will increase every 5 failed updates in a row. Maximum penalty is 10 minutes. -# penalty: yes - -# autodetection_retry sets the job re-check interval in seconds. -# The job is not deleted if check fails. -# Attempts to start the job are made once every autodetection_retry. -# This feature is disabled by default. -# autodetection_retry: 0 - -# ---------------------------------------------------------------------- -# JOBS (data collection sources) -# -# The default JOBS share the same *name*. JOBS with the same name -# are mutually exclusive. Only one of them will be allowed running at -# any time. This allows autodetection to try several alternatives and -# pick the one that works. -# -# Any number of jobs is supported. -# -# All python.d.plugin JOBS (for all its modules) support a set of -# predefined parameters. These are: -# -# job_name: -# name: myname # the JOB's name as it will appear at the -# # dashboard (by default is the job_name) -# # JOBs sharing a name are mutually exclusive -# update_every: 1 # the JOB's data collection frequency -# priority: 60000 # the JOB's order on the dashboard -# penalty: yes # the JOB's penalty -# autodetection_retry: 0 # the JOB's re-check interval in seconds -# -# Additionally to the above, smartd_log also supports the following: -# -# log_path: '/path/to/smartd_logs' # path to smartd log files. Default is /var/log/smartd -# exclude_disks: 'PATTERN1 PATTERN2' # space separated patterns. If the pattern is in the drive name, the module will not collect data for it. -# age: 30 # time in minutes since the last dump to file. If smartd has not dumped data within this time the job exits. -# -# ---------------------------------------------------------------------- - -custom: - name: smartd_log - log_path: '/var/log/smartd/' - -debian: - name: smartd_log - log_path: '/var/lib/smartmontools/' diff --git a/collectors/python.d.plugin/spigotmc/Makefile.inc b/collectors/python.d.plugin/spigotmc/Makefile.inc deleted file mode 100644 index f9fa8b6b0..000000000 --- a/collectors/python.d.plugin/spigotmc/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += spigotmc/spigotmc.chart.py -dist_pythonconfig_DATA += spigotmc/spigotmc.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += spigotmc/README.md spigotmc/Makefile.inc - diff --git a/collectors/python.d.plugin/squid/Makefile.inc b/collectors/python.d.plugin/squid/Makefile.inc deleted file mode 100644 index 76ecff81e..000000000 --- a/collectors/python.d.plugin/squid/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += squid/squid.chart.py -dist_pythonconfig_DATA += squid/squid.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += squid/README.md squid/Makefile.inc - diff --git a/collectors/python.d.plugin/tomcat/Makefile.inc b/collectors/python.d.plugin/tomcat/Makefile.inc deleted file mode 100644 index 940a7835e..000000000 --- a/collectors/python.d.plugin/tomcat/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += tomcat/tomcat.chart.py -dist_pythonconfig_DATA += tomcat/tomcat.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += tomcat/README.md tomcat/Makefile.inc - diff --git a/collectors/python.d.plugin/tor/Makefile.inc b/collectors/python.d.plugin/tor/Makefile.inc deleted file mode 100644 index 5a45f9b79..000000000 --- a/collectors/python.d.plugin/tor/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += tor/tor.chart.py -dist_pythonconfig_DATA += tor/tor.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += tor/README.md tor/Makefile.inc - diff --git a/collectors/python.d.plugin/traefik/Makefile.inc b/collectors/python.d.plugin/traefik/Makefile.inc deleted file mode 100644 index 926d56dda..000000000 --- a/collectors/python.d.plugin/traefik/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += traefik/traefik.chart.py -dist_pythonconfig_DATA += traefik/traefik.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += traefik/README.md traefik/Makefile.inc - diff --git a/collectors/python.d.plugin/traefik/README.md b/collectors/python.d.plugin/traefik/README.md deleted file mode 100644 index 40ed24f04..000000000 --- a/collectors/python.d.plugin/traefik/README.md +++ /dev/null @@ -1,98 +0,0 @@ -<!-- -title: "Traefik monitoring with Netdata" -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/traefik/README.md" -sidebar_label: "traefik-python.d.plugin" -learn_status: "Published" -learn_topic_type: "References" -learn_rel_path: "Integrations/Monitor/Webapps" ---> - -# Traefik collector - -Uses the `health` API to provide statistics. - -It produces: - -1. **Responses** by statuses - - - success (1xx, 2xx, 304) - - error (5xx) - - redirect (3xx except 304) - - bad (4xx) - - other (all other responses) - -2. **Responses** by codes - - - 2xx (successful) - - 5xx (internal server errors) - - 3xx (redirect) - - 4xx (bad) - - 1xx (informational) - - other (non-standart responses) - -3. **Detailed Response Codes** requests/s (number of responses for each response code family individually) - -4. **Requests**/s - - - request statistics - -5. **Total response time** - - - sum of all response time - -6. **Average response time** - -7. **Average response time per iteration** - -8. **Uptime** - - - Traefik server uptime - -## Configuration - -Edit the `python.d/traefik.conf` configuration file using `edit-config` from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically -at `/etc/netdata`. - -```bash -cd /etc/netdata # Replace this path with your Netdata config directory, if different -sudo ./edit-config python.d/traefik.conf -``` - -Needs only `url` to server's `health` - -Here is an example for local server: - -```yaml -update_every: 1 -priority: 60000 - -local: - url: 'http://localhost:8080/health' -``` - -Without configuration, module attempts to connect to `http://localhost:8080/health`. - - - - -### Troubleshooting - -To troubleshoot issues with the `traefik` module, run the `python.d.plugin` with the debug option enabled. The -output will give you the output of the data collection job or error messages on why the collector isn't working. - -First, navigate to your plugins directory, usually they are located under `/usr/libexec/netdata/plugins.d/`. If that's -not the case on your system, open `netdata.conf` and look for the setting `plugins directory`. Once you're in the -plugin's directory, switch to the `netdata` user. - -```bash -cd /usr/libexec/netdata/plugins.d/ -sudo su -s /bin/bash netdata -``` - -Now you can manually run the `traefik` module in debug mode: - -```bash -./python.d.plugin traefik debug trace -``` - diff --git a/collectors/python.d.plugin/traefik/metadata.yaml b/collectors/python.d.plugin/traefik/metadata.yaml deleted file mode 100644 index dcfb098a0..000000000 --- a/collectors/python.d.plugin/traefik/metadata.yaml +++ /dev/null @@ -1,125 +0,0 @@ -# This collector will not appear in documentation, as the go version is preferred, -# https://github.com/netdata/go.d.plugin/blob/master/modules/traefik/README.md -# -# meta: -# plugin_name: python.d.plugin -# module_name: traefik -# monitored_instance: -# name: python.d traefik -# link: '' -# categories: [] -# icon_filename: '' -# related_resources: -# integrations: -# list: [] -# info_provided_to_referring_integrations: -# description: '' -# keywords: [] -# most_popular: false -# overview: -# data_collection: -# metrics_description: '' -# method_description: '' -# supported_platforms: -# include: [] -# exclude: [] -# multi_instance: true -# additional_permissions: -# description: '' -# default_behavior: -# auto_detection: -# description: '' -# limits: -# description: '' -# performance_impact: -# description: '' -# setup: -# prerequisites: -# list: [] -# configuration: -# file: -# name: '' -# description: '' -# options: -# description: '' -# folding: -# title: '' -# enabled: true -# list: [] -# examples: -# folding: -# enabled: true -# title: '' -# list: [] -# troubleshooting: -# problems: -# list: [] -# alerts: [] -# metrics: -# folding: -# title: Metrics -# enabled: false -# description: "" -# availability: [] -# scopes: -# - name: global -# description: "" -# labels: [] -# metrics: -# - name: traefik.response_statuses -# description: Response statuses -# unit: "requests/s" -# chart_type: stacked -# dimensions: -# - name: success -# - name: error -# - name: redirect -# - name: bad -# - name: other -# - name: traefik.response_codes -# description: Responses by codes -# unit: "requests/s" -# chart_type: stacked -# dimensions: -# - name: 2xx -# - name: 5xx -# - name: 3xx -# - name: 4xx -# - name: 1xx -# - name: other -# - name: traefik.detailed_response_codes -# description: Detailed response codes -# unit: "requests/s" -# chart_type: stacked -# dimensions: -# - name: a dimension for each response code family -# - name: traefik.requests -# description: Requests -# unit: "requests/s" -# chart_type: line -# dimensions: -# - name: requests -# - name: traefik.total_response_time -# description: Total response time -# unit: "seconds" -# chart_type: line -# dimensions: -# - name: response -# - name: traefik.average_response_time -# description: Average response time -# unit: "milliseconds" -# chart_type: line -# dimensions: -# - name: response -# - name: traefik.average_response_time_per_iteration -# description: Average response time per iteration -# unit: "milliseconds" -# chart_type: line -# dimensions: -# - name: response -# - name: traefik.uptime -# description: Uptime -# unit: "seconds" -# chart_type: line -# dimensions: -# - name: uptime diff --git a/collectors/python.d.plugin/uwsgi/Makefile.inc b/collectors/python.d.plugin/uwsgi/Makefile.inc deleted file mode 100644 index 75d96de0e..000000000 --- a/collectors/python.d.plugin/uwsgi/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += uwsgi/uwsgi.chart.py -dist_pythonconfig_DATA += uwsgi/uwsgi.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += uwsgi/README.md uwsgi/Makefile.inc - diff --git a/collectors/python.d.plugin/varnish/Makefile.inc b/collectors/python.d.plugin/varnish/Makefile.inc deleted file mode 100644 index 2469b0592..000000000 --- a/collectors/python.d.plugin/varnish/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += varnish/varnish.chart.py -dist_pythonconfig_DATA += varnish/varnish.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += varnish/README.md varnish/Makefile.inc - diff --git a/collectors/python.d.plugin/w1sensor/Makefile.inc b/collectors/python.d.plugin/w1sensor/Makefile.inc deleted file mode 100644 index bddf146f5..000000000 --- a/collectors/python.d.plugin/w1sensor/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += w1sensor/w1sensor.chart.py -dist_pythonconfig_DATA += w1sensor/w1sensor.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += w1sensor/README.md w1sensor/Makefile.inc - diff --git a/collectors/python.d.plugin/zscores/Makefile.inc b/collectors/python.d.plugin/zscores/Makefile.inc deleted file mode 100644 index d8b182415..000000000 --- a/collectors/python.d.plugin/zscores/Makefile.inc +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_python_DATA += zscores/zscores.chart.py -dist_pythonconfig_DATA += zscores/zscores.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += zscores/README.md zscores/Makefile.inc diff --git a/collectors/python.d.plugin/zscores/metadata.yaml b/collectors/python.d.plugin/zscores/metadata.yaml deleted file mode 100644 index 388e9b460..000000000 --- a/collectors/python.d.plugin/zscores/metadata.yaml +++ /dev/null @@ -1,187 +0,0 @@ -plugin_name: python.d.plugin -modules: - - meta: - plugin_name: python.d.plugin - module_name: zscores - monitored_instance: - name: python.d zscores - link: https://en.wikipedia.org/wiki/Standard_score - categories: - - data-collection.other - icon_filename: "" - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: "" - keywords: - - zscore - - z-score - - standard score - - standard deviation - - anomaly detection - - statistical anomaly detection - most_popular: false - overview: - data_collection: - metrics_description: | - By using smoothed, rolling [Z-Scores](https://en.wikipedia.org/wiki/Standard_score) for selected metrics or charts you can narrow down your focus and shorten root cause analysis. - method_description: | - This collector uses the [Netdata rest api](https://github.com/netdata/netdata/blob/master/web/api/README.md) to get the `mean` and `stddev` - for each dimension on specified charts over a time range (defined by `train_secs` and `offset_secs`). - - For each dimension it will calculate a Z-Score as `z = (x - mean) / stddev` (clipped at `z_clip`). Scores are then smoothed over - time (`z_smooth_n`) and, if `mode: 'per_chart'`, aggregated across dimensions to a smoothed, rolling chart level Z-Score at each time step. - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: "" - default_behavior: - auto_detection: - description: "" - limits: - description: "" - performance_impact: - description: "" - setup: - prerequisites: - list: - - title: Python Requirements - description: | - This collector will only work with Python 3 and requires the below packages be installed. - - ```bash - # become netdata user - sudo su -s /bin/bash netdata - # install required packages - pip3 install numpy pandas requests netdata-pandas==0.0.38 - ``` - configuration: - file: - name: python.d/zscores.conf - description: "" - options: - description: | - There are 2 sections: - - * Global variables - * One or more JOBS that can define multiple different instances to monitor. - - The following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values. - - Additionally, the following collapsed table contains all the options that can be configured inside a JOB definition. - - Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. - folding: - title: "Config options" - enabled: true - list: - - name: charts_regex - description: what charts to pull data for - A regex like `system\..*|` or `system\..*|apps.cpu|apps.mem` etc. - default_value: "system\\..*" - required: true - - name: train_secs - description: length of time (in seconds) to base calculations off for mean and stddev. - default_value: 14400 - required: true - - name: offset_secs - description: offset (in seconds) preceding latest data to ignore when calculating mean and stddev. - default_value: 300 - required: true - - name: train_every_n - description: recalculate the mean and stddev every n steps of the collector. - default_value: 900 - required: true - - name: z_smooth_n - description: smooth the z score (to reduce sensitivity to spikes) by averaging it over last n values. - default_value: 15 - required: true - - name: z_clip - description: cap absolute value of zscore (before smoothing) for better stability. - default_value: 10 - required: true - - name: z_abs - description: "set z_abs: 'true' to make all zscores be absolute values only." - default_value: "true" - required: true - - name: burn_in - description: burn in period in which to initially calculate mean and stddev on every step. - default_value: 2 - required: true - - name: mode - description: mode can be to get a zscore 'per_dim' or 'per_chart'. - default_value: per_chart - required: true - - name: per_chart_agg - description: per_chart_agg is how you aggregate from dimension to chart when mode='per_chart'. - default_value: mean - required: true - - name: update_every - description: Sets the default data collection frequency. - default_value: 5 - required: false - - name: priority - description: Controls the order of charts at the netdata dashboard. - default_value: 60000 - required: false - - name: autodetection_retry - description: Sets the job re-check interval in seconds. - default_value: 0 - required: false - - name: penalty - description: Indicates whether to apply penalty to update_every in case of failures. - default_value: yes - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Default - description: Default configuration. - folding: - enabled: false - config: | - local: - name: 'local' - host: '127.0.0.1:19999' - charts_regex: 'system\..*' - charts_to_exclude: 'system.uptime' - train_secs: 14400 - offset_secs: 300 - train_every_n: 900 - z_smooth_n: 15 - z_clip: 10 - z_abs: 'true' - burn_in: 2 - mode: 'per_chart' - per_chart_agg: 'mean' - troubleshooting: - problems: - list: [] - alerts: [] - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: global - description: "These metrics refer to the entire monitored application." - labels: [] - metrics: - - name: zscores.z - description: Z Score - unit: "z" - chart_type: line - dimensions: - - name: a dimension per chart or dimension - - name: zscores.3stddev - description: Z Score >3 - unit: "count" - chart_type: stacked - dimensions: - - name: a dimension per chart or dimension diff --git a/collectors/python.d.plugin/alarms/README.md b/src/collectors/python.d.plugin/alarms/README.md index 85759ae6c..85759ae6c 120000 --- a/collectors/python.d.plugin/alarms/README.md +++ b/src/collectors/python.d.plugin/alarms/README.md diff --git a/collectors/python.d.plugin/alarms/alarms.chart.py b/src/collectors/python.d.plugin/alarms/alarms.chart.py index d19427358..d19427358 100644 --- a/collectors/python.d.plugin/alarms/alarms.chart.py +++ b/src/collectors/python.d.plugin/alarms/alarms.chart.py diff --git a/collectors/python.d.plugin/alarms/alarms.conf b/src/collectors/python.d.plugin/alarms/alarms.conf index 06d76c3b3..06d76c3b3 100644 --- a/collectors/python.d.plugin/alarms/alarms.conf +++ b/src/collectors/python.d.plugin/alarms/alarms.conf diff --git a/collectors/python.d.plugin/alarms/integrations/netdata_agent_alarms.md b/src/collectors/python.d.plugin/alarms/integrations/netdata_agent_alarms.md index 9fb69878a..57be4f092 100644 --- a/collectors/python.d.plugin/alarms/integrations/netdata_agent_alarms.md +++ b/src/collectors/python.d.plugin/alarms/integrations/netdata_agent_alarms.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/alarms/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/alarms/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/alarms/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/alarms/metadata.yaml" sidebar_label: "Netdata Agent alarms" learn_status: "Published" -learn_rel_path: "Data Collection/Other" +learn_rel_path: "Collecting Metrics/Other" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -87,7 +87,7 @@ The configuration file name for this integration is `python.d/alarms.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -107,7 +107,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -142,7 +142,7 @@ An advanced example configuration with multiple jobs collecting different subset "ML" job will collect status and values for all alarms with "ml_" in the name. Default job will collect status for all other alarms. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml ML: diff --git a/collectors/python.d.plugin/am2320/README.md b/src/collectors/python.d.plugin/am2320/README.md index 0bc5ea90e..0bc5ea90e 120000 --- a/collectors/python.d.plugin/am2320/README.md +++ b/src/collectors/python.d.plugin/am2320/README.md diff --git a/collectors/python.d.plugin/am2320/am2320.chart.py b/src/collectors/python.d.plugin/am2320/am2320.chart.py index 8e66544bd..8e66544bd 100644 --- a/collectors/python.d.plugin/am2320/am2320.chart.py +++ b/src/collectors/python.d.plugin/am2320/am2320.chart.py diff --git a/collectors/python.d.plugin/am2320/am2320.conf b/src/collectors/python.d.plugin/am2320/am2320.conf index c6b9885fc..c6b9885fc 100644 --- a/collectors/python.d.plugin/am2320/am2320.conf +++ b/src/collectors/python.d.plugin/am2320/am2320.conf diff --git a/collectors/python.d.plugin/am2320/integrations/am2320.md b/src/collectors/python.d.plugin/am2320/integrations/am2320.md index 72b351eb5..f96657624 100644 --- a/collectors/python.d.plugin/am2320/integrations/am2320.md +++ b/src/collectors/python.d.plugin/am2320/integrations/am2320.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/am2320/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/am2320/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/am2320/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/am2320/metadata.yaml" sidebar_label: "AM2320" learn_status: "Published" -learn_rel_path: "Data Collection/Hardware Devices and Sensors" +learn_rel_path: "Collecting Metrics/Hardware Devices and Sensors" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -107,7 +107,7 @@ The configuration file name for this integration is `python.d/am2320.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -127,7 +127,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/am2320/metadata.yaml b/src/collectors/python.d.plugin/am2320/metadata.yaml index c85cd5f22..c85cd5f22 100644 --- a/collectors/python.d.plugin/am2320/metadata.yaml +++ b/src/collectors/python.d.plugin/am2320/metadata.yaml diff --git a/collectors/python.d.plugin/anomalies/anomalies.chart.py b/src/collectors/python.d.plugin/anomalies/anomalies.chart.py index 24e84cc15..24e84cc15 100644 --- a/collectors/python.d.plugin/anomalies/anomalies.chart.py +++ b/src/collectors/python.d.plugin/anomalies/anomalies.chart.py diff --git a/collectors/python.d.plugin/anomalies/anomalies.conf b/src/collectors/python.d.plugin/anomalies/anomalies.conf index ef867709a..ef867709a 100644 --- a/collectors/python.d.plugin/anomalies/anomalies.conf +++ b/src/collectors/python.d.plugin/anomalies/anomalies.conf diff --git a/collectors/python.d.plugin/beanstalk/README.md b/src/collectors/python.d.plugin/beanstalk/README.md index 4efe13889..4efe13889 120000 --- a/collectors/python.d.plugin/beanstalk/README.md +++ b/src/collectors/python.d.plugin/beanstalk/README.md diff --git a/collectors/python.d.plugin/beanstalk/beanstalk.chart.py b/src/collectors/python.d.plugin/beanstalk/beanstalk.chart.py index 396543e5a..396543e5a 100644 --- a/collectors/python.d.plugin/beanstalk/beanstalk.chart.py +++ b/src/collectors/python.d.plugin/beanstalk/beanstalk.chart.py diff --git a/collectors/python.d.plugin/beanstalk/beanstalk.conf b/src/collectors/python.d.plugin/beanstalk/beanstalk.conf index 6d9773a19..6d9773a19 100644 --- a/collectors/python.d.plugin/beanstalk/beanstalk.conf +++ b/src/collectors/python.d.plugin/beanstalk/beanstalk.conf diff --git a/collectors/python.d.plugin/beanstalk/integrations/beanstalk.md b/src/collectors/python.d.plugin/beanstalk/integrations/beanstalk.md index 5095c0c28..841444354 100644 --- a/collectors/python.d.plugin/beanstalk/integrations/beanstalk.md +++ b/src/collectors/python.d.plugin/beanstalk/integrations/beanstalk.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/beanstalk/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/beanstalk/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/beanstalk/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/beanstalk/metadata.yaml" sidebar_label: "Beanstalk" learn_status: "Published" -learn_rel_path: "Data Collection/Message Brokers" +learn_rel_path: "Collecting Metrics/Message Brokers" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -67,7 +67,7 @@ Metrics: | beanstalk.jobs_rate | total, timeouts | jobs/s | | beanstalk.connections_rate | connections | connections/s | | beanstalk.commands_rate | put, peek, peek-ready, peek-delayed, peek-buried, reserve, use, watch, ignore, delete, bury, kick, stats, stats-job, stats-tube, list-tubes, list-tube-used, list-tubes-watched, pause-tube | commands/s | -| beanstalk.connections_rate | tubes | tubes | +| beanstalk.current_tubes | tubes | tubes | | beanstalk.current_jobs | urgent, ready, reserved, delayed, buried | jobs | | beanstalk.current_connections | written, producers, workers, waiting | connections | | beanstalk.binlog | written, migrated | records/s | @@ -98,7 +98,7 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ beanstalk_server_buried_jobs ](https://github.com/netdata/netdata/blob/master/health/health.d/beanstalkd.conf) | beanstalk.current_jobs | number of buried jobs across all tubes. You need to manually kick them so they can be processed. Presence of buried jobs in a tube does not affect new jobs. | +| [ beanstalk_server_buried_jobs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/beanstalkd.conf) | beanstalk.current_jobs | number of buried jobs across all tubes. You need to manually kick them so they can be processed. Presence of buried jobs in a tube does not affect new jobs. | ## Setup @@ -118,7 +118,7 @@ The configuration file name for this integration is `python.d/beanstalk.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -138,7 +138,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -172,7 +172,7 @@ remote: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: diff --git a/collectors/python.d.plugin/boinc/README.md b/src/collectors/python.d.plugin/boinc/README.md index 22c10ca17..22c10ca17 120000 --- a/collectors/python.d.plugin/boinc/README.md +++ b/src/collectors/python.d.plugin/boinc/README.md diff --git a/collectors/python.d.plugin/boinc/boinc.chart.py b/src/collectors/python.d.plugin/boinc/boinc.chart.py index a31eda1c2..a31eda1c2 100644 --- a/collectors/python.d.plugin/boinc/boinc.chart.py +++ b/src/collectors/python.d.plugin/boinc/boinc.chart.py diff --git a/collectors/python.d.plugin/boinc/boinc.conf b/src/collectors/python.d.plugin/boinc/boinc.conf index 16edf55c4..16edf55c4 100644 --- a/collectors/python.d.plugin/boinc/boinc.conf +++ b/src/collectors/python.d.plugin/boinc/boinc.conf diff --git a/collectors/python.d.plugin/boinc/integrations/boinc.md b/src/collectors/python.d.plugin/boinc/integrations/boinc.md index d6874d455..2e5ff5c4f 100644 --- a/collectors/python.d.plugin/boinc/integrations/boinc.md +++ b/src/collectors/python.d.plugin/boinc/integrations/boinc.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/boinc/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/boinc/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/boinc/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/boinc/metadata.yaml" sidebar_label: "BOINC" learn_status: "Published" -learn_rel_path: "Data Collection/Distributed Computing Systems" +learn_rel_path: "Collecting Metrics/Distributed Computing Systems" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -77,10 +77,10 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ boinc_total_tasks ](https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf) | boinc.tasks | average number of total tasks over the last 10 minutes | -| [ boinc_active_tasks ](https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf) | boinc.tasks | average number of active tasks over the last 10 minutes | -| [ boinc_compute_errors ](https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf) | boinc.states | average number of compute errors over the last 10 minutes | -| [ boinc_upload_errors ](https://github.com/netdata/netdata/blob/master/health/health.d/boinc.conf) | boinc.states | average number of failed uploads over the last 10 minutes | +| [ boinc_total_tasks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.tasks | average number of total tasks over the last 10 minutes | +| [ boinc_active_tasks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.tasks | average number of active tasks over the last 10 minutes | +| [ boinc_compute_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.states | average number of compute errors over the last 10 minutes | +| [ boinc_upload_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.states | average number of failed uploads over the last 10 minutes | ## Setup @@ -100,7 +100,7 @@ The configuration file name for this integration is `python.d/boinc.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -120,7 +120,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -155,7 +155,7 @@ remote: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: diff --git a/collectors/python.d.plugin/ceph/README.md b/src/collectors/python.d.plugin/ceph/README.md index 654248b70..654248b70 120000 --- a/collectors/python.d.plugin/ceph/README.md +++ b/src/collectors/python.d.plugin/ceph/README.md diff --git a/collectors/python.d.plugin/ceph/ceph.chart.py b/src/collectors/python.d.plugin/ceph/ceph.chart.py index 4bcbe1979..4bcbe1979 100644 --- a/collectors/python.d.plugin/ceph/ceph.chart.py +++ b/src/collectors/python.d.plugin/ceph/ceph.chart.py diff --git a/collectors/python.d.plugin/ceph/ceph.conf b/src/collectors/python.d.plugin/ceph/ceph.conf index 81788e866..81788e866 100644 --- a/collectors/python.d.plugin/ceph/ceph.conf +++ b/src/collectors/python.d.plugin/ceph/ceph.conf diff --git a/collectors/python.d.plugin/ceph/integrations/ceph.md b/src/collectors/python.d.plugin/ceph/integrations/ceph.md index cfda01fbe..2b49a331d 100644 --- a/collectors/python.d.plugin/ceph/integrations/ceph.md +++ b/src/collectors/python.d.plugin/ceph/integrations/ceph.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/ceph/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/ceph/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/ceph/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/ceph/metadata.yaml" sidebar_label: "Ceph" learn_status: "Published" -learn_rel_path: "Data Collection/Storage, Mount Points and Filesystems" +learn_rel_path: "Collecting Metrics/Storage, Mount Points and Filesystems" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -88,7 +88,7 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ ceph_cluster_space_usage ](https://github.com/netdata/netdata/blob/master/health/health.d/ceph.conf) | ceph.general_usage | cluster disk space utilization | +| [ ceph_cluster_space_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ceph.conf) | ceph.general_usage | cluster disk space utilization | ## Setup @@ -116,7 +116,7 @@ The configuration file name for this integration is `python.d/ceph.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -136,7 +136,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/changefinder/README.md b/src/collectors/python.d.plugin/changefinder/README.md index 0ca704eb1..0ca704eb1 120000 --- a/collectors/python.d.plugin/changefinder/README.md +++ b/src/collectors/python.d.plugin/changefinder/README.md diff --git a/collectors/python.d.plugin/changefinder/changefinder.chart.py b/src/collectors/python.d.plugin/changefinder/changefinder.chart.py index 2a69cd9f5..2a69cd9f5 100644 --- a/collectors/python.d.plugin/changefinder/changefinder.chart.py +++ b/src/collectors/python.d.plugin/changefinder/changefinder.chart.py diff --git a/collectors/python.d.plugin/changefinder/changefinder.conf b/src/collectors/python.d.plugin/changefinder/changefinder.conf index 56a681f1e..56a681f1e 100644 --- a/collectors/python.d.plugin/changefinder/changefinder.conf +++ b/src/collectors/python.d.plugin/changefinder/changefinder.conf diff --git a/collectors/python.d.plugin/changefinder/integrations/python.d_changefinder.md b/src/collectors/python.d.plugin/changefinder/integrations/python.d_changefinder.md index c338c9374..fe370baac 100644 --- a/collectors/python.d.plugin/changefinder/integrations/python.d_changefinder.md +++ b/src/collectors/python.d.plugin/changefinder/integrations/python.d_changefinder.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/changefinder/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/changefinder/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/changefinder/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/changefinder/metadata.yaml" sidebar_label: "python.d changefinder" learn_status: "Published" -learn_rel_path: "Data Collection/Other" +learn_rel_path: "Collecting Metrics/Other" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -121,7 +121,7 @@ The configuration file name for this integration is `python.d/changefinder.conf` You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -141,7 +141,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/changefinder/metadata.yaml b/src/collectors/python.d.plugin/changefinder/metadata.yaml index 170d9146a..170d9146a 100644 --- a/collectors/python.d.plugin/changefinder/metadata.yaml +++ b/src/collectors/python.d.plugin/changefinder/metadata.yaml diff --git a/collectors/python.d.plugin/dovecot/README.md b/src/collectors/python.d.plugin/dovecot/README.md index c4749cedc..c4749cedc 120000 --- a/collectors/python.d.plugin/dovecot/README.md +++ b/src/collectors/python.d.plugin/dovecot/README.md diff --git a/collectors/python.d.plugin/dovecot/dovecot.chart.py b/src/collectors/python.d.plugin/dovecot/dovecot.chart.py index dfaef28b5..dfaef28b5 100644 --- a/collectors/python.d.plugin/dovecot/dovecot.chart.py +++ b/src/collectors/python.d.plugin/dovecot/dovecot.chart.py diff --git a/collectors/python.d.plugin/dovecot/dovecot.conf b/src/collectors/python.d.plugin/dovecot/dovecot.conf index 451dbc9ac..451dbc9ac 100644 --- a/collectors/python.d.plugin/dovecot/dovecot.conf +++ b/src/collectors/python.d.plugin/dovecot/dovecot.conf diff --git a/collectors/python.d.plugin/dovecot/integrations/dovecot.md b/src/collectors/python.d.plugin/dovecot/integrations/dovecot.md index 4e7952765..aaf207e85 100644 --- a/collectors/python.d.plugin/dovecot/integrations/dovecot.md +++ b/src/collectors/python.d.plugin/dovecot/integrations/dovecot.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/dovecot/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/dovecot/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/dovecot/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/dovecot/metadata.yaml" sidebar_label: "Dovecot" learn_status: "Published" -learn_rel_path: "Data Collection/Mail Servers" +learn_rel_path: "Collecting Metrics/Mail Servers" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -100,7 +100,7 @@ The configuration file name for this integration is `python.d/dovecot.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -120,7 +120,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -141,7 +141,7 @@ Every configuration JOB starts with a `job_name` value which will appear in the A basic TCP configuration. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localtcpip: @@ -156,7 +156,7 @@ localtcpip: A basic local socket configuration -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localsocket: diff --git a/collectors/python.d.plugin/dovecot/metadata.yaml b/src/collectors/python.d.plugin/dovecot/metadata.yaml index b247da846..b247da846 100644 --- a/collectors/python.d.plugin/dovecot/metadata.yaml +++ b/src/collectors/python.d.plugin/dovecot/metadata.yaml diff --git a/collectors/python.d.plugin/example/README.md b/src/collectors/python.d.plugin/example/README.md index 55877a99a..55877a99a 120000 --- a/collectors/python.d.plugin/example/README.md +++ b/src/collectors/python.d.plugin/example/README.md diff --git a/collectors/python.d.plugin/example/example.chart.py b/src/collectors/python.d.plugin/example/example.chart.py index d6c0b6658..d6c0b6658 100644 --- a/collectors/python.d.plugin/example/example.chart.py +++ b/src/collectors/python.d.plugin/example/example.chart.py diff --git a/collectors/python.d.plugin/example/example.conf b/src/collectors/python.d.plugin/example/example.conf index 31261b840..31261b840 100644 --- a/collectors/python.d.plugin/example/example.conf +++ b/src/collectors/python.d.plugin/example/example.conf diff --git a/collectors/python.d.plugin/example/integrations/example_collector.md b/src/collectors/python.d.plugin/example/integrations/example_collector.md index 7dded67ba..03c0165b4 100644 --- a/collectors/python.d.plugin/example/integrations/example_collector.md +++ b/src/collectors/python.d.plugin/example/integrations/example_collector.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/example/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/example/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/example/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/example/metadata.yaml" sidebar_label: "Example collector" learn_status: "Published" -learn_rel_path: "Data Collection/Other" +learn_rel_path: "Collecting Metrics/Other" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -19,7 +19,7 @@ Module: example Example collector that generates some random numbers as metrics. -If you want to write your own collector, read our [writing a new Python module](https://github.com/netdata/netdata/blob/master/collectors/python.d.plugin/README.md#how-to-write-a-new-module) tutorial. +If you want to write your own collector, read our [writing a new Python module](/src/collectors/python.d.plugin/README.md#how-to-write-a-new-module) tutorial. The `get_data()` function uses `random.randint()` to generate a random number which will be collected as a metric. @@ -87,7 +87,7 @@ The configuration file name for this integration is `python.d/example.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -107,7 +107,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/exim/README.md b/src/collectors/python.d.plugin/exim/README.md index f1f2ef9f9..f1f2ef9f9 120000 --- a/collectors/python.d.plugin/exim/README.md +++ b/src/collectors/python.d.plugin/exim/README.md diff --git a/collectors/python.d.plugin/exim/exim.chart.py b/src/collectors/python.d.plugin/exim/exim.chart.py index 7238a1bea..7238a1bea 100644 --- a/collectors/python.d.plugin/exim/exim.chart.py +++ b/src/collectors/python.d.plugin/exim/exim.chart.py diff --git a/collectors/python.d.plugin/exim/exim.conf b/src/collectors/python.d.plugin/exim/exim.conf index 3b7e65922..3b7e65922 100644 --- a/collectors/python.d.plugin/exim/exim.conf +++ b/src/collectors/python.d.plugin/exim/exim.conf diff --git a/collectors/python.d.plugin/exim/integrations/exim.md b/src/collectors/python.d.plugin/exim/integrations/exim.md index f0ae33d3e..a64a5449b 100644 --- a/collectors/python.d.plugin/exim/integrations/exim.md +++ b/src/collectors/python.d.plugin/exim/integrations/exim.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/exim/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/exim/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/exim/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/exim/metadata.yaml" sidebar_label: "Exim" learn_status: "Published" -learn_rel_path: "Data Collection/Mail Servers" +learn_rel_path: "Collecting Metrics/Mail Servers" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -106,7 +106,7 @@ The configuration file name for this integration is `python.d/exim.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -126,7 +126,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/exim/metadata.yaml b/src/collectors/python.d.plugin/exim/metadata.yaml index a8be02d99..a8be02d99 100644 --- a/collectors/python.d.plugin/exim/metadata.yaml +++ b/src/collectors/python.d.plugin/exim/metadata.yaml diff --git a/collectors/python.d.plugin/gearman/README.md b/src/collectors/python.d.plugin/gearman/README.md index 70189d698..70189d698 120000 --- a/collectors/python.d.plugin/gearman/README.md +++ b/src/collectors/python.d.plugin/gearman/README.md diff --git a/collectors/python.d.plugin/gearman/gearman.chart.py b/src/collectors/python.d.plugin/gearman/gearman.chart.py index 5e280a4d8..5e280a4d8 100644 --- a/collectors/python.d.plugin/gearman/gearman.chart.py +++ b/src/collectors/python.d.plugin/gearman/gearman.chart.py diff --git a/collectors/python.d.plugin/gearman/gearman.conf b/src/collectors/python.d.plugin/gearman/gearman.conf index 635e893ef..635e893ef 100644 --- a/collectors/python.d.plugin/gearman/gearman.conf +++ b/src/collectors/python.d.plugin/gearman/gearman.conf diff --git a/collectors/python.d.plugin/gearman/integrations/gearman.md b/src/collectors/python.d.plugin/gearman/integrations/gearman.md index 3923d1401..717b0dcad 100644 --- a/collectors/python.d.plugin/gearman/integrations/gearman.md +++ b/src/collectors/python.d.plugin/gearman/integrations/gearman.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/gearman/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/gearman/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/gearman/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/gearman/metadata.yaml" sidebar_label: "Gearman" learn_status: "Published" -learn_rel_path: "Data Collection/Distributed Computing Systems" +learn_rel_path: "Collecting Metrics/Distributed Computing Systems" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -86,7 +86,7 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ gearman_workers_queued ](https://github.com/netdata/netdata/blob/master/health/health.d/gearman.conf) | gearman.single_job | average number of queued jobs over the last 10 minutes | +| [ gearman_workers_queued ](https://github.com/netdata/netdata/blob/master/src/health/health.d/gearman.conf) | gearman.single_job | average number of queued jobs over the last 10 minutes | ## Setup @@ -106,7 +106,7 @@ The configuration file name for this integration is `python.d/gearman.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -126,7 +126,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -163,7 +163,7 @@ localhost: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: diff --git a/collectors/python.d.plugin/go_expvar/README.md b/src/collectors/python.d.plugin/go_expvar/README.md index f28a82f34..f28a82f34 120000 --- a/collectors/python.d.plugin/go_expvar/README.md +++ b/src/collectors/python.d.plugin/go_expvar/README.md diff --git a/collectors/python.d.plugin/go_expvar/go_expvar.chart.py b/src/collectors/python.d.plugin/go_expvar/go_expvar.chart.py index dca010817..dca010817 100644 --- a/collectors/python.d.plugin/go_expvar/go_expvar.chart.py +++ b/src/collectors/python.d.plugin/go_expvar/go_expvar.chart.py diff --git a/collectors/python.d.plugin/go_expvar/go_expvar.conf b/src/collectors/python.d.plugin/go_expvar/go_expvar.conf index 4b821cde9..088fca9cf 100644 --- a/collectors/python.d.plugin/go_expvar/go_expvar.conf +++ b/src/collectors/python.d.plugin/go_expvar/go_expvar.conf @@ -74,7 +74,7 @@ # # Please visit the module wiki page for more information on how to use the extra_charts variable: # -# https://github.com/netdata/netdata/tree/master/collectors/python.d.plugin/go_expvar +# https://github.com/netdata/netdata/tree/master/src/collectors/python.d.plugin/go_expvar # # Configuration example # --------------------- diff --git a/collectors/python.d.plugin/go_expvar/integrations/go_applications_expvar.md b/src/collectors/python.d.plugin/go_expvar/integrations/go_applications_expvar.md index 8d61fa2ae..cbe7f265f 100644 --- a/collectors/python.d.plugin/go_expvar/integrations/go_applications_expvar.md +++ b/src/collectors/python.d.plugin/go_expvar/integrations/go_applications_expvar.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/go_expvar/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/go_expvar/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/go_expvar/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/go_expvar/metadata.yaml" sidebar_label: "Go applications (EXPVAR)" learn_status: "Published" -learn_rel_path: "Data Collection/APM" +learn_rel_path: "Collecting Metrics/APM" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -84,14 +84,14 @@ There are no alerts configured by default for this integration. #### Enable the go_expvar collector -The `go_expvar` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. +The `go_expvar` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](/docs/netdata-agent/configuration/README.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. ```bash cd /etc/netdata # Replace this path with your Netdata config directory, if different sudo ./edit-config python.d.conf ``` -Change the value of the `go_expvar` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/configure/start-stop-restart.md) for your system. +Change the value of the `go_expvar` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) for your system. #### Sample `expvar` usage in a Go application @@ -172,7 +172,7 @@ The configuration file name for this integration is `python.d/go_expvar.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -192,7 +192,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. Each JOB can be used to monitor a different Go application. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -231,8 +231,8 @@ See [this issue](https://github.com/netdata/netdata/pull/1902#issuecomment-28449 Please see these two links to the official Netdata documentation for more information about the values: -- [External plugins - charts](https://github.com/netdata/netdata/blob/master/collectors/plugins.d/README.md#chart) -- [Chart variables](https://github.com/netdata/netdata/blob/master/collectors/python.d.plugin/README.md#global-variables-order-and-chart) +- [External plugins - charts](/src/collectors/plugins.d/README.md#chart) +- [Chart variables](/src/collectors/python.d.plugin/README.md#global-variables-order-and-chart) **Line definitions** @@ -255,7 +255,7 @@ hidden: False ``` Please see the following link for more information about the options and their default values: -[External plugins - dimensions](https://github.com/netdata/netdata/blob/master/collectors/plugins.d/README.md#dimension) +[External plugins - dimensions](/src/collectors/plugins.d/README.md#dimension) Apart from top-level expvars, this plugin can also parse expvars stored in a multi-level map; All dicts in the resulting JSON document are then flattened to one level. diff --git a/collectors/python.d.plugin/haproxy/haproxy.chart.py b/src/collectors/python.d.plugin/haproxy/haproxy.chart.py index f412febb7..f412febb7 100644 --- a/collectors/python.d.plugin/haproxy/haproxy.chart.py +++ b/src/collectors/python.d.plugin/haproxy/haproxy.chart.py diff --git a/collectors/python.d.plugin/haproxy/haproxy.conf b/src/collectors/python.d.plugin/haproxy/haproxy.conf index 10a0df3c3..10a0df3c3 100644 --- a/collectors/python.d.plugin/haproxy/haproxy.conf +++ b/src/collectors/python.d.plugin/haproxy/haproxy.conf diff --git a/collectors/python.d.plugin/icecast/README.md b/src/collectors/python.d.plugin/icecast/README.md index db3c1b572..db3c1b572 120000 --- a/collectors/python.d.plugin/icecast/README.md +++ b/src/collectors/python.d.plugin/icecast/README.md diff --git a/collectors/python.d.plugin/icecast/icecast.chart.py b/src/collectors/python.d.plugin/icecast/icecast.chart.py index a967d1779..a967d1779 100644 --- a/collectors/python.d.plugin/icecast/icecast.chart.py +++ b/src/collectors/python.d.plugin/icecast/icecast.chart.py diff --git a/collectors/python.d.plugin/icecast/icecast.conf b/src/collectors/python.d.plugin/icecast/icecast.conf index a33074aef..a33074aef 100644 --- a/collectors/python.d.plugin/icecast/icecast.conf +++ b/src/collectors/python.d.plugin/icecast/icecast.conf diff --git a/collectors/python.d.plugin/icecast/integrations/icecast.md b/src/collectors/python.d.plugin/icecast/integrations/icecast.md index 12d7d59ee..17316b063 100644 --- a/collectors/python.d.plugin/icecast/integrations/icecast.md +++ b/src/collectors/python.d.plugin/icecast/integrations/icecast.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/icecast/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/icecast/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/icecast/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/icecast/metadata.yaml" sidebar_label: "Icecast" learn_status: "Published" -learn_rel_path: "Data Collection/Media Services" +learn_rel_path: "Collecting Metrics/Media Services" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -89,7 +89,7 @@ The configuration file name for this integration is `python.d/icecast.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -109,7 +109,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/icecast/metadata.yaml b/src/collectors/python.d.plugin/icecast/metadata.yaml index 4bcf5e39f..4bcf5e39f 100644 --- a/collectors/python.d.plugin/icecast/metadata.yaml +++ b/src/collectors/python.d.plugin/icecast/metadata.yaml diff --git a/collectors/python.d.plugin/ipfs/README.md b/src/collectors/python.d.plugin/ipfs/README.md index eee6a07b2..eee6a07b2 120000 --- a/collectors/python.d.plugin/ipfs/README.md +++ b/src/collectors/python.d.plugin/ipfs/README.md diff --git a/collectors/python.d.plugin/ipfs/integrations/ipfs.md b/src/collectors/python.d.plugin/ipfs/integrations/ipfs.md index 77dc745aa..71e8e28a5 100644 --- a/collectors/python.d.plugin/ipfs/integrations/ipfs.md +++ b/src/collectors/python.d.plugin/ipfs/integrations/ipfs.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/ipfs/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/ipfs/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/ipfs/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/ipfs/metadata.yaml" sidebar_label: "IPFS" learn_status: "Published" -learn_rel_path: "Data Collection/Storage, Mount Points and Filesystems" +learn_rel_path: "Collecting Metrics/Storage, Mount Points and Filesystems" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -81,7 +81,7 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ ipfs_datastore_usage ](https://github.com/netdata/netdata/blob/master/health/health.d/ipfs.conf) | ipfs.repo_size | IPFS datastore utilization | +| [ ipfs_datastore_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipfs.conf) | ipfs.repo_size | IPFS datastore utilization | ## Setup @@ -98,7 +98,7 @@ The configuration file name for this integration is `python.d/ipfs.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -118,7 +118,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary></summary> +<details open><summary></summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -154,7 +154,7 @@ localhost: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: diff --git a/collectors/python.d.plugin/ipfs/ipfs.chart.py b/src/collectors/python.d.plugin/ipfs/ipfs.chart.py index abfc9c492..abfc9c492 100644 --- a/collectors/python.d.plugin/ipfs/ipfs.chart.py +++ b/src/collectors/python.d.plugin/ipfs/ipfs.chart.py diff --git a/collectors/python.d.plugin/ipfs/ipfs.conf b/src/collectors/python.d.plugin/ipfs/ipfs.conf index 8b167b399..8b167b399 100644 --- a/collectors/python.d.plugin/ipfs/ipfs.conf +++ b/src/collectors/python.d.plugin/ipfs/ipfs.conf diff --git a/collectors/python.d.plugin/memcached/README.md b/src/collectors/python.d.plugin/memcached/README.md index 2cb76d33c..2cb76d33c 120000 --- a/collectors/python.d.plugin/memcached/README.md +++ b/src/collectors/python.d.plugin/memcached/README.md diff --git a/collectors/python.d.plugin/memcached/integrations/memcached.md b/src/collectors/python.d.plugin/memcached/integrations/memcached.md index 113b86c8c..5e813eac2 100644 --- a/collectors/python.d.plugin/memcached/integrations/memcached.md +++ b/src/collectors/python.d.plugin/memcached/integrations/memcached.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/memcached/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/memcached/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/memcached/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/memcached/metadata.yaml" sidebar_label: "Memcached" learn_status: "Published" -learn_rel_path: "Data Collection/Databases" +learn_rel_path: "Collecting Metrics/Databases" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -88,9 +88,9 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ memcached_cache_memory_usage ](https://github.com/netdata/netdata/blob/master/health/health.d/memcached.conf) | memcached.cache | cache memory utilization | -| [ memcached_cache_fill_rate ](https://github.com/netdata/netdata/blob/master/health/health.d/memcached.conf) | memcached.cache | average rate the cache fills up (positive), or frees up (negative) space over the last hour | -| [ memcached_out_of_cache_space_time ](https://github.com/netdata/netdata/blob/master/health/health.d/memcached.conf) | memcached.cache | estimated time the cache will run out of space if the system continues to add data at the same rate as the past hour | +| [ memcached_cache_memory_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memcached.conf) | memcached.cache | cache memory utilization | +| [ memcached_cache_fill_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memcached.conf) | memcached.cache | average rate the cache fills up (positive), or frees up (negative) space over the last hour | +| [ memcached_out_of_cache_space_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memcached.conf) | memcached.cache | estimated time the cache will run out of space if the system continues to add data at the same rate as the past hour | ## Setup @@ -107,7 +107,7 @@ The configuration file name for this integration is `python.d/memcached.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -127,7 +127,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -158,7 +158,7 @@ localhost: An example configuration for localipv4. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: @@ -173,7 +173,7 @@ localhost: An example configuration for localipv6. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: diff --git a/collectors/python.d.plugin/memcached/memcached.chart.py b/src/collectors/python.d.plugin/memcached/memcached.chart.py index adb9560b7..adb9560b7 100644 --- a/collectors/python.d.plugin/memcached/memcached.chart.py +++ b/src/collectors/python.d.plugin/memcached/memcached.chart.py diff --git a/collectors/python.d.plugin/memcached/memcached.conf b/src/collectors/python.d.plugin/memcached/memcached.conf index 3286b4623..3286b4623 100644 --- a/collectors/python.d.plugin/memcached/memcached.conf +++ b/src/collectors/python.d.plugin/memcached/memcached.conf diff --git a/collectors/python.d.plugin/monit/README.md b/src/collectors/python.d.plugin/monit/README.md index ac69496f4..ac69496f4 120000 --- a/collectors/python.d.plugin/monit/README.md +++ b/src/collectors/python.d.plugin/monit/README.md diff --git a/collectors/python.d.plugin/monit/integrations/monit.md b/src/collectors/python.d.plugin/monit/integrations/monit.md index 18219141d..d14d2a963 100644 --- a/collectors/python.d.plugin/monit/integrations/monit.md +++ b/src/collectors/python.d.plugin/monit/integrations/monit.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/monit/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/monit/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/monit/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/monit/metadata.yaml" sidebar_label: "Monit" learn_status: "Published" -learn_rel_path: "Data Collection/Synthetic Checks" +learn_rel_path: "Collecting Metrics/Synthetic Checks" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -99,7 +99,7 @@ The configuration file name for this integration is `python.d/monit.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -119,7 +119,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -150,7 +150,7 @@ localhost: Example using basic username and password in order to authenticate. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: @@ -169,7 +169,7 @@ localhost: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: diff --git a/collectors/python.d.plugin/monit/metadata.yaml b/src/collectors/python.d.plugin/monit/metadata.yaml index b51273188..b51273188 100644 --- a/collectors/python.d.plugin/monit/metadata.yaml +++ b/src/collectors/python.d.plugin/monit/metadata.yaml diff --git a/collectors/python.d.plugin/monit/monit.chart.py b/src/collectors/python.d.plugin/monit/monit.chart.py index 5d926961b..5d926961b 100644 --- a/collectors/python.d.plugin/monit/monit.chart.py +++ b/src/collectors/python.d.plugin/monit/monit.chart.py diff --git a/collectors/python.d.plugin/monit/monit.conf b/src/collectors/python.d.plugin/monit/monit.conf index 9a3fb6938..9a3fb6938 100644 --- a/collectors/python.d.plugin/monit/monit.conf +++ b/src/collectors/python.d.plugin/monit/monit.conf diff --git a/collectors/python.d.plugin/nsd/README.md b/src/collectors/python.d.plugin/nsd/README.md index 59fcfe491..59fcfe491 120000 --- a/collectors/python.d.plugin/nsd/README.md +++ b/src/collectors/python.d.plugin/nsd/README.md diff --git a/collectors/python.d.plugin/nsd/integrations/name_server_daemon.md b/src/collectors/python.d.plugin/nsd/integrations/name_server_daemon.md index 0e66c44eb..357812d3d 100644 --- a/collectors/python.d.plugin/nsd/integrations/name_server_daemon.md +++ b/src/collectors/python.d.plugin/nsd/integrations/name_server_daemon.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/nsd/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/nsd/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/nsd/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/nsd/metadata.yaml" sidebar_label: "Name Server Daemon" learn_status: "Published" -learn_rel_path: "Data Collection/DNS and DHCP Servers" +learn_rel_path: "Collecting Metrics/DNS and DHCP Servers" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -121,7 +121,7 @@ The configuration file name for this integration is `python.d/nsd.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -143,7 +143,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/nsd/metadata.yaml b/src/collectors/python.d.plugin/nsd/metadata.yaml index f5e2c46b0..f5e2c46b0 100644 --- a/collectors/python.d.plugin/nsd/metadata.yaml +++ b/src/collectors/python.d.plugin/nsd/metadata.yaml diff --git a/collectors/python.d.plugin/nsd/nsd.chart.py b/src/collectors/python.d.plugin/nsd/nsd.chart.py index 6f9b2cec8..6f9b2cec8 100644 --- a/collectors/python.d.plugin/nsd/nsd.chart.py +++ b/src/collectors/python.d.plugin/nsd/nsd.chart.py diff --git a/collectors/python.d.plugin/nsd/nsd.conf b/src/collectors/python.d.plugin/nsd/nsd.conf index 77a8a3177..77a8a3177 100644 --- a/collectors/python.d.plugin/nsd/nsd.conf +++ b/src/collectors/python.d.plugin/nsd/nsd.conf diff --git a/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py b/src/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py index 556a61435..556a61435 100644 --- a/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py +++ b/src/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py diff --git a/collectors/python.d.plugin/nvidia_smi/nvidia_smi.conf b/src/collectors/python.d.plugin/nvidia_smi/nvidia_smi.conf index 3d2a30d41..3d2a30d41 100644 --- a/collectors/python.d.plugin/nvidia_smi/nvidia_smi.conf +++ b/src/collectors/python.d.plugin/nvidia_smi/nvidia_smi.conf diff --git a/collectors/python.d.plugin/openldap/README.md b/src/collectors/python.d.plugin/openldap/README.md index 45f36b9b9..45f36b9b9 120000 --- a/collectors/python.d.plugin/openldap/README.md +++ b/src/collectors/python.d.plugin/openldap/README.md diff --git a/collectors/python.d.plugin/openldap/integrations/openldap.md b/src/collectors/python.d.plugin/openldap/integrations/openldap.md index a9480a490..97199f7dd 100644 --- a/collectors/python.d.plugin/openldap/integrations/openldap.md +++ b/src/collectors/python.d.plugin/openldap/integrations/openldap.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/openldap/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/openldap/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/openldap/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/openldap/metadata.yaml" sidebar_label: "OpenLDAP" learn_status: "Published" -learn_rel_path: "Data Collection/Authentication and Authorization" +learn_rel_path: "Collecting Metrics/Authentication and Authorization" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -129,7 +129,7 @@ The configuration file name for this integration is `python.d/openldap.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -149,7 +149,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/openldap/metadata.yaml b/src/collectors/python.d.plugin/openldap/metadata.yaml index 3826b22c7..3826b22c7 100644 --- a/collectors/python.d.plugin/openldap/metadata.yaml +++ b/src/collectors/python.d.plugin/openldap/metadata.yaml diff --git a/collectors/python.d.plugin/openldap/openldap.chart.py b/src/collectors/python.d.plugin/openldap/openldap.chart.py index aba143954..aba143954 100644 --- a/collectors/python.d.plugin/openldap/openldap.chart.py +++ b/src/collectors/python.d.plugin/openldap/openldap.chart.py diff --git a/collectors/python.d.plugin/openldap/openldap.conf b/src/collectors/python.d.plugin/openldap/openldap.conf index 5fd99a525..5fd99a525 100644 --- a/collectors/python.d.plugin/openldap/openldap.conf +++ b/src/collectors/python.d.plugin/openldap/openldap.conf diff --git a/collectors/python.d.plugin/oracledb/README.md b/src/collectors/python.d.plugin/oracledb/README.md index a75e3611e..a75e3611e 120000 --- a/collectors/python.d.plugin/oracledb/README.md +++ b/src/collectors/python.d.plugin/oracledb/README.md diff --git a/collectors/python.d.plugin/oracledb/integrations/oracle_db.md b/src/collectors/python.d.plugin/oracledb/integrations/oracle_db.md index 30557c021..5b98fbd20 100644 --- a/collectors/python.d.plugin/oracledb/integrations/oracle_db.md +++ b/src/collectors/python.d.plugin/oracledb/integrations/oracle_db.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/oracledb/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/oracledb/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/oracledb/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/oracledb/metadata.yaml" sidebar_label: "Oracle DB" learn_status: "Published" -learn_rel_path: "Data Collection/Databases" +learn_rel_path: "Collecting Metrics/Databases" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -137,7 +137,7 @@ The configuration file name for this integration is `python.d/oracledb.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -157,7 +157,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/oracledb/metadata.yaml b/src/collectors/python.d.plugin/oracledb/metadata.yaml index f2ab8312b..f2ab8312b 100644 --- a/collectors/python.d.plugin/oracledb/metadata.yaml +++ b/src/collectors/python.d.plugin/oracledb/metadata.yaml diff --git a/collectors/python.d.plugin/oracledb/oracledb.chart.py b/src/collectors/python.d.plugin/oracledb/oracledb.chart.py index 455cf270e..455cf270e 100644 --- a/collectors/python.d.plugin/oracledb/oracledb.chart.py +++ b/src/collectors/python.d.plugin/oracledb/oracledb.chart.py diff --git a/collectors/python.d.plugin/oracledb/oracledb.conf b/src/collectors/python.d.plugin/oracledb/oracledb.conf index 027215dad..027215dad 100644 --- a/collectors/python.d.plugin/oracledb/oracledb.conf +++ b/src/collectors/python.d.plugin/oracledb/oracledb.conf diff --git a/collectors/python.d.plugin/pandas/README.md b/src/collectors/python.d.plugin/pandas/README.md index 2fabe63c1..2fabe63c1 120000 --- a/collectors/python.d.plugin/pandas/README.md +++ b/src/collectors/python.d.plugin/pandas/README.md diff --git a/collectors/python.d.plugin/pandas/integrations/pandas.md b/src/collectors/python.d.plugin/pandas/integrations/pandas.md index 83c5c66b1..898e23f0a 100644 --- a/collectors/python.d.plugin/pandas/integrations/pandas.md +++ b/src/collectors/python.d.plugin/pandas/integrations/pandas.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/pandas/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/pandas/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/pandas/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/pandas/metadata.yaml" sidebar_label: "Pandas" learn_status: "Published" -learn_rel_path: "Data Collection/Generic Data Collection" +learn_rel_path: "Collecting Metrics/Generic Collecting Metrics" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -109,7 +109,7 @@ The configuration file name for this integration is `python.d/pandas.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -129,15 +129,15 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| | chart_configs | an array of chart configuration dictionaries | [] | yes | | chart_configs.name | name of the chart to be displayed in the dashboard. | None | yes | | chart_configs.title | title of the chart to be displayed in the dashboard. | None | yes | -| chart_configs.family | [family](https://github.com/netdata/netdata/blob/master/docs/cloud/visualize/interact-new-charts.md#families) of the chart to be displayed in the dashboard. | None | yes | -| chart_configs.context | [context](https://github.com/netdata/netdata/blob/master/docs/cloud/visualize/interact-new-charts.md#contexts) of the chart to be displayed in the dashboard. | None | yes | +| chart_configs.family | [family](/docs/dashboards-and-charts/netdata-charts.md#families) of the chart to be displayed in the dashboard. | None | yes | +| chart_configs.context | [context](/docs/dashboards-and-charts/netdata-charts.md#contexts) of the chart to be displayed in the dashboard. | None | yes | | chart_configs.type | the type of the chart to be displayed in the dashboard. | None | yes | | chart_configs.units | the units of the chart to be displayed in the dashboard. | None | yes | | chart_configs.df_steps | a series of pandas operations (one per line) that each returns a dataframe. | None | yes | @@ -155,7 +155,7 @@ Every configuration JOB starts with a `job_name` value which will appear in the example pulling some hourly temperature data, a chart for today forecast (mean,min,max) and another chart for current. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml temperature: @@ -227,7 +227,7 @@ temperature: example showing a read_csv from a url and some light pandas data wrangling. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml example_csv: @@ -255,7 +255,7 @@ example_csv: example showing a read_json from a url and some light pandas data wrangling. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml example_json: @@ -282,7 +282,7 @@ example_json: example showing a read_xml from a url and some light pandas data wrangling. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml example_xml: @@ -308,7 +308,7 @@ example_xml: example showing a read_sql from a postgres database using sqlalchemy. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml sql: diff --git a/collectors/python.d.plugin/pandas/pandas.chart.py b/src/collectors/python.d.plugin/pandas/pandas.chart.py index 7977bcb36..7977bcb36 100644 --- a/collectors/python.d.plugin/pandas/pandas.chart.py +++ b/src/collectors/python.d.plugin/pandas/pandas.chart.py diff --git a/collectors/python.d.plugin/pandas/pandas.conf b/src/collectors/python.d.plugin/pandas/pandas.conf index 74a7da3e9..74a7da3e9 100644 --- a/collectors/python.d.plugin/pandas/pandas.conf +++ b/src/collectors/python.d.plugin/pandas/pandas.conf diff --git a/collectors/python.d.plugin/postfix/README.md b/src/collectors/python.d.plugin/postfix/README.md index c62eb5c24..c62eb5c24 120000 --- a/collectors/python.d.plugin/postfix/README.md +++ b/src/collectors/python.d.plugin/postfix/README.md diff --git a/collectors/python.d.plugin/postfix/integrations/postfix.md b/src/collectors/python.d.plugin/postfix/integrations/postfix.md index 2bb99922c..32cc52fbb 100644 --- a/collectors/python.d.plugin/postfix/integrations/postfix.md +++ b/src/collectors/python.d.plugin/postfix/integrations/postfix.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/postfix/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/postfix/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/postfix/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/postfix/metadata.yaml" sidebar_label: "Postfix" learn_status: "Published" -learn_rel_path: "Data Collection/Mail Servers" +learn_rel_path: "Collecting Metrics/Mail Servers" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -105,7 +105,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/postfix/metadata.yaml b/src/collectors/python.d.plugin/postfix/metadata.yaml index 1bbb61164..1bbb61164 100644 --- a/collectors/python.d.plugin/postfix/metadata.yaml +++ b/src/collectors/python.d.plugin/postfix/metadata.yaml diff --git a/collectors/python.d.plugin/postfix/postfix.chart.py b/src/collectors/python.d.plugin/postfix/postfix.chart.py index b650514ee..b650514ee 100644 --- a/collectors/python.d.plugin/postfix/postfix.chart.py +++ b/src/collectors/python.d.plugin/postfix/postfix.chart.py diff --git a/collectors/python.d.plugin/postfix/postfix.conf b/src/collectors/python.d.plugin/postfix/postfix.conf index a4d2472ee..a4d2472ee 100644 --- a/collectors/python.d.plugin/postfix/postfix.conf +++ b/src/collectors/python.d.plugin/postfix/postfix.conf diff --git a/collectors/python.d.plugin/puppet/README.md b/src/collectors/python.d.plugin/puppet/README.md index b6c4c83f9..b6c4c83f9 120000 --- a/collectors/python.d.plugin/puppet/README.md +++ b/src/collectors/python.d.plugin/puppet/README.md diff --git a/collectors/python.d.plugin/puppet/integrations/puppet.md b/src/collectors/python.d.plugin/puppet/integrations/puppet.md index ca190b576..438f9bdc9 100644 --- a/collectors/python.d.plugin/puppet/integrations/puppet.md +++ b/src/collectors/python.d.plugin/puppet/integrations/puppet.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/puppet/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/puppet/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/puppet/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/puppet/metadata.yaml" sidebar_label: "Puppet" learn_status: "Published" -learn_rel_path: "Data Collection/CICD Platforms" +learn_rel_path: "Collecting Metrics/CICD Platforms" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -65,8 +65,8 @@ Metrics: | Metric | Dimensions | Unit | |:------|:----------|:----| -| puppet.jvm | committed, used | MiB | -| puppet.jvm | committed, used | MiB | +| puppet.jvm_heap | committed, used | MiB | +| puppet.jvm_nonheap | committed, used | MiB | | puppet.cpu | execution, GC | percentage | | puppet.fdopen | used | descriptors | @@ -91,7 +91,7 @@ The configuration file name for this integration is `python.d/puppet.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -118,7 +118,7 @@ Every configuration JOB starts with a `job_name` value which will appear in the > - A secured PuppetDB config may require a client certificate. This does not apply to the default PuppetDB configuration though. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -151,7 +151,7 @@ puppetserver: An example using a TLS certificate -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml puppetdb: @@ -170,7 +170,7 @@ puppetdb: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml puppetserver1: diff --git a/collectors/python.d.plugin/puppet/puppet.chart.py b/src/collectors/python.d.plugin/puppet/puppet.chart.py index f8adf6006..0e5b781f5 100644 --- a/collectors/python.d.plugin/puppet/puppet.chart.py +++ b/src/collectors/python.d.plugin/puppet/puppet.chart.py @@ -30,7 +30,7 @@ ORDER = [ CHARTS = { 'jvm_heap': { - 'options': [None, 'JVM Heap', 'MiB', 'resources', 'puppet.jvm', 'area'], + 'options': [None, 'JVM Heap', 'MiB', 'resources', 'puppet.jvm_heap', 'area'], 'lines': [ ['jvm_heap_committed', 'committed', 'absolute', 1, MiB], ['jvm_heap_used', 'used', 'absolute', 1, MiB], @@ -41,7 +41,7 @@ CHARTS = { ], }, 'jvm_nonheap': { - 'options': [None, 'JVM Non-Heap', 'MiB', 'resources', 'puppet.jvm', 'area'], + 'options': [None, 'JVM Non-Heap', 'MiB', 'resources', 'puppet.jvm_nonheap', 'area'], 'lines': [ ['jvm_nonheap_committed', 'committed', 'absolute', 1, MiB], ['jvm_nonheap_used', 'used', 'absolute', 1, MiB], diff --git a/collectors/python.d.plugin/puppet/puppet.conf b/src/collectors/python.d.plugin/puppet/puppet.conf index ff5c3d020..ff5c3d020 100644 --- a/collectors/python.d.plugin/puppet/puppet.conf +++ b/src/collectors/python.d.plugin/puppet/puppet.conf diff --git a/collectors/python.d.plugin/python.d.plugin.in b/src/collectors/python.d.plugin/python.d.plugin.in index 86fea209c..81e68f94c 100644 --- a/collectors/python.d.plugin/python.d.plugin.in +++ b/src/collectors/python.d.plugin/python.d.plugin.in @@ -895,10 +895,12 @@ def main(): log.logger.severity = 'DEBUG' elif level == 'info': log.logger.severity = 'INFO' - elif level == 'warn' or level == 'warning': + elif level == 'warn' or level == 'warning' or level == 'notice': log.logger.severity = 'WARNING' elif level == 'err' or level == 'error': log.logger.severity = 'ERROR' + elif level == 'emergency' or level == 'alert' or level == 'critical': + log.logger.severity = 'DISABLE' if cmd.debug: log.logger.severity = 'DEBUG' diff --git a/collectors/python.d.plugin/python_modules/__init__.py b/src/collectors/python.d.plugin/python_modules/__init__.py index e69de29bb..e69de29bb 100644 --- a/collectors/python.d.plugin/python_modules/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/__init__.py diff --git a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/ExecutableService.py b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/ExecutableService.py index a74b4239e..a74b4239e 100644 --- a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/ExecutableService.py +++ b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/ExecutableService.py diff --git a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/LogService.py b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/LogService.py index a55e33f52..a55e33f52 100644 --- a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/LogService.py +++ b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/LogService.py diff --git a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/MySQLService.py b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/MySQLService.py index 7f5c7d221..7f5c7d221 100644 --- a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/MySQLService.py +++ b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/MySQLService.py diff --git a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SimpleService.py b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SimpleService.py index 3f122e1d9..3f122e1d9 100644 --- a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SimpleService.py +++ b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SimpleService.py diff --git a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SocketService.py b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SocketService.py index d6c755058..d6c755058 100644 --- a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SocketService.py +++ b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/SocketService.py diff --git a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py index 76129d376..76129d376 100644 --- a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py +++ b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/UrlService.py diff --git a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/__init__.py b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/__init__.py index e69de29bb..e69de29bb 100644 --- a/collectors/python.d.plugin/python_modules/bases/FrameworkServices/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/bases/FrameworkServices/__init__.py diff --git a/collectors/python.d.plugin/python_modules/bases/__init__.py b/src/collectors/python.d.plugin/python_modules/bases/__init__.py index e69de29bb..e69de29bb 100644 --- a/collectors/python.d.plugin/python_modules/bases/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/bases/__init__.py diff --git a/collectors/python.d.plugin/python_modules/bases/charts.py b/src/collectors/python.d.plugin/python_modules/bases/charts.py index 203ad1672..203ad1672 100644 --- a/collectors/python.d.plugin/python_modules/bases/charts.py +++ b/src/collectors/python.d.plugin/python_modules/bases/charts.py diff --git a/collectors/python.d.plugin/python_modules/bases/collection.py b/src/collectors/python.d.plugin/python_modules/bases/collection.py index 93bf8cf05..93bf8cf05 100644 --- a/collectors/python.d.plugin/python_modules/bases/collection.py +++ b/src/collectors/python.d.plugin/python_modules/bases/collection.py diff --git a/collectors/python.d.plugin/python_modules/bases/loaders.py b/src/collectors/python.d.plugin/python_modules/bases/loaders.py index 095f3a3b1..095f3a3b1 100644 --- a/collectors/python.d.plugin/python_modules/bases/loaders.py +++ b/src/collectors/python.d.plugin/python_modules/bases/loaders.py diff --git a/collectors/python.d.plugin/python_modules/bases/loggers.py b/src/collectors/python.d.plugin/python_modules/bases/loggers.py index 7ae8ab0c1..92a512a81 100644 --- a/collectors/python.d.plugin/python_modules/bases/loggers.py +++ b/src/collectors/python.d.plugin/python_modules/bases/loggers.py @@ -18,7 +18,7 @@ except ImportError: from bases.collection import on_try_except_finally, unicode_str LOGGING_LEVELS = { - 'CRITICAL': 50, + 'DISABLE': 99, 'ERROR': 40, 'WARNING': 30, 'INFO': 20, diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/__init__.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/__init__.py index 4d560e438..4d560e438 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/__init__.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/composer.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/composer.py index 6b41b8067..6b41b8067 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/composer.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/composer.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/constructor.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/constructor.py index 8ad1b90a7..8ad1b90a7 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/constructor.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/constructor.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/cyaml.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/cyaml.py index 2858ab479..2858ab479 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/cyaml.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/cyaml.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/dumper.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/dumper.py index 3685cbeeb..3685cbeeb 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/dumper.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/dumper.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/emitter.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/emitter.py index 9a460a0fd..9a460a0fd 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/emitter.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/emitter.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/error.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/error.py index 5466be721..5466be721 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/error.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/error.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/events.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/events.py index 283452add..283452add 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/events.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/events.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/loader.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/loader.py index 1c195531f..1c195531f 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/loader.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/loader.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/nodes.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/nodes.py index ed2a1b43e..ed2a1b43e 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/nodes.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/nodes.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/parser.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/parser.py index 97ba08337..97ba08337 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/parser.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/parser.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/reader.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/reader.py index 8d422954e..8d422954e 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/reader.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/reader.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/representer.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/representer.py index 0a1404eca..0a1404eca 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/representer.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/representer.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/resolver.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/resolver.py index 49922debf..49922debf 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/resolver.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/resolver.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/scanner.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/scanner.py index 971da6127..971da6127 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/scanner.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/scanner.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/serializer.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/serializer.py index 15fdbb0c0..15fdbb0c0 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/serializer.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/serializer.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml2/tokens.py b/src/collectors/python.d.plugin/python_modules/pyyaml2/tokens.py index c5c4fb116..c5c4fb116 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml2/tokens.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml2/tokens.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/__init__.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/__init__.py index a884b33cf..a884b33cf 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/__init__.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/composer.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/composer.py index c418bba91..c418bba91 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/composer.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/composer.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/constructor.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/constructor.py index ee09a7a7e..ee09a7a7e 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/constructor.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/constructor.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/cyaml.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/cyaml.py index e6c16d894..e6c16d894 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/cyaml.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/cyaml.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/dumper.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/dumper.py index ba590c6e6..ba590c6e6 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/dumper.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/dumper.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/emitter.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/emitter.py index d4be65a8e..d4be65a8e 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/emitter.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/emitter.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/error.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/error.py index 5fec7d449..5fec7d449 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/error.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/error.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/events.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/events.py index 283452add..283452add 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/events.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/events.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/loader.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/loader.py index 7ef6cf815..7ef6cf815 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/loader.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/loader.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/nodes.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/nodes.py index ed2a1b43e..ed2a1b43e 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/nodes.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/nodes.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/parser.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/parser.py index bcec7f994..bcec7f994 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/parser.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/parser.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/reader.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/reader.py index 0a515fd64..0a515fd64 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/reader.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/reader.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/representer.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/representer.py index 756a18dcc..756a18dcc 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/representer.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/representer.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/resolver.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/resolver.py index 50945e04d..50945e04d 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/resolver.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/resolver.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/scanner.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/scanner.py index b55854e8b..b55854e8b 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/scanner.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/scanner.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/serializer.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/serializer.py index 1ba2f7f9d..1ba2f7f9d 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/serializer.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/serializer.py diff --git a/collectors/python.d.plugin/python_modules/pyyaml3/tokens.py b/src/collectors/python.d.plugin/python_modules/pyyaml3/tokens.py index c5c4fb116..c5c4fb116 100644 --- a/collectors/python.d.plugin/python_modules/pyyaml3/tokens.py +++ b/src/collectors/python.d.plugin/python_modules/pyyaml3/tokens.py diff --git a/collectors/python.d.plugin/python_modules/third_party/__init__.py b/src/collectors/python.d.plugin/python_modules/third_party/__init__.py index e69de29bb..e69de29bb 100644 --- a/collectors/python.d.plugin/python_modules/third_party/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/third_party/__init__.py diff --git a/collectors/python.d.plugin/python_modules/third_party/boinc_client.py b/src/collectors/python.d.plugin/python_modules/third_party/boinc_client.py index ec21779a0..ec21779a0 100644 --- a/collectors/python.d.plugin/python_modules/third_party/boinc_client.py +++ b/src/collectors/python.d.plugin/python_modules/third_party/boinc_client.py diff --git a/collectors/python.d.plugin/python_modules/third_party/filelock.py b/src/collectors/python.d.plugin/python_modules/third_party/filelock.py index 4c981672b..4c981672b 100644 --- a/collectors/python.d.plugin/python_modules/third_party/filelock.py +++ b/src/collectors/python.d.plugin/python_modules/third_party/filelock.py diff --git a/collectors/python.d.plugin/python_modules/third_party/lm_sensors.py b/src/collectors/python.d.plugin/python_modules/third_party/lm_sensors.py index f873eac83..f873eac83 100644 --- a/collectors/python.d.plugin/python_modules/third_party/lm_sensors.py +++ b/src/collectors/python.d.plugin/python_modules/third_party/lm_sensors.py diff --git a/collectors/python.d.plugin/python_modules/third_party/mcrcon.py b/src/collectors/python.d.plugin/python_modules/third_party/mcrcon.py index a65a304b6..a65a304b6 100644 --- a/collectors/python.d.plugin/python_modules/third_party/mcrcon.py +++ b/src/collectors/python.d.plugin/python_modules/third_party/mcrcon.py diff --git a/collectors/python.d.plugin/python_modules/third_party/monotonic.py b/src/collectors/python.d.plugin/python_modules/third_party/monotonic.py index 4ebd556c3..4ebd556c3 100644 --- a/collectors/python.d.plugin/python_modules/third_party/monotonic.py +++ b/src/collectors/python.d.plugin/python_modules/third_party/monotonic.py diff --git a/collectors/python.d.plugin/python_modules/third_party/ordereddict.py b/src/collectors/python.d.plugin/python_modules/third_party/ordereddict.py index 589401b8f..589401b8f 100644 --- a/collectors/python.d.plugin/python_modules/third_party/ordereddict.py +++ b/src/collectors/python.d.plugin/python_modules/third_party/ordereddict.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/__init__.py b/src/collectors/python.d.plugin/python_modules/urllib3/__init__.py index 3add84816..3add84816 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/__init__.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/_collections.py b/src/collectors/python.d.plugin/python_modules/urllib3/_collections.py index 2a6b3ec70..2a6b3ec70 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/_collections.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/_collections.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/connection.py b/src/collectors/python.d.plugin/python_modules/urllib3/connection.py index f757493c7..f757493c7 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/connection.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/connection.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/connectionpool.py b/src/collectors/python.d.plugin/python_modules/urllib3/connectionpool.py index 90e4c86a5..90e4c86a5 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/connectionpool.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/connectionpool.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/__init__.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/__init__.py index e69de29bb..e69de29bb 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/__init__.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/__init__.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/__init__.py index e69de29bb..e69de29bb 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/__init__.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/bindings.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/bindings.py index bb826673f..bb826673f 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/bindings.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/bindings.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/low_level.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/low_level.py index 0f79a1372..0f79a1372 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/low_level.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/_securetransport/low_level.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/appengine.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/appengine.py index e74589fa8..e74589fa8 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/appengine.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/appengine.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/ntlmpool.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/ntlmpool.py index 3f8c9ebf5..3f8c9ebf5 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/ntlmpool.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/ntlmpool.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/pyopenssl.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/pyopenssl.py index 8d373507d..8d373507d 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/pyopenssl.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/pyopenssl.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/securetransport.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/securetransport.py index fcc30118c..fcc30118c 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/securetransport.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/securetransport.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/contrib/socks.py b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/socks.py index 1cb79285b..1cb79285b 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/contrib/socks.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/contrib/socks.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/exceptions.py b/src/collectors/python.d.plugin/python_modules/urllib3/exceptions.py index a71cabe06..a71cabe06 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/exceptions.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/exceptions.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/fields.py b/src/collectors/python.d.plugin/python_modules/urllib3/fields.py index de7577b74..de7577b74 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/fields.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/fields.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/filepost.py b/src/collectors/python.d.plugin/python_modules/urllib3/filepost.py index 3febc9cfe..3febc9cfe 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/filepost.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/filepost.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/packages/__init__.py b/src/collectors/python.d.plugin/python_modules/urllib3/packages/__init__.py index 170e974c1..170e974c1 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/packages/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/packages/__init__.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/packages/backports/__init__.py b/src/collectors/python.d.plugin/python_modules/urllib3/packages/backports/__init__.py index e69de29bb..e69de29bb 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/packages/backports/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/packages/backports/__init__.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/packages/backports/makefile.py b/src/collectors/python.d.plugin/python_modules/urllib3/packages/backports/makefile.py index 8ab122f8b..8ab122f8b 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/packages/backports/makefile.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/packages/backports/makefile.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/packages/ordered_dict.py b/src/collectors/python.d.plugin/python_modules/urllib3/packages/ordered_dict.py index 9f7c0e6b8..9f7c0e6b8 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/packages/ordered_dict.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/packages/ordered_dict.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/packages/six.py b/src/collectors/python.d.plugin/python_modules/urllib3/packages/six.py index 31df5012b..31df5012b 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/packages/six.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/packages/six.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/__init__.py b/src/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/__init__.py index 2aeeeff91..2aeeeff91 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/__init__.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/_implementation.py b/src/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/_implementation.py index 647e081da..647e081da 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/_implementation.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/packages/ssl_match_hostname/_implementation.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/poolmanager.py b/src/collectors/python.d.plugin/python_modules/urllib3/poolmanager.py index adea9bc01..adea9bc01 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/poolmanager.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/poolmanager.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/request.py b/src/collectors/python.d.plugin/python_modules/urllib3/request.py index f78331975..f78331975 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/request.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/request.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/response.py b/src/collectors/python.d.plugin/python_modules/urllib3/response.py index cf14a3076..cf14a3076 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/response.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/response.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/__init__.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/__init__.py index bba628d98..bba628d98 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/__init__.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/__init__.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/connection.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/connection.py index 3bd69e8fa..3bd69e8fa 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/connection.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/connection.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/request.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/request.py index 18f27b032..18f27b032 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/request.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/request.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/response.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/response.py index e4cda93d4..e4cda93d4 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/response.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/response.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/retry.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/retry.py index 61e63afec..61e63afec 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/retry.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/retry.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/selectors.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/selectors.py index de5e49838..de5e49838 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/selectors.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/selectors.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/ssl_.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/ssl_.py index ece3ec39e..ece3ec39e 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/ssl_.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/ssl_.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/timeout.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/timeout.py index 4041cf9b9..4041cf9b9 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/timeout.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/timeout.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/url.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/url.py index 99fd6534a..99fd6534a 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/url.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/url.py diff --git a/collectors/python.d.plugin/python_modules/urllib3/util/wait.py b/src/collectors/python.d.plugin/python_modules/urllib3/util/wait.py index 21e72979c..21e72979c 100644 --- a/collectors/python.d.plugin/python_modules/urllib3/util/wait.py +++ b/src/collectors/python.d.plugin/python_modules/urllib3/util/wait.py diff --git a/collectors/python.d.plugin/rethinkdbs/README.md b/src/collectors/python.d.plugin/rethinkdbs/README.md index 78ddcfa18..78ddcfa18 120000 --- a/collectors/python.d.plugin/rethinkdbs/README.md +++ b/src/collectors/python.d.plugin/rethinkdbs/README.md diff --git a/collectors/python.d.plugin/rethinkdbs/integrations/rethinkdb.md b/src/collectors/python.d.plugin/rethinkdbs/integrations/rethinkdb.md index ab51c0514..f7da12dd6 100644 --- a/collectors/python.d.plugin/rethinkdbs/integrations/rethinkdb.md +++ b/src/collectors/python.d.plugin/rethinkdbs/integrations/rethinkdb.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/rethinkdbs/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/rethinkdbs/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/rethinkdbs/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/rethinkdbs/metadata.yaml" sidebar_label: "RethinkDB" learn_status: "Published" -learn_rel_path: "Data Collection/Databases" +learn_rel_path: "Collecting Metrics/Databases" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -107,7 +107,7 @@ The configuration file name for this integration is `python.d/rethinkdbs.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -127,7 +127,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/rethinkdbs/metadata.yaml b/src/collectors/python.d.plugin/rethinkdbs/metadata.yaml index bbc50eac6..bbc50eac6 100644 --- a/collectors/python.d.plugin/rethinkdbs/metadata.yaml +++ b/src/collectors/python.d.plugin/rethinkdbs/metadata.yaml diff --git a/collectors/python.d.plugin/rethinkdbs/rethinkdbs.chart.py b/src/collectors/python.d.plugin/rethinkdbs/rethinkdbs.chart.py index e3fbc3632..e3fbc3632 100644 --- a/collectors/python.d.plugin/rethinkdbs/rethinkdbs.chart.py +++ b/src/collectors/python.d.plugin/rethinkdbs/rethinkdbs.chart.py diff --git a/collectors/python.d.plugin/rethinkdbs/rethinkdbs.conf b/src/collectors/python.d.plugin/rethinkdbs/rethinkdbs.conf index d671acbb0..d671acbb0 100644 --- a/collectors/python.d.plugin/rethinkdbs/rethinkdbs.conf +++ b/src/collectors/python.d.plugin/rethinkdbs/rethinkdbs.conf diff --git a/collectors/python.d.plugin/retroshare/README.md b/src/collectors/python.d.plugin/retroshare/README.md index 4e4c2cdb7..4e4c2cdb7 120000 --- a/collectors/python.d.plugin/retroshare/README.md +++ b/src/collectors/python.d.plugin/retroshare/README.md diff --git a/collectors/python.d.plugin/retroshare/integrations/retroshare.md b/src/collectors/python.d.plugin/retroshare/integrations/retroshare.md index 4fc003c6f..b045127ee 100644 --- a/collectors/python.d.plugin/retroshare/integrations/retroshare.md +++ b/src/collectors/python.d.plugin/retroshare/integrations/retroshare.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/retroshare/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/retroshare/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/retroshare/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/retroshare/metadata.yaml" sidebar_label: "RetroShare" learn_status: "Published" -learn_rel_path: "Data Collection/Media Services" +learn_rel_path: "Collecting Metrics/Media Services" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -76,7 +76,7 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ retroshare_dht_working ](https://github.com/netdata/netdata/blob/master/health/health.d/retroshare.conf) | retroshare.dht | number of DHT peers | +| [ retroshare_dht_working ](https://github.com/netdata/netdata/blob/master/src/health/health.d/retroshare.conf) | retroshare.dht | number of DHT peers | ## Setup @@ -97,7 +97,7 @@ The configuration file name for this integration is `python.d/retroshare.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -117,7 +117,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -136,7 +136,7 @@ Every configuration JOB starts with a `job_name` value which will appear in the A basic configuration for a RetroShare server running on localhost. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml localhost: @@ -150,7 +150,7 @@ localhost: A basic configuration for a remote RetroShare server. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml remote: diff --git a/collectors/python.d.plugin/retroshare/retroshare.chart.py b/src/collectors/python.d.plugin/retroshare/retroshare.chart.py index 3f9593e94..3f9593e94 100644 --- a/collectors/python.d.plugin/retroshare/retroshare.chart.py +++ b/src/collectors/python.d.plugin/retroshare/retroshare.chart.py diff --git a/collectors/python.d.plugin/retroshare/retroshare.conf b/src/collectors/python.d.plugin/retroshare/retroshare.conf index 3d0af538d..3d0af538d 100644 --- a/collectors/python.d.plugin/retroshare/retroshare.conf +++ b/src/collectors/python.d.plugin/retroshare/retroshare.conf diff --git a/collectors/python.d.plugin/riakkv/README.md b/src/collectors/python.d.plugin/riakkv/README.md index f43ece09b..f43ece09b 120000 --- a/collectors/python.d.plugin/riakkv/README.md +++ b/src/collectors/python.d.plugin/riakkv/README.md diff --git a/collectors/python.d.plugin/riakkv/integrations/riakkv.md b/src/collectors/python.d.plugin/riakkv/integrations/riakkv.md index 2e8279bc3..a671b9c76 100644 --- a/collectors/python.d.plugin/riakkv/integrations/riakkv.md +++ b/src/collectors/python.d.plugin/riakkv/integrations/riakkv.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/riakkv/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/riakkv/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/riakkv/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/riakkv/metadata.yaml" sidebar_label: "RiakKV" learn_status: "Published" -learn_rel_path: "Data Collection/Databases" +learn_rel_path: "Collecting Metrics/Databases" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -99,12 +99,12 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| -| [ riakkv_1h_kv_get_mean_latency ](https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf) | riak.kv.latency.get | average time between reception of client GET request and subsequent response to client over the last hour | -| [ riakkv_kv_get_slow ](https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf) | riak.kv.latency.get | average time between reception of client GET request and subsequent response to the client over the last 3 minutes, compared to the average over the last hour | -| [ riakkv_1h_kv_put_mean_latency ](https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf) | riak.kv.latency.put | average time between reception of client PUT request and subsequent response to the client over the last hour | -| [ riakkv_kv_put_slow ](https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf) | riak.kv.latency.put | average time between reception of client PUT request and subsequent response to the client over the last 3 minutes, compared to the average over the last hour | -| [ riakkv_vm_high_process_count ](https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf) | riak.vm | number of processes running in the Erlang VM | -| [ riakkv_list_keys_active ](https://github.com/netdata/netdata/blob/master/health/health.d/riakkv.conf) | riak.core.fsm_active | number of currently running list keys finite state machines | +| [ riakkv_1h_kv_get_mean_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/riakkv.conf) | riak.kv.latency.get | average time between reception of client GET request and subsequent response to client over the last hour | +| [ riakkv_kv_get_slow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/riakkv.conf) | riak.kv.latency.get | average time between reception of client GET request and subsequent response to the client over the last 3 minutes, compared to the average over the last hour | +| [ riakkv_1h_kv_put_mean_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/riakkv.conf) | riak.kv.latency.put | average time between reception of client PUT request and subsequent response to the client over the last hour | +| [ riakkv_kv_put_slow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/riakkv.conf) | riak.kv.latency.put | average time between reception of client PUT request and subsequent response to the client over the last 3 minutes, compared to the average over the last hour | +| [ riakkv_vm_high_process_count ](https://github.com/netdata/netdata/blob/master/src/health/health.d/riakkv.conf) | riak.vm | number of processes running in the Erlang VM | +| [ riakkv_list_keys_active ](https://github.com/netdata/netdata/blob/master/src/health/health.d/riakkv.conf) | riak.core.fsm_active | number of currently running list keys finite state machines | ## Setup @@ -127,7 +127,7 @@ The configuration file name for this integration is `python.d/riakkv.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -147,7 +147,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -177,7 +177,7 @@ url: 'http://localhost:8098/stats' Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local: diff --git a/collectors/python.d.plugin/riakkv/riakkv.chart.py b/src/collectors/python.d.plugin/riakkv/riakkv.chart.py index c390c8bc0..c390c8bc0 100644 --- a/collectors/python.d.plugin/riakkv/riakkv.chart.py +++ b/src/collectors/python.d.plugin/riakkv/riakkv.chart.py diff --git a/collectors/python.d.plugin/riakkv/riakkv.conf b/src/collectors/python.d.plugin/riakkv/riakkv.conf index be01c48ac..be01c48ac 100644 --- a/collectors/python.d.plugin/riakkv/riakkv.conf +++ b/src/collectors/python.d.plugin/riakkv/riakkv.conf diff --git a/collectors/python.d.plugin/samba/README.md b/src/collectors/python.d.plugin/samba/README.md index 3b63bbab6..3b63bbab6 120000 --- a/collectors/python.d.plugin/samba/README.md +++ b/src/collectors/python.d.plugin/samba/README.md diff --git a/collectors/python.d.plugin/samba/integrations/samba.md b/src/collectors/python.d.plugin/samba/integrations/samba.md index 1bd1664ee..b4a551a8e 100644 --- a/collectors/python.d.plugin/samba/integrations/samba.md +++ b/src/collectors/python.d.plugin/samba/integrations/samba.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/samba/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/samba/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/samba/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/samba/metadata.yaml" sidebar_label: "Samba" learn_status: "Published" -learn_rel_path: "Data Collection/Storage, Mount Points and Filesystems" +learn_rel_path: "Collecting Metrics/Storage, Mount Points and Filesystems" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -91,13 +91,13 @@ There are no alerts configured by default for this integration. #### Enable the samba collector -The `samba` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. +The `samba` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](/docs/netdata-agent/configuration/README.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file. ```bash cd /etc/netdata # Replace this path with your Netdata config directory, if different sudo ./edit-config python.d.conf ``` -Change the value of the `samba` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/configure/start-stop-restart.md) for your system. +Change the value of the `samba` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) for your system. #### Permissions and programs @@ -143,7 +143,7 @@ The configuration file name for this integration is `python.d/samba.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -163,7 +163,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -180,7 +180,7 @@ Every configuration JOB starts with a `job_name` value which will appear in the A basic example configuration. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml my_job_name: diff --git a/collectors/python.d.plugin/samba/samba.chart.py b/src/collectors/python.d.plugin/samba/samba.chart.py index 8eebcd60c..8eebcd60c 100644 --- a/collectors/python.d.plugin/samba/samba.chart.py +++ b/src/collectors/python.d.plugin/samba/samba.chart.py diff --git a/collectors/python.d.plugin/samba/samba.conf b/src/collectors/python.d.plugin/samba/samba.conf index db15d4e9e..db15d4e9e 100644 --- a/collectors/python.d.plugin/samba/samba.conf +++ b/src/collectors/python.d.plugin/samba/samba.conf diff --git a/collectors/python.d.plugin/spigotmc/README.md b/src/collectors/python.d.plugin/spigotmc/README.md index 66e5c9c47..66e5c9c47 120000 --- a/collectors/python.d.plugin/spigotmc/README.md +++ b/src/collectors/python.d.plugin/spigotmc/README.md diff --git a/collectors/python.d.plugin/spigotmc/integrations/spigotmc.md b/src/collectors/python.d.plugin/spigotmc/integrations/spigotmc.md index 55ec8fa22..8f7fdaf4d 100644 --- a/collectors/python.d.plugin/spigotmc/integrations/spigotmc.md +++ b/src/collectors/python.d.plugin/spigotmc/integrations/spigotmc.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/spigotmc/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/spigotmc/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/spigotmc/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/spigotmc/metadata.yaml" sidebar_label: "SpigotMC" learn_status: "Published" -learn_rel_path: "Data Collection/Gaming" +learn_rel_path: "Collecting Metrics/Gaming" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -98,7 +98,7 @@ The configuration file name for this integration is `python.d/spigotmc.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -118,7 +118,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -150,7 +150,7 @@ local: An example using basic password for authentication with the remote console. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local: @@ -169,7 +169,7 @@ local: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local_server: diff --git a/collectors/python.d.plugin/spigotmc/metadata.yaml b/src/collectors/python.d.plugin/spigotmc/metadata.yaml index 5dea9f0c8..5dea9f0c8 100644 --- a/collectors/python.d.plugin/spigotmc/metadata.yaml +++ b/src/collectors/python.d.plugin/spigotmc/metadata.yaml diff --git a/collectors/python.d.plugin/spigotmc/spigotmc.chart.py b/src/collectors/python.d.plugin/spigotmc/spigotmc.chart.py index 81370fb4c..81370fb4c 100644 --- a/collectors/python.d.plugin/spigotmc/spigotmc.chart.py +++ b/src/collectors/python.d.plugin/spigotmc/spigotmc.chart.py diff --git a/collectors/python.d.plugin/spigotmc/spigotmc.conf b/src/collectors/python.d.plugin/spigotmc/spigotmc.conf index f0064ea2f..f0064ea2f 100644 --- a/collectors/python.d.plugin/spigotmc/spigotmc.conf +++ b/src/collectors/python.d.plugin/spigotmc/spigotmc.conf diff --git a/collectors/python.d.plugin/squid/README.md b/src/collectors/python.d.plugin/squid/README.md index c4e5a03d7..c4e5a03d7 120000 --- a/collectors/python.d.plugin/squid/README.md +++ b/src/collectors/python.d.plugin/squid/README.md diff --git a/collectors/python.d.plugin/squid/integrations/squid.md b/src/collectors/python.d.plugin/squid/integrations/squid.md index 6599826da..10f927af7 100644 --- a/collectors/python.d.plugin/squid/integrations/squid.md +++ b/src/collectors/python.d.plugin/squid/integrations/squid.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/squid/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/squid/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/squid/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/squid/metadata.yaml" sidebar_label: "Squid" learn_status: "Published" -learn_rel_path: "Data Collection/Web Servers and Web Proxies" +learn_rel_path: "Collecting Metrics/Web Servers and Web Proxies" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -94,7 +94,7 @@ The configuration file name for this integration is `python.d/squid.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -114,7 +114,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -150,7 +150,7 @@ example_job_name: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local_job: diff --git a/collectors/python.d.plugin/squid/metadata.yaml b/src/collectors/python.d.plugin/squid/metadata.yaml index d0c5b3ecc..d0c5b3ecc 100644 --- a/collectors/python.d.plugin/squid/metadata.yaml +++ b/src/collectors/python.d.plugin/squid/metadata.yaml diff --git a/collectors/python.d.plugin/squid/squid.chart.py b/src/collectors/python.d.plugin/squid/squid.chart.py index bcae2d892..bcae2d892 100644 --- a/collectors/python.d.plugin/squid/squid.chart.py +++ b/src/collectors/python.d.plugin/squid/squid.chart.py diff --git a/collectors/python.d.plugin/squid/squid.conf b/src/collectors/python.d.plugin/squid/squid.conf index b90a52c0c..b90a52c0c 100644 --- a/collectors/python.d.plugin/squid/squid.conf +++ b/src/collectors/python.d.plugin/squid/squid.conf diff --git a/collectors/python.d.plugin/tomcat/README.md b/src/collectors/python.d.plugin/tomcat/README.md index 997090c35..997090c35 120000 --- a/collectors/python.d.plugin/tomcat/README.md +++ b/src/collectors/python.d.plugin/tomcat/README.md diff --git a/collectors/python.d.plugin/tomcat/integrations/tomcat.md b/src/collectors/python.d.plugin/tomcat/integrations/tomcat.md index 883f29dd3..64938ad62 100644 --- a/collectors/python.d.plugin/tomcat/integrations/tomcat.md +++ b/src/collectors/python.d.plugin/tomcat/integrations/tomcat.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/tomcat/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/tomcat/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/tomcat/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/tomcat/metadata.yaml" sidebar_label: "Tomcat" learn_status: "Published" -learn_rel_path: "Data Collection/Web Servers and Web Proxies" +learn_rel_path: "Collecting Metrics/Web Servers and Web Proxies" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -99,7 +99,7 @@ The configuration file name for this integration is `python.d/tomcat.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -117,7 +117,7 @@ The following options can be defined globally: priority, penalty, autodetection_ Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options per job</summary> +<details open><summary>Config options per job</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -148,7 +148,7 @@ localhost: A typical configuration using an IPv4 endpoint -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local_ipv4: @@ -162,7 +162,7 @@ local_ipv4: A typical configuration using an IPv6 endpoint -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local_ipv6: diff --git a/collectors/python.d.plugin/tomcat/metadata.yaml b/src/collectors/python.d.plugin/tomcat/metadata.yaml index e68526073..e68526073 100644 --- a/collectors/python.d.plugin/tomcat/metadata.yaml +++ b/src/collectors/python.d.plugin/tomcat/metadata.yaml diff --git a/collectors/python.d.plugin/tomcat/tomcat.chart.py b/src/collectors/python.d.plugin/tomcat/tomcat.chart.py index 90315f8c7..90315f8c7 100644 --- a/collectors/python.d.plugin/tomcat/tomcat.chart.py +++ b/src/collectors/python.d.plugin/tomcat/tomcat.chart.py diff --git a/collectors/python.d.plugin/tomcat/tomcat.conf b/src/collectors/python.d.plugin/tomcat/tomcat.conf index 009591bdf..009591bdf 100644 --- a/collectors/python.d.plugin/tomcat/tomcat.conf +++ b/src/collectors/python.d.plugin/tomcat/tomcat.conf diff --git a/collectors/python.d.plugin/tor/README.md b/src/collectors/python.d.plugin/tor/README.md index 7c20cd40a..7c20cd40a 120000 --- a/collectors/python.d.plugin/tor/README.md +++ b/src/collectors/python.d.plugin/tor/README.md diff --git a/collectors/python.d.plugin/tor/integrations/tor.md b/src/collectors/python.d.plugin/tor/integrations/tor.md index 0e57fa793..728245cfa 100644 --- a/collectors/python.d.plugin/tor/integrations/tor.md +++ b/src/collectors/python.d.plugin/tor/integrations/tor.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/tor/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/tor/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/tor/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/tor/metadata.yaml" sidebar_label: "Tor" learn_status: "Published" -learn_rel_path: "Data Collection/VPNs" +learn_rel_path: "Collecting Metrics/VPNs" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -99,7 +99,7 @@ The configuration file name for this integration is `python.d/tor.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -119,7 +119,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -140,7 +140,7 @@ Every configuration JOB starts with a `job_name` value which will appear in the A basic TCP configuration. `local_addr` is ommited and will default to `127.0.0.1` -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local_tcp: @@ -155,7 +155,7 @@ local_tcp: A basic local socket configuration -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local_socket: diff --git a/collectors/python.d.plugin/tor/metadata.yaml b/src/collectors/python.d.plugin/tor/metadata.yaml index 8647eca23..8647eca23 100644 --- a/collectors/python.d.plugin/tor/metadata.yaml +++ b/src/collectors/python.d.plugin/tor/metadata.yaml diff --git a/collectors/python.d.plugin/tor/tor.chart.py b/src/collectors/python.d.plugin/tor/tor.chart.py index f7bc2d79b..f7bc2d79b 100644 --- a/collectors/python.d.plugin/tor/tor.chart.py +++ b/src/collectors/python.d.plugin/tor/tor.chart.py diff --git a/collectors/python.d.plugin/tor/tor.conf b/src/collectors/python.d.plugin/tor/tor.conf index c7c98dc0b..c7c98dc0b 100644 --- a/collectors/python.d.plugin/tor/tor.conf +++ b/src/collectors/python.d.plugin/tor/tor.conf diff --git a/collectors/python.d.plugin/traefik/traefik.chart.py b/src/collectors/python.d.plugin/traefik/traefik.chart.py index 5a498467f..5a498467f 100644 --- a/collectors/python.d.plugin/traefik/traefik.chart.py +++ b/src/collectors/python.d.plugin/traefik/traefik.chart.py diff --git a/collectors/python.d.plugin/traefik/traefik.conf b/src/collectors/python.d.plugin/traefik/traefik.conf index e3f182d32..e3f182d32 100644 --- a/collectors/python.d.plugin/traefik/traefik.conf +++ b/src/collectors/python.d.plugin/traefik/traefik.conf diff --git a/collectors/python.d.plugin/uwsgi/README.md b/src/collectors/python.d.plugin/uwsgi/README.md index 44b855949..44b855949 120000 --- a/collectors/python.d.plugin/uwsgi/README.md +++ b/src/collectors/python.d.plugin/uwsgi/README.md diff --git a/collectors/python.d.plugin/uwsgi/integrations/uwsgi.md b/src/collectors/python.d.plugin/uwsgi/integrations/uwsgi.md index af58608bd..508d9d195 100644 --- a/collectors/python.d.plugin/uwsgi/integrations/uwsgi.md +++ b/src/collectors/python.d.plugin/uwsgi/integrations/uwsgi.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/uwsgi/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/uwsgi/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/uwsgi/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/uwsgi/metadata.yaml" sidebar_label: "uWSGI" learn_status: "Published" -learn_rel_path: "Data Collection/Web Servers and Web Proxies" +learn_rel_path: "Collecting Metrics/Web Servers and Web Proxies" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -99,7 +99,7 @@ The configuration file name for this integration is `python.d/uwsgi.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -119,7 +119,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| @@ -140,7 +140,7 @@ Every configuration JOB starts with a `job_name` value which will appear in the A basic example configuration, one job will run at a time. Autodetect mechanism uses it by default. As all JOBs have the same name, only one can run at a time. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml socket: @@ -172,7 +172,7 @@ localipv6: Collecting metrics from local and remote instances. -<details><summary>Config</summary> +<details open><summary>Config</summary> ```yaml local: diff --git a/collectors/python.d.plugin/uwsgi/metadata.yaml b/src/collectors/python.d.plugin/uwsgi/metadata.yaml index cdb090ac1..cdb090ac1 100644 --- a/collectors/python.d.plugin/uwsgi/metadata.yaml +++ b/src/collectors/python.d.plugin/uwsgi/metadata.yaml diff --git a/collectors/python.d.plugin/uwsgi/uwsgi.chart.py b/src/collectors/python.d.plugin/uwsgi/uwsgi.chart.py index e4d900005..e4d900005 100644 --- a/collectors/python.d.plugin/uwsgi/uwsgi.chart.py +++ b/src/collectors/python.d.plugin/uwsgi/uwsgi.chart.py diff --git a/collectors/python.d.plugin/uwsgi/uwsgi.conf b/src/collectors/python.d.plugin/uwsgi/uwsgi.conf index 7d09e7330..7d09e7330 100644 --- a/collectors/python.d.plugin/uwsgi/uwsgi.conf +++ b/src/collectors/python.d.plugin/uwsgi/uwsgi.conf diff --git a/collectors/python.d.plugin/varnish/README.md b/src/collectors/python.d.plugin/varnish/README.md index 194be2335..194be2335 120000 --- a/collectors/python.d.plugin/varnish/README.md +++ b/src/collectors/python.d.plugin/varnish/README.md diff --git a/collectors/python.d.plugin/varnish/integrations/varnish.md b/src/collectors/python.d.plugin/varnish/integrations/varnish.md index da74dcf8f..64da800a3 100644 --- a/collectors/python.d.plugin/varnish/integrations/varnish.md +++ b/src/collectors/python.d.plugin/varnish/integrations/varnish.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/varnish/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/varnish/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/varnish/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/varnish/metadata.yaml" sidebar_label: "Varnish" learn_status: "Published" -learn_rel_path: "Data Collection/Web Servers and Web Proxies" +learn_rel_path: "Collecting Metrics/Web Servers and Web Proxies" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -138,7 +138,7 @@ The configuration file name for this integration is `python.d/varnish.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -158,7 +158,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/varnish/metadata.yaml b/src/collectors/python.d.plugin/varnish/metadata.yaml index d31c1cf6f..d31c1cf6f 100644 --- a/collectors/python.d.plugin/varnish/metadata.yaml +++ b/src/collectors/python.d.plugin/varnish/metadata.yaml diff --git a/collectors/python.d.plugin/varnish/varnish.chart.py b/src/collectors/python.d.plugin/varnish/varnish.chart.py index 506ad026a..506ad026a 100644 --- a/collectors/python.d.plugin/varnish/varnish.chart.py +++ b/src/collectors/python.d.plugin/varnish/varnish.chart.py diff --git a/collectors/python.d.plugin/varnish/varnish.conf b/src/collectors/python.d.plugin/varnish/varnish.conf index 54bfe4dee..54bfe4dee 100644 --- a/collectors/python.d.plugin/varnish/varnish.conf +++ b/src/collectors/python.d.plugin/varnish/varnish.conf diff --git a/collectors/python.d.plugin/w1sensor/README.md b/src/collectors/python.d.plugin/w1sensor/README.md index c0fa9cd1b..c0fa9cd1b 120000 --- a/collectors/python.d.plugin/w1sensor/README.md +++ b/src/collectors/python.d.plugin/w1sensor/README.md diff --git a/collectors/python.d.plugin/w1sensor/integrations/1-wire_sensors.md b/src/collectors/python.d.plugin/w1sensor/integrations/1-wire_sensors.md index fe3c05ba6..35517aeda 100644 --- a/collectors/python.d.plugin/w1sensor/integrations/1-wire_sensors.md +++ b/src/collectors/python.d.plugin/w1sensor/integrations/1-wire_sensors.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/w1sensor/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/w1sensor/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/w1sensor/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/w1sensor/metadata.yaml" sidebar_label: "1-Wire Sensors" learn_status: "Published" -learn_rel_path: "Data Collection/Hardware Devices and Sensors" +learn_rel_path: "Collecting Metrics/Hardware Devices and Sensors" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -91,7 +91,7 @@ The configuration file name for this integration is `python.d/w1sensor.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -111,7 +111,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/w1sensor/metadata.yaml b/src/collectors/python.d.plugin/w1sensor/metadata.yaml index 7b0768237..7b0768237 100644 --- a/collectors/python.d.plugin/w1sensor/metadata.yaml +++ b/src/collectors/python.d.plugin/w1sensor/metadata.yaml diff --git a/collectors/python.d.plugin/w1sensor/w1sensor.chart.py b/src/collectors/python.d.plugin/w1sensor/w1sensor.chart.py index 66797ced3..66797ced3 100644 --- a/collectors/python.d.plugin/w1sensor/w1sensor.chart.py +++ b/src/collectors/python.d.plugin/w1sensor/w1sensor.chart.py diff --git a/collectors/python.d.plugin/w1sensor/w1sensor.conf b/src/collectors/python.d.plugin/w1sensor/w1sensor.conf index b60d28650..b60d28650 100644 --- a/collectors/python.d.plugin/w1sensor/w1sensor.conf +++ b/src/collectors/python.d.plugin/w1sensor/w1sensor.conf diff --git a/collectors/python.d.plugin/zscores/README.md b/src/collectors/python.d.plugin/zscores/README.md index 159ce0787..159ce0787 120000 --- a/collectors/python.d.plugin/zscores/README.md +++ b/src/collectors/python.d.plugin/zscores/README.md diff --git a/collectors/python.d.plugin/zscores/integrations/python.d_zscores.md b/src/collectors/python.d.plugin/zscores/integrations/python.d_zscores.md index 9d7d1c3d5..1aceec67d 100644 --- a/collectors/python.d.plugin/zscores/integrations/python.d_zscores.md +++ b/src/collectors/python.d.plugin/zscores/integrations/python.d_zscores.md @@ -1,9 +1,9 @@ <!--startmeta -custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/zscores/README.md" -meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/python.d.plugin/zscores/metadata.yaml" +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/zscores/README.md" +meta_yaml: "https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/zscores/metadata.yaml" sidebar_label: "python.d zscores" learn_status: "Published" -learn_rel_path: "Data Collection/Other" +learn_rel_path: "Collecting Metrics/Other" most_popular: False message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" endmeta--> @@ -20,7 +20,7 @@ Module: zscores By using smoothed, rolling [Z-Scores](https://en.wikipedia.org/wiki/Standard_score) for selected metrics or charts you can narrow down your focus and shorten root cause analysis. -This collector uses the [Netdata rest api](https://github.com/netdata/netdata/blob/master/web/api/README.md) to get the `mean` and `stddev` +This collector uses the [Netdata rest api](/src/web/api/README.md) to get the `mean` and `stddev` for each dimension on specified charts over a time range (defined by `train_secs` and `offset_secs`). For each dimension it will calculate a Z-Score as `z = (x - mean) / stddev` (clipped at `z_clip`). Scores are then smoothed over @@ -100,7 +100,7 @@ The configuration file name for this integration is `python.d/zscores.conf`. You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). +Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory). ```bash cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata @@ -120,7 +120,7 @@ Additionally, the following collapsed table contains all the options that can be Every configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. -<details><summary>Config options</summary> +<details open><summary>Config options</summary> | Name | Description | Default | Required | |:----|:-----------|:-------|:--------:| diff --git a/collectors/python.d.plugin/zscores/zscores.chart.py b/src/collectors/python.d.plugin/zscores/zscores.chart.py index 1099b9376..1099b9376 100644 --- a/collectors/python.d.plugin/zscores/zscores.chart.py +++ b/src/collectors/python.d.plugin/zscores/zscores.chart.py diff --git a/collectors/python.d.plugin/zscores/zscores.conf b/src/collectors/python.d.plugin/zscores/zscores.conf index 07d62ebe6..07d62ebe6 100644 --- a/collectors/python.d.plugin/zscores/zscores.conf +++ b/src/collectors/python.d.plugin/zscores/zscores.conf diff --git a/collectors/python.d.plugin/fail2ban/README.md b/src/go/collectors/go.d.plugin/modules/fail2ban/README.md index 642a8bcf5..642a8bcf5 120000 --- a/collectors/python.d.plugin/fail2ban/README.md +++ b/src/go/collectors/go.d.plugin/modules/fail2ban/README.md diff --git a/collectors/python.d.plugin/hddtemp/README.md b/src/go/collectors/go.d.plugin/modules/hddtemp/README.md index 95c7593f8..95c7593f8 120000 --- a/collectors/python.d.plugin/hddtemp/README.md +++ b/src/go/collectors/go.d.plugin/modules/hddtemp/README.md diff --git a/collectors/python.d.plugin/litespeed/README.md b/src/go/collectors/go.d.plugin/modules/litespeed/README.md index e7418b3dc..e7418b3dc 120000 --- a/collectors/python.d.plugin/litespeed/README.md +++ b/src/go/collectors/go.d.plugin/modules/litespeed/README.md diff --git a/collectors/python.d.plugin/sensors/README.md b/src/go/collectors/go.d.plugin/modules/sensors/README.md index 4e92b0882..4e92b0882 120000 --- a/collectors/python.d.plugin/sensors/README.md +++ b/src/go/collectors/go.d.plugin/modules/sensors/README.md diff --git a/collectors/python.d.plugin/smartd_log/README.md b/src/go/collectors/go.d.plugin/modules/smartctl/README.md index 63aad6c85..63aad6c85 120000 --- a/collectors/python.d.plugin/smartd_log/README.md +++ b/src/go/collectors/go.d.plugin/modules/smartctl/README.md |