3 Every module should be compatible with python2 and python3.
4 All third party libraries should be installed system-wide or in `python_modules` directory.
5 Module configurations are written in YAML and **pyYAML is required**.
7 Every configuration file must have one of two formats:
9 - Configuration for only one job:
12 update_every : 2 # update frequency
13 retries : 1 # how many failures in update() is tolerated
14 priority : 20000 # where it is shown on dashboard
16 other_var1 : bla # variables passed to module
20 - Configuration for many jobs (ex. mysql):
29 update_every : 5 # job update frequency
30 other_var1 : some_val # module specific variable
33 priority : 5 # job position on dashboard
34 retries : 20 # job retries
35 other_var2 : val # module specific variable
38 `update_every`, `retries`, and `priority` are always optional.
42 The following python.d modules are supported:
46 This module will monitor one or more apache servers depending on configuration.
49 * apache with enabled `mod_status`
51 It produces the following charts:
53 1. **Requests** in requests/s
59 3. **Async Connections**
64 4. **Bandwidth** in kilobytes/s
71 6. **Lifetime Avg. Requests/s** in requests/s
74 7. **Lifetime Avg. Bandwidth/s** in kilobytes/s
77 8. **Lifetime Avg. Response Size** in bytes/request
82 Needs only `url` to server's `server-status?auto`
84 Here is an example for 2 servers:
91 url : 'http://localhost/server-status?auto'
95 url : 'http://www.apache.org/server-status?auto'
100 Without configuration, module attempts to connect to `http://localhost/server-status?auto`
106 Module monitors apache mod_cache log and produces only one chart:
108 **cached responses** in percent cached
121 log_path : '/var/log/apache2/cache.log'
124 If no configuration is given, module will attempt to read log file at `/var/log/apache2/cache.log`
130 Module parses bind dump file to collect real-time performance metrics
133 * Version of bind must be 9.6 +
134 * Netdata must have permissions to run `rndc status`
138 1. **Name server statistics**
151 2. **Incoming queries**
172 3. **Outgoing queries**
173 * Same as Incoming queries
182 named_stats_path : '/var/log/bind/named.stats'
185 If no configuration is given, module will attempt to read named.stats file at `/var/log/bind/named.stats`
191 This module shows the current CPU frequency as set by the cpufreq kernel
195 You need to have `CONFIG_CPU_FREQ` and (optionally) `CONFIG_CPU_FREQ_STAT`
196 enabled in your kernel.
198 This module tries to read from one of two possible locations. On
199 initialization, it tries to read the `time_in_state` files provided by
200 cpufreq\_stats. If this file does not exist, or doesn't contain valid data, it
201 falls back to using the more inaccurate `scaling_cur_freq` file (which only
202 represents the **current** CPU frequency, and doesn't account for any state
203 changes which happen between updates).
205 It produces one chart with multiple lines (one line per core).
212 sys_dir: "/sys/devices"
215 If no configuration is given, module will search for cpufreq files in `/sys/devices` directory.
216 Directory is also prefixed with `NETDATA_HOST_PREFIX` if specified.
222 This module monitors the usage of CPU idle states.
225 Your kernel needs to have `CONFIG_CPU_IDLE` enabled.
227 It produces one stacked chart per CPU, showing the percentage of time spent in
233 This module provides dns query time statistics.
236 * `python-dnspython` package
238 It produces one aggregate chart or one chart per dns server, showing the query time.
244 This module provides statistics information from dovecot server.
245 Statistics are taken from dovecot socket by executing `EXPORT global` command.
246 More information about dovecot stats can be found on [project wiki page.](http://wiki2.dovecot.org/Statistics)
249 Dovecot unix socket with R/W permissions for user netdata or dovecot with configured TCP/IP socket.
251 Module gives information with following charts:
259 3. **commands** - number of IMAP commands
266 5. **Context Switches**
270 6. **disk** in bytes/s
274 7. **bytes** in bytes/s
278 8. **number of syscalls** in syscalls/s
282 9. **lookups** - number of lookups per second
286 10. **hits** - number of cache hits
289 11. **attempts** - authorization attemts
293 12. **cache** - cached authorization hits
309 socket : '/var/run/dovecot/stats'
312 If no configuration is given, module will attempt to connect to dovecot using unix socket localized in `/var/run/dovecot/stats`
318 Module monitor elasticsearch performance and health metrics
322 1. **Search performance** charts:
323 * Number of queries, fetches
324 * Time spent on queries, fetches
325 * Query and fetch latency
327 2. **Indexing performance** charts:
328 * Number of documents indexed, index refreshes, flushes
329 * Time spent on indexing, refreshing, flushing
330 * Indexing and flushing latency
332 3. **Memory usage and garbace collection** charts:
333 * JVM heap currently in use, commited
334 * Count of garbage collections
335 * Time spent on garbage collections
337 4. **Host metrics** charts:
338 * Available file descriptors in percent
339 * Opened HTTP connections
340 * Cluster communication transport metrics
342 5. **Queues and rejections** charts:
343 * Number of queued/rejected threads in thread pool
345 6. **Fielddata cache** charts:
346 * Fielddata cache size
347 * Fielddata evictions and circuit breaker tripped count
349 7. **Cluster health API** charts:
351 * Nodes and tasks statistics
354 8. **Cluster stats API** charts:
356 * Query cache statistics
359 * Indices and shards statistics
367 host : 'ipaddress' # Server ip address or hostname
368 port : 'password' # Port on which elasticsearch listed
369 cluster_health : True/False # Calls to cluster health elasticsearch API. Enabled by default.
370 cluster_stats : True/False # Calls to cluster stats elasticsearch API. Enabled by default.
373 If no configuration is given, module will fail to run.
379 Simple module executing `exim -bpc` to grab exim queue.
380 This command can take a lot of time to finish its execution thus it is not recommended to run it every second.
382 It produces only one chart:
384 1. **Exim Queue Emails**
387 Configuration is not needed.
393 Module monitor fail2ban log file to show all bans for all active jails
396 * fail2ban.log file MUST BE readable by netdata (A good idea is to add **create 0640 root netdata** to fail2ban conf at logrotate.d)
398 It produces one chart with multiple lines (one line per jail)
406 log_path: '/var/log/fail2ban.log'
407 conf_path: '/etc/fail2ban/jail.local'
408 exclude: 'dropbear apache'
410 If no configuration is given, module will attempt to read log file at `/var/log/fail2ban.log` and conf file at `/etc/fail2ban/jail.local`.
411 If conf file is not found default jail is `ssh`.
417 Uses the `radclient` command to provide freeradius statistics. It is not recommended to run it every second.
421 1. **Authentication counters:**
424 * auth-dropped-requests
425 * auth-duplicate-requests
426 * auth-invalid-requests
427 * auth-malformed-requests
430 2. **Accounting counters:** [optional]
431 * accounting-requests
432 * accounting-responses
433 * acct-dropped-requests
434 * acct-duplicate-requests
435 * acct-invalid-requests
436 * acct-malformed-requests
439 3. **Proxy authentication counters:** [optional]
440 * proxy-access-accepts
441 * proxy-access-rejects
442 * proxy-auth-dropped-requests
443 * proxy-auth-duplicate-requests
444 * proxy-auth-invalid-requests
445 * proxy-auth-malformed-requests
446 * proxy-auth-unknown-types
448 4. **Proxy accounting counters:** [optional]
449 * proxy-accounting-requests
450 * proxy-accounting-responses
451 * proxy-acct-dropped-requests
452 * proxy-acct-duplicate-requests
453 * proxy-acct-invalid-requests
454 * proxy-acct-malformed-requests
455 * proxy-acct-unknown-typesa
466 secret : 'adminsecret'
467 acct : False # Freeradius accounting statistics.
468 proxy_auth : False # Freeradius proxy authentication statistics.
469 proxy_acct : False # Freeradius proxy accounting statistics.
472 **Freeradius server configuration:**
474 The configuration for the status server is automatically created in the sites-available directory.
475 By default, server is enabled and can be queried from every client.
476 FreeRADIUS will only respond to status-server messages, if the status-server virtual server has been enabled.
478 To do this, create a link from the sites-enabled directory to the status file in the sites-available directory:
480 * ln -s ../sites-available/status status
482 and restart/reload your FREERADIUS server.
488 Module monitors frontend and backend metrics such as bytes in, bytes out, sessions current, sessions in queue current.
489 And health metrics such as backend servers status (server check should be used).
491 Plugin can obtain data from url **OR** unix socket.
494 Socket MUST be readable AND writable by netdata user.
498 1. **Frontend** family charts
502 * Sessions in queue current
504 2. **Backend** family charts
508 * Sessions in queue current
511 * number of failed servers for every backend (in DOWN state)
520 user : 'username' # ONLY IF stats auth is used
521 pass : 'password' # # ONLY IF stats auth is used
522 url : 'http://ip.address:port/url;csv;norefresh'
529 socket : 'path/to/haproxy/sock'
532 If no configuration is given, module will fail to run.
538 Module monitors disk temperatures from one or more hddtemp daemons.
541 Running `hddtemp` in daemonized mode with access on tcp port
543 It produces one chart **Temperature** with dynamic number of dimensions (one per disk)
555 If no configuration is given, module will attempt to connect to hddtemp daemon on `127.0.0.1:7634` address
561 Module monitors [IPFS](https://ipfs.io) basic information.
563 1. **Bandwidth** in kbits/s
572 Only url to IPFS server is needed.
579 url : 'http://localhost:5001'
586 Module monitor leases database to show all active leases for given pools.
589 * dhcpd leases file MUST BE readable by netdata
590 * pools MUST BE in CIDR format
594 1. **Pools utilization** Aggregate chart for all pools.
595 * utilization in percent
598 * leases (overall number of leases for all pools)
600 3. **Active leases** for every pools
601 * leases (number of active leases in pool)
610 leases_path : '/var/lib/dhcp/dhcpd.leases'
611 pools : '192.168.3.0/24 192.168.4.0/24 192.168.5.0/24'
614 In case of python2 you need to install `py2-ipaddress` to make plugin work.
615 The module will not work If no configuration is given.
622 Module monitor /proc/mdstat
626 1. **Health** Number of failed disks in every array (aggregate chart).
629 * total (number of devices array ideally would have)
630 * inuse (number of devices currently are in use)
632 3. **Current status**
634 * recovery in percent
638 4. **Operation status** (if resync/recovery/reshape/check is active)
640 * speed in megabytes/s
643 No configuration is needed.
649 Memcached monitoring module. Data grabbed from [stats interface](https://github.com/memcached/memcached/wiki/Commands#stats).
651 1. **Network** in kilobytes/s
655 2. **Connections** per second
660 3. **Items** in cluster
664 4. **Evicted and Reclaimed** items
668 5. **GET** requests/s
672 6. **GET rate** rate in requests/s
675 7. **SET rate** rate in requests/s
678 8. **DELETE** requests/s
682 9. **CAS** requests/s
687 10. **Increment** requests/s
691 11. **Decrement** requests/s
695 12. **Touch** requests/s
699 13. **Touch rate** rate in requests/s
713 If no configuration is given, module will attempt to connect to memcached instance on `127.0.0.1:11211` address.
719 Module monitor mongodb performance and health metrics
722 * `python-pymongo` package.
724 You need to install it manually.
727 Number of charts depends on mongodb version, storage engine and other features (replication):
729 1. **Read requests**:
731 * getmore (operation the cursor executes to get additional data from query)
733 2. **Write requests**:
738 3. **Active clients**:
739 * readers (number of clients with read operations in progress or queued)
740 * writers (number of clients with write operations in progress or queued)
742 4. **Journal transactions**:
743 * commits (count of transactions that have been written to the journal)
745 5. **Data written to the journal**:
746 * volume (volume of data)
748 6. **Background flush** (MMAPv1):
749 * average ms (average time taken by flushes to execute)
750 * last ms (time taken by the last flush)
752 8. **Read tickets** (WiredTiger):
753 * in use (number of read tickets in use)
754 * available (number of available read tickets remaining)
756 9. **Write tickets** (WiredTiger):
757 * in use (number of write tickets in use)
758 * available (number of available write tickets remaining)
761 * opened (number of cursors currently opened by MongoDB for clients)
762 * timedOut (number of cursors that have timed)
763 * noTimeout (number of open cursors with timeout disabled)
766 * connected (number of clients currently connected to the database server)
767 * unused (number of unused connections available for new clients)
769 12. **Memory usage metrics**:
771 * resident (amount of memory used by the database process)
776 * page faults (number of times MongoDB had to request from disk)
778 14. **Cache metrics** (WiredTiger):
779 * percentage of bytes currently in the cache (amount of space taken by cached data)
780 * percantage of tracked dirty bytes in the cache (amount of space taken by dirty data)
782 15. **Pages evicted from cache** (WiredTiger):
786 16. **Queued requests**:
787 * readers (number of read request currently queued)
788 * writers (number of write request currently queued)
791 * msg (number of message assertions raised)
792 * warning (number of warning assertions raised)
793 * regular (number of regular assertions raised)
794 * user (number of assertions corresponding to errors generated by users)
796 18. **Storage metrics** (one chart for every database)
797 * dataSize (size of all documents + padding in the database)
798 * indexSize (size of all indexes in the database)
799 * storageSize (size of all extents in the database)
801 19. **Documents in the database** (one chart for all databases)
802 * documents (number of objects in the database among all the collections)
804 20. **tcmalloc metrics**
806 * current total thread cache
810 * transfer cache free
813 21. **Commands total/failed rate**
821 22. **Locks metrics** (acquireCount metrics - number of times the lock was acquired in the specified mode)
828 23. **Replica set members state**
832 * window (interval of time between the oldest and the latest entries in the oplog)
834 25. **Replication lag**
835 * member (time when last entry from the oplog was applied for every member)
837 26. **Replication set member heartbeat latency**
838 * member (time when last heartbeat was received from replica set member)
855 If no configuration is given, module will attempt to connect to mongodb daemon on `127.0.0.1:27017` address
862 Module monitors one or more mysql servers
865 * python library [MySQLdb](https://github.com/PyMySQL/mysqlclient-python) (faster) or [PyMySQL](https://github.com/PyMySQL/PyMySQL) (slower)
867 It will produce following charts (if data is available):
869 1. **Bandwidth** in kbps
873 2. **Queries** in queries/sec
878 3. **Operations** in operations/sec
895 4. **Table Locks** in locks/sec
899 5. **Select Issues** in issues/sec
906 6. **Sort Issues** in issues/sec
913 You can provide, per server, the following:
915 1. username which have access to database (deafults to 'root')
916 2. password (defaults to none)
917 3. mysql my.cnf configuration file
918 4. mysql socket (optional)
919 5. mysql host (ip or hostname)
920 6. mysql port (defaults to 3306)
922 Here is an example for 3 servers:
930 'my.cnf' : '/etc/mysql/my.cnf'
935 pass : 'blablablabla'
936 socket : '/var/run/mysqld/mysqld.sock'
947 If no configuration is given, module will attempt to connect to mysql server via unix socket at `/var/run/mysqld/mysqld.sock` without password and with username `root`
953 This module will monitor one or more nginx servers depending on configuration. Servers can be either local or remote.
956 * nginx with configured 'ngx_http_stub_status_module'
957 * 'location /stub_status'
959 Example nginx configuration can be found in 'python.d/nginx.conf'
961 It produces following charts:
963 1. **Active Connections**
966 2. **Requests** in requests/s
969 3. **Active Connections by Status**
974 4. **Connections Rate** in connections/s
980 Needs only `url` to server's `stub_status`
982 Here is an example for local server:
989 url : 'http://localhost/stub_status'
993 Without configuration, module attempts to connect to `http://localhost/stub_status`
999 Module uses the `nsd-control stats_noreset` command to provide `nsd` statistics.
1002 * Version of `nsd` must be 4.0+
1003 * Netdata must have permissions to run `nsd-control stats_noreset`
1048 Configuration is not needed.
1054 Module monitor openvpn-status log file.
1058 * If you are running multiple OpenVPN instances out of the same directory, MAKE SURE TO EDIT DIRECTIVES which create output files
1059 so that multiple instances do not overwrite each other's output files.
1061 * Make sure NETDATA USER CAN READ openvpn-status.log
1063 * Update_every interval MUST MATCH interval on which OpenVPN writes operational status to log file.
1067 1. **Users** OpenVPN active users
1070 2. **Traffic** OpenVPN overall bandwidth usage in kilobit/s
1080 log_path : '/var/log/openvpn-status.log'
1087 This module will monitor one or more php-fpm instances depending on configuration.
1090 * php-fpm with enabled `status` page
1091 * access to `status` page via web server
1093 It produces following charts:
1095 1. **Active Connections**
1100 2. **Requests** in requests/s
1109 Needs only `url` to server's `status`
1111 Here is an example for local instance:
1118 url : 'http://localhost/status'
1122 Without configuration, module attempts to connect to `http://localhost/status`
1128 Simple module executing `postfix -p` to grab postfix queue.
1130 It produces only two charts:
1132 1. **Postfix Queue Emails**
1135 2. **Postfix Queue Emails Size** in KB
1138 Configuration is not needed.
1144 Module monitors one or more postgres servers.
1148 * `python-psycopg2` package. You have to install to manually.
1150 Following charts are drawn:
1152 1. **Database size** MB
1155 2. **Current Backend Processes** processes
1158 3. **Write-Ahead Logging Statistics** files/s
1163 4. **Checkpoints** writes/s
1167 5. **Current connections to db** count
1170 6. **Tuples returned from db** tuples/s
1174 7. **Tuple reads from db** reads/s
1178 8. **Transactions on db** transactions/s
1182 9. **Tuples written to db** writes/s
1188 10. **Locks on db** count per type
1197 database : 'postgres'
1202 database : 'postgres'
1207 When no configuration file is found, module tries to connect to TCP/IP socket: `localhost:5432`.
1213 Get INFO data from redis instance.
1215 Following charts are drawn:
1217 1. **Operations** per second
1220 2. **Hit rate** in percent
1223 3. **Memory utilization** in kilobytes
1227 4. **Database keys**
1228 * lines are creates dynamically based on how many databases are there
1242 socket : '/var/lib/redis/redis.sock'
1250 When no configuration file is found, module tries to connect to TCP/IP socket: `localhost:6379`.
1256 System sensors information.
1258 Charts are created dynamically.
1262 For detailed configuration information please read [`sensors.conf`](https://github.com/firehol/netdata/blob/master/conf.d/python.d/sensors.conf) file.
1268 This module will monitor one or more squid instances depending on configuration.
1270 It produces following charts:
1272 1. **Client Bandwidth** in kilobits/s
1277 2. **Client Requests** in requests/s
1282 3. **Server Bandwidth** in kilobits/s
1286 4. **Server Requests** in requests/s
1296 request : 'cache_object://localhost:3128/counters'
1301 Without any configuration module will try to autodetect where squid presents its `counters` data
1307 Module monitor `smartd` log files to collect HDD/SSD S.M.A.R.T attributes.
1309 It produces following charts (you can add additional attributes in the module configuration file):
1311 1. **Read Error Rate** attribute 1
1313 2. **Start/Stop Count** attribute 4
1315 3. **Reallocated Sectors Count** attribute 5
1317 4. **Seek Error Rate** attribute 7
1319 5. **Power-On Hours Count** attribute 9
1321 6. **Power Cycle Count** attribute 12
1323 7. **Load/Unload Cycles** attribute 193
1325 8. **Temperature** attribute 194
1327 9. **Current Pending Sectors** attribute 197
1329 10. **Off-Line Uncorrectable** attribute 198
1331 11. **Write Error Rate** attribute 200
1337 log_path : '/var/log/smartd/'
1340 If no configuration is given, module will attempt to read log files in /var/log/smartd/ directory.
1346 Present tomcat containers memory utilization.
1350 1. **Requests** per second
1353 2. **Volume** in KB/s
1360 4. **JVM Free Memory** in MB
1368 url : 'http://127.0.0.1:8080/manager/status?XML=true'
1369 user : 'tomcat_username'
1370 pass : 'secret_tomcat_password'
1373 Without configuration, module attempts to connect to `http://localhost:8080/manager/status?XML=true`, without any credentials.
1374 So it will probably fail.
1380 Module uses the `varnishstat` command to provide varnish cache statistics.
1384 1. **Client metrics**
1387 * good client requests received
1389 2. **All history hit rate ratio**
1390 * cache hits in percent
1391 * cache miss in percent
1392 * cache hits for pass percent
1394 3. **Curent poll hit rate ratio**
1395 * cache hits in percent
1396 * cache miss in percent
1397 * cache hits for pass percent
1399 4. **Thread-related metrics** (only for varnish version 4+)
1400 * total number of threads
1402 * threads creation failed
1404 * length os session queue
1405 * sessions queued for thread
1407 5. **Backend health**
1408 * backend conn. success
1409 * backend conn. not attempted
1410 * backend conn. too many
1411 * backend conn. failures
1412 * backend conn. reuses
1413 * backend conn. recycles
1414 * backend conn. retry
1415 * backend requests made
1418 * memory available in megabytes
1419 * memory allocated in megabytes
1421 7. **Problems summary**
1423 * session accept failures
1424 * session pipe overflow
1425 * backend conn. not attempted
1426 * fetch failed (all causes)
1427 * backend conn. too many
1430 * length of session queue
1431 * HTTP header overflows
1433 * ESI parse warnings
1436 * varnish instance uptime in seconds
1440 No configuration is needed.
1446 Tails the apache/nginx/lighttpd/gunicorn log files to collect real-time web-server statistics.
1448 It produces following charts:
1450 1. **Response by type** requests/s
1451 * success (1xx, 2xx, 304)
1453 * redirect (3xx except 304)
1455 * other (all other responses)
1457 2. **Response by code family** requests/s
1458 * 1xx (informational)
1462 * 5xx (internal server errors)
1463 * other (non-standart responses)
1464 * unmatched (the lines in the log file that are not matched)
1466 3. **Detailed Response Codes** requests/s (number of responses for each response code family individually)
1468 4. **Bandwidth** KB/s
1469 * received (bandwidth of requests)
1470 * send (bandwidth of responses)
1472 5. **Timings** ms (request processing time)
1473 * min (bandwidth of requests)
1474 * max (bandwidth of responses)
1475 * average (bandwidth of responses)
1477 6. **Request per url** requests/s (configured by user)
1479 7. **Http Methods** requests/s (requests per http method)
1481 8. **Http Versions** requests/s (requests per http version)
1483 9. **IP protocols** requests/s (requests per ip protocol version)
1485 10. **Curent Poll Unique Client IPs** unique ips/s (unique client IPs per data collection iteration)
1487 11. **All Time Unique Client IPs** unique ips/s (unique client IPs since the last restart of netdata)
1495 path : '/var/log/nginx/access.log'
1499 path : '/var/log/apache/other_vhosts_access.log'
1502 observium : 'observium'
1505 Module has preconfigured jobs for nginx, apache and gunicorn on various distros.