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 shows current cpu frequency by looking at appropriate files in /sys/devices
133 Processor which presents data scaling frequency data
135 It produces one chart with multiple lines (one line per core).
142 sys_dir: "/sys/devices"
145 If no configuration is given, module will search for `scaling_cur_freq` files in `/sys/devices` directory.
146 Directory is also prefixed with `NETDATA_HOST_PREFIX` if specified.
152 This module provides statistics information from dovecot server.
153 Statistics are taken from dovecot socket by executing `EXPORT global` command.
154 More information about dovecot stats can be found on [project wiki page.](http://wiki2.dovecot.org/Statistics)
157 Dovecot unix socket with R/W permissions for user netdata or dovecot with configured TCP/IP socket.
159 Module gives information with following charts:
167 3. **commands** - number of IMAP commands
174 5. **Context Switches**
178 6. **disk** in bytes/s
182 7. **bytes** in bytes/s
186 8. **number of syscalls** in syscalls/s
190 9. **lookups** - number of lookups per second
194 10. **hits** - number of cache hits
197 11. **attempts** - authorization attemts
201 12. **cache** - cached authorization hits
217 socket : '/var/run/dovecot/stats'
220 If no configuration is given, module will attempt to connect to dovecot using unix socket localized in `/var/run/dovecot/stats`
226 Simple module executing `exim -bpc` to grab exim queue.
227 This command can take a lot of time to finish its execution thus it is not recommended to run it every second.
229 It produces only one chart:
231 1. **Exim Queue Emails**
234 Configuration is not needed.
240 Module monitor fail2ban log file to show all bans for all active jails
243 * fail2ban.log file MUST BE readable by netdata (A good idea is to add **create 0640 root netdata** to fail2ban conf at logrotate.d)
245 It produces one chart with multiple lines (one line per jail)
253 log_path: '/var/log/fail2ban.log'
254 conf_path: '/etc/fail2ban/jail.local'
255 exclude: 'dropbear apache'
257 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`.
258 If conf file is not found default jail is `ssh`.
264 Uses the `radclient` command to provide freeradius statistics. It is not recommended to run it every second.
268 1. **Authentication counters:**
271 * auth-dropped-requests
272 * auth-duplicate-requests
273 * auth-invalid-requests
274 * auth-malformed-requests
277 2. **Accounting counters:** [optional]
278 * accounting-requests
279 * accounting-responses
280 * acct-dropped-requests
281 * acct-duplicate-requests
282 * acct-invalid-requests
283 * acct-malformed-requests
286 3. **Proxy authentication counters:** [optional]
287 * proxy-access-accepts
288 * proxy-access-rejects
289 * proxy-auth-dropped-requests
290 * proxy-auth-duplicate-requests
291 * proxy-auth-invalid-requests
292 * proxy-auth-malformed-requests
293 * proxy-auth-unknown-types
295 4. **Proxy accounting counters:** [optional]
296 * proxy-accounting-requests
297 * proxy-accounting-responses
298 * proxy-acct-dropped-requests
299 * proxy-acct-duplicate-requests
300 * proxy-acct-invalid-requests
301 * proxy-acct-malformed-requests
302 * proxy-acct-unknown-typesa
313 secret : 'adminsecret'
314 acct : False # Freeradius accounting statistics.
315 proxy_auth : False # Freeradius proxy authentication statistics.
316 proxy_acct : False # Freeradius proxy accounting statistics.
319 **Freeradius server configuration:**
321 The configuration for the status server is automatically created in the sites-available directory.
322 By default, server is enabled and can be queried from every client.
323 FreeRADIUS will only respond to status-server messages, if the status-server virtual server has been enabled.
325 To do this, create a link from the sites-enabled directory to the status file in the sites-available directory:
327 * ln -s ../sites-available/status status
329 and restart/reload your FREERADIUS server.
335 Module monitors disk temperatures from one or more hddtemp daemons.
338 Running `hddtemp` in daemonized mode with access on tcp port
340 It produces one chart **Temperature** with dynamic number of dimensions (one per disk)
352 If no configuration is given, module will attempt to connect to hddtemp daemon on `127.0.0.1:7634` address
358 Module monitors [IPFS](https://ipfs.io) basic information.
360 1. **Bandwidth** in kbits/s
369 Only url to IPFS server is needed.
376 url : 'http://localhost:5001'
383 Memcached monitoring module. Data grabbed from [stats interface](https://github.com/memcached/memcached/wiki/Commands#stats).
385 1. **Network** in kilobytes/s
389 2. **Connections** per second
394 3. **Items** in cluster
398 4. **Evicted and Reclaimed** items
402 5. **GET** requests/s
406 6. **GET rate** rate in requests/s
409 7. **SET rate** rate in requests/s
412 8. **DELETE** requests/s
416 9. **CAS** requests/s
421 10. **Increment** requests/s
425 11. **Decrement** requests/s
429 12. **Touch** requests/s
433 13. **Touch rate** rate in requests/s
447 If no configuration is given, module will attempt to connect to memcached instance on `127.0.0.1:11211` address.
453 Module monitors one or more mysql servers
456 * python library [MySQLdb](https://github.com/PyMySQL/mysqlclient-python) (faster) or [PyMySQL](https://github.com/PyMySQL/PyMySQL) (slower)
458 It will produce following charts (if data is available):
460 1. **Bandwidth** in kbps
464 2. **Queries** in queries/sec
469 3. **Operations** in operations/sec
486 4. **Table Locks** in locks/sec
490 5. **Select Issues** in issues/sec
497 6. **Sort Issues** in issues/sec
504 You can provide, per server, the following:
506 1. username which have access to database (deafults to 'root')
507 2. password (defaults to none)
508 3. mysql my.cnf configuration file
509 4. mysql socket (optional)
510 5. mysql host (ip or hostname)
511 6. mysql port (defaults to 3306)
513 Here is an example for 3 servers:
521 'my.cnf' : '/etc/mysql/my.cnf'
526 pass : 'blablablabla'
527 socket : '/var/run/mysqld/mysqld.sock'
538 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`
544 This module will monitor one or more nginx servers depending on configuration. Servers can be either local or remote.
547 * nginx with configured 'ngx_http_stub_status_module'
548 * 'location /stub_status'
550 Example nginx configuration can be found in 'python.d/nginx.conf'
552 It produces following charts:
554 1. **Active Connections**
557 2. **Requests** in requests/s
560 3. **Active Connections by Status**
565 4. **Connections Rate** in connections/s
571 Needs only `url` to server's `stub_status`
573 Here is an example for local server:
580 url : 'http://localhost/stub_status'
584 Without configuration, module attempts to connect to `http://localhost/stub_status`
590 Module monitors nginx access log and produces only one chart:
592 1. **nginx status codes** in requests/s
600 Sample for two vhosts:
604 path: '/var/log/nginx/access-A.log'
608 path: '/var/log/nginx/access-B.log'
611 When no configuration file is found, module tries to parse `/var/log/nginx/access.log` file.
617 Module monitor openvpn-status log file.
621 * If you are running multiple OpenVPN instances out of the same directory, MAKE SURE TO EDIT DIRECTIVES which create output files
622 so that multiple instances do not overwrite each other's output files.
624 * Make sure NETDATA USER CAN READ openvpn-status.log
626 * Update_every interval MUST MATCH interval on which OpenVPN writes operational status to log file.
630 **Users** OpenVPN active users
633 **Traffic** OpenVPN overall bandwidth usage in kilobit/s
643 log_path : '/var/log/openvpn-status.log'
650 This module will monitor one or more php-fpm instances depending on configuration.
653 * php-fpm with enabled `status` page
654 * access to `status` page via web server
656 It produces following charts:
658 1. **Active Connections**
663 2. **Requests** in requests/s
672 Needs only `url` to server's `status`
674 Here is an example for local instance:
681 url : 'http://localhost/status'
685 Without configuration, module attempts to connect to `http://localhost/status`
691 Simple module executing `postfix -p` to grab postfix queue.
693 It produces only two charts:
695 1. **Postfix Queue Emails**
698 2. **Postfix Queue Emails Size** in KB
701 Configuration is not needed.
707 Get INFO data from redis instance.
709 Following charts are drawn:
711 1. **Operations** per second
714 2. **Hit rate** in percent
717 3. **Memory utilization** in kilobytes
722 * lines are creates dynamically based on how many databases are there
736 socket : '/var/lib/redis/redis.sock'
744 When no configuration file is found, module tries to connect to TCP/IP socket: `localhost:6379`.
750 System sensors information.
752 Charts are created dynamically.
756 For detailed configuration information please read [`sensors.conf`](https://github.com/firehol/netdata/blob/master/conf.d/python.d/sensors.conf) file.
762 This module will monitor one or more squid instances depending on configuration.
764 It produces following charts:
766 1. **Client Bandwidth** in kilobits/s
771 2. **Client Requests** in requests/s
776 3. **Server Bandwidth** in kilobits/s
780 4. **Server Requests** in requests/s
790 request : 'cache_object://localhost:3128/counters'
795 Without any configuration module will try to autodetect where squid presents its `counters` data
801 Present tomcat containers memory utilization.
805 1. **Requests** per second
808 2. **Volume** in KB/s
815 4. **JVM Free Memory** in MB
823 url : 'http://127.0.0.1:8080/manager/status?XML=true'
824 user : 'tomcat_username'
825 pass : 'secret_tomcat_password'
828 Without configuration, module attempts to connect to `http://localhost:8080/manager/status?XML=true`, without any credentials.
829 So it will probably fail.