Merge branch 'master' into connectivity
[collectd.git] / README
1  collectd - System information collection daemon
2 =================================================
3 https://collectd.org/
4
5 About
6 -----
7
8   collectd is a small daemon which collects system information periodically
9   and provides mechanisms to store and monitor the values in a variety of
10   ways.
11
12
13 Features
14 --------
15
16   * collectd is able to collect the following data:
17
18     - apache
19       Apache server utilization: Number of bytes transferred, number of
20       requests handled and detailed scoreboard statistics
21
22     - apcups
23       APC UPS Daemon: UPS charge, load, input/output/battery voltage, etc.
24
25     - apple_sensors
26       Sensors in Macs running Mac OS X / Darwin: Temperature, fan speed and
27       voltage sensors.
28
29     - aquaero
30       Various sensors in the Aquaero 5 water cooling board made by Aquacomputer.
31
32     - ascent
33       Statistics about Ascent, a free server for the game `World of Warcraft'.
34
35     - barometer
36       Reads absolute barometric pressure, air pressure reduced to sea level and
37       temperature.  Supported sensors are MPL115A2 and MPL3115 from Freescale
38       and BMP085 from Bosch.
39
40     - battery
41       Batterycharge, -current and voltage of ACPI and PMU based laptop
42       batteries.
43
44     - bind
45       Name server and resolver statistics from the `statistics-channel'
46       interface of BIND 9.5, 9,6 and later.
47
48     - ceph
49       Statistics from the Ceph distributed storage system.
50
51     - cgroups
52       CPU accounting information for process groups under Linux.
53
54     - chrony
55       Chrony daemon statistics: Local clock drift, offset to peers, etc.
56
57     - connectivity
58       Event-based interface status.
59
60     - conntrack
61       Number of nf_conntrack entries.
62
63     - contextswitch
64       Number of context switches done by the operating system.
65
66     - cpu
67       CPU utilization: Time spent in the system, user, nice, idle, and related
68       states.
69
70     - cpufreq
71       CPU frequency (For laptops with speed step or a similar technology)
72
73     - cpusleep
74       CPU sleep: Time spent in suspend (For mobile devices which enter suspend automatically)
75
76     - curl
77       Parse statistics from websites using regular expressions.
78
79     - curl_json
80       Retrieves JSON data via cURL and parses it according to user
81       configuration.
82
83     - curl_xml
84       Retrieves XML data via cURL and parses it according to user
85       configuration.
86
87     - dbi
88       Executes SQL statements on various databases and interprets the returned
89       data.
90
91     - df
92       Mountpoint usage (Basically the values `df(1)' delivers)
93
94     - disk
95       Disk utilization: Sectors read/written, number of read/write actions,
96       average time an IO-operation took to complete.
97
98     - dns
99       DNS traffic: Query types, response codes, opcodes and traffic/octets
100       transferred.
101
102     - dpdkstat
103       Collect DPDK interface statistics.
104       See docs/BUILD.dpdkstat.md for detailed build instructions.
105
106       This plugin should be compiled with compiler defenses enabled, for
107       example -fstack-protector.
108
109     - drbd
110       Collect individual drbd resource statistics.
111
112     - email
113       Email statistics: Count, traffic, spam scores and checks.
114       See collectd-email(5).
115
116     - entropy
117       Amount of entropy available to the system.
118
119     - ethstat
120       Network interface card statistics.
121
122     - exec
123       Values gathered by a custom program or script.
124       See collectd-exec(5).
125
126     - fhcount
127       File handles statistics.
128
129     - filecount
130       Count the number of files in directories.
131
132     - fscache
133       Linux file-system based caching framework statistics.
134
135     - gmond
136       Receive multicast traffic from Ganglia instances.
137
138     - gps
139       Monitor gps related data through gpsd.
140
141     - hddtemp
142       Hard disk temperatures using hddtempd.
143
144     - hugepages
145       Report the number of used and free hugepages. More info on
146       hugepages can be found here:
147       https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt.
148
149       This plugin should be compiled with compiler defenses enabled, for
150       example -fstack-protector.
151
152     - intel_pmu
153       The intel_pmu plugin reads performance counters provided by the Linux
154       kernel perf interface. The plugin uses jevents library to resolve named
155       events to perf events and access perf interface.
156
157     - intel_rdt
158       The intel_rdt plugin collects information provided by monitoring features
159       of Intel Resource Director Technology (Intel(R) RDT) like Cache Monitoring
160       Technology (CMT), Memory Bandwidth Monitoring (MBM). These features
161       provide information about utilization of shared resources like last level
162       cache occupancy, local memory bandwidth usage, remote memory bandwidth
163       usage, instructions per clock.
164       <https://01.org/packet-processing/cache-monitoring-technology-memory-bandwidth-monitoring-cache-allocation-technology-code-and-data>
165
166     - interface
167       Interface traffic: Number of octets, packets and errors for each
168       interface.
169
170     - ipc
171       IPC counters: semaphores used, number of allocated segments in shared
172       memory and more.
173
174     - ipmi
175       IPMI (Intelligent Platform Management Interface) sensors information.
176
177     - iptables
178       Iptables' counters: Number of bytes that were matched by a certain
179       iptables rule.
180
181     - ipvs
182       IPVS connection statistics (number of connections, octets and packets
183       for each service and destination).
184       See http://www.linuxvirtualserver.org/software/index.html.
185
186     - irq
187       IRQ counters: Frequency in which certain interrupts occur.
188
189     - java
190       Integrates a `Java Virtual Machine' (JVM) to execute plugins in Java
191       bytecode.
192       See docs/BUILD.java.md for detailed build instructions.
193
194     - load
195       System load average over the last 1, 5 and 15 minutes.
196
197     - lpar
198       Detailed CPU statistics of the “Logical Partitions” virtualization
199       technique built into IBM's POWER processors.
200
201     - lua
202       The Lua plugin implements a Lua interpreter into collectd. This
203       makes it possible to write plugins in Lua which are executed by
204       collectd without the need to start a heavy interpreter every interval.
205       See collectd-lua(5) for details.
206
207     - lvm
208       Size of “Logical Volumes” (LV) and “Volume Groups” (VG) of Linux'
209       “Logical Volume Manager” (LVM).
210
211     - madwifi
212       Queries very detailed usage statistics from wireless LAN adapters and
213       interfaces that use the Atheros chipset and the MadWifi driver.
214
215     - mbmon
216       Motherboard sensors: temperature, fan speed and voltage information,
217       using mbmon(1).
218
219     - mcelog
220       Monitor machine check exceptions (hardware errors detected by hardware
221       and reported to software) reported by mcelog and generate appropriate
222       notifications when machine check exceptions are detected.
223
224     - md
225       Linux software-RAID device information (number of active, failed, spare
226       and missing disks).
227
228     - memcachec
229       Query and parse data from a memcache daemon (memcached).
230
231     - memcached
232       Statistics of the memcached distributed caching system.
233       <http://www.danga.com/memcached/>
234
235     - memory
236       Memory utilization: Memory occupied by running processes, page cache,
237       buffer cache and free.
238
239     - mic
240       Collects CPU usage, memory usage, temperatures and power consumption from
241       Intel Many Integrated Core (MIC) CPUs.
242
243     - modbus
244       Reads values from Modbus/TCP enabled devices. Supports reading values
245       from multiple "slaves" so gateway devices can be used.
246
247     - multimeter
248       Information provided by serial multimeters, such as the `Metex
249       M-4650CR'.
250
251     - mysql
252       MySQL server statistics: Commands issued, handlers triggered, thread
253       usage, query cache utilization and traffic/octets sent and received.
254
255     - netapp
256       Plugin to query performance values from a NetApp storage system using the
257       “Manage ONTAP” SDK provided by NetApp.
258
259     - netlink
260       Very detailed Linux network interface and routing statistics. You can get
261       (detailed) information on interfaces, qdiscs, classes, and, if you can
262       make use of it, filters.
263
264     - network
265       Receive values that were collected by other hosts. Large setups will
266       want to collect the data on one dedicated machine, and this is the
267       plugin of choice for that.
268
269     - nfs
270       NFS Procedures: Which NFS command were called how often.
271
272     - nginx
273       Collects statistics from `nginx' (speak: engine X), a HTTP and mail
274       server/proxy.
275
276     - ntpd
277       NTP daemon statistics: Local clock drift, offset to peers, etc.
278
279     - numa
280       Information about Non-Uniform Memory Access (NUMA).
281
282     - nut
283       Network UPS tools: UPS current, voltage, power, charge, utilisation,
284       temperature, etc. See upsd(8).
285
286     - olsrd
287       Queries routing information from the “Optimized Link State Routing”
288       daemon.
289
290     - onewire (EXPERIMENTAL!)
291       Read onewire sensors using the owcapu library of the owfs project.
292       Please read in collectd.conf(5) why this plugin is experimental.
293
294     - openldap
295       Read monitoring information from OpenLDAP's cn=Monitor subtree.
296
297     - openvpn
298       RX and TX of each client in openvpn-status.log (status-version 2).
299       <http://openvpn.net/index.php/documentation/howto.html>
300
301     - oracle
302       Query data from an Oracle database.
303
304     - ovs_events
305       The plugin monitors the link status of Open vSwitch (OVS) connected
306       interfaces, dispatches the values to collectd and sends the notification
307       whenever the link state change occurs in the OVS database. It requires
308       YAJL library to be installed.
309       Detailed instructions for installing and setting up Open vSwitch, see
310       OVS documentation.
311       <http://openvswitch.org/support/dist-docs/INSTALL.rst.html>
312
313     - ovs_stats
314       The plugin collects the statistics of OVS connected bridges and
315       interfaces. It requires YAJL library to be installed.
316       Detailed instructions for installing and setting up Open vSwitch, see
317       OVS documentation.
318       <http://openvswitch.org/support/dist-docs/INSTALL.rst.html>
319
320     - perl
321       The perl plugin implements a Perl-interpreter into collectd. You can
322       write your own plugins in Perl and return arbitrary values using this
323       API. See collectd-perl(5).
324
325     - pf
326       Query statistics from BSD's packet filter "pf".
327
328     - pinba
329       Receive and dispatch timing values from Pinba, a profiling extension for
330       PHP.
331
332     - ping
333       Network latency: Time to reach the default gateway or another given
334       host.
335
336     - postgresql
337       PostgreSQL database statistics: active server connections, transaction
338       numbers, block IO, table row manipulations.
339
340     - powerdns
341       PowerDNS name server statistics.
342
343     - processes
344       Process counts: Number of running, sleeping, zombie, ... processes.
345
346     - protocols
347       Counts various aspects of network protocols such as IP, TCP, UDP, etc.
348
349     - python
350       The python plugin implements a Python interpreter into collectd. This
351       makes it possible to write plugins in Python which are executed by
352       collectd without the need to start a heavy interpreter every interval.
353       See collectd-python(5) for details.
354
355     - redis
356       The redis plugin gathers information from a Redis server, including:
357       uptime, used memory, total connections etc.
358
359     - routeros
360       Query interface and wireless registration statistics from RouterOS.
361
362     - rrdcached
363       RRDtool caching daemon (RRDcacheD) statistics.
364
365     - sensors
366       System sensors, accessed using lm_sensors: Voltages, temperatures and
367       fan rotation speeds.
368
369     - serial
370       RX and TX of serial interfaces. Linux only; needs root privileges.
371
372     - sigrok
373       Uses libsigrok as a backend, allowing any sigrok-supported device
374       to have its measurements fed to collectd. This includes multimeters,
375       sound level meters, thermometers, and much more.
376
377     - smart
378       Collect SMART statistics, notably load cycle count, temperature
379       and bad sectors.
380
381     - snmp
382       Read values from SNMP (Simple Network Management Protocol) enabled
383       network devices such as switches, routers, thermometers, rack monitoring
384       servers, etc. See collectd-snmp(5).
385
386     - statsd
387       Acts as a StatsD server, reading values sent over the network from StatsD
388       clients and calculating rates and other aggregates out of these values.
389
390     - swap
391       Pages swapped out onto hard disk or whatever is called `swap' by the OS..
392
393     - table
394       Parse table-like structured files.
395
396     - tail
397       Follows (tails) log files, parses them by lines and submits matched
398       values.
399
400     - tail_csv
401       Follows (tails) files in CSV format, parses each line and submits
402       extracted values.
403
404     - tape
405       Bytes and operations read and written on tape devices. Solaris only.
406
407     - tcpconns
408       Number of TCP connections to specific local and remote ports.
409
410     - teamspeak2
411       TeamSpeak2 server statistics.
412
413     - ted
414       Plugin to read values from `The Energy Detective' (TED).
415
416     - thermal
417       Linux ACPI thermal zone information.
418
419     - tokyotyrant
420       Reads the number of records and file size from a running Tokyo Tyrant
421       server.
422
423     - turbostat
424       Reads CPU frequency and C-state residency on modern Intel
425       turbo-capable processors.
426
427     - uptime
428       System uptime statistics.
429
430     - users
431       Users currently logged in.
432
433     - varnish
434       Various statistics from Varnish, an HTTP accelerator.
435
436     - virt
437       CPU, memory, disk and network I/O statistics from virtual machines.
438
439     - vmem
440       Virtual memory statistics, e.g. the number of page-ins/-outs or the
441       number of pagefaults.
442
443     - vserver
444       System resources used by Linux VServers.
445       See <http://linux-vserver.org/>.
446
447     - wireless
448       Link quality of wireless cards. Linux only.
449
450     - xencpu
451       XEN Hypervisor CPU stats.
452
453     - xmms
454       Bitrate and frequency of music played with XMMS.
455
456     - zfs_arc
457       Statistics for ZFS' “Adaptive Replacement Cache” (ARC).
458
459     - zone
460       Measures the percentage of cpu load per container (zone) under Solaris 10
461       and higher
462
463     - zookeeper
464       Read data from Zookeeper's MNTR command.
465
466   * Output can be written or sent to various destinations by the following
467     plugins:
468
469     - amqp
470       Sends JSON-encoded data to an Advanced Message Queuing Protocol (AMQP)
471       0.9.1 server, such as RabbitMQ.
472
473     - amqp1
474       Sends JSON-encoded data to an Advanced Message Queuing Protocol (AMQP)
475       1.0 server, such as Qpid Dispatch Router or Apache Artemis Broker.
476
477     - csv
478       Write to comma separated values (CSV) files. This needs lots of
479       diskspace but is extremely portable and can be analysed with almost
480       every program that can analyse anything. Even Microsoft's Excel..
481
482     - grpc
483       Send and receive values over the network using the gRPC framework.
484
485     - lua
486       It's possible to implement write plugins in Lua using the Lua
487       plugin. See collectd-lua(5) for details.
488
489     - mqtt
490       Publishes and subscribes to MQTT topics.
491
492     - network
493       Send the data to a remote host to save the data somehow. This is useful
494       for large setups where the data should be saved by a dedicated machine.
495
496     - perl
497       Of course the values are propagated to plugins written in Perl, too, so
498       you can easily do weird stuff with the plugins we didn't dare think of
499       ;) See collectd-perl(5).
500
501     - python
502       It's possible to implement write plugins in Python using the python
503       plugin. See collectd-python(5) for details.
504
505     - rrdcached
506       Output to round-robin-database (RRD) files using the RRDtool caching
507       daemon (RRDcacheD) - see rrdcached(1). That daemon provides a general
508       implementation of the caching done by the `rrdtool' plugin.
509
510     - rrdtool
511       Output to round-robin-database (RRD) files using librrd. See rrdtool(1).
512       This is likely the most popular destination for such values. Since
513       updates to RRD-files are somewhat expensive this plugin can cache
514       updates to the files and write a bunch of updates at once, which lessens
515       system load a lot.
516
517     - snmp_agent
518       Receives and handles queries from SNMP master agent and returns the data
519       collected by read plugins. Handles requests only for OIDs specified in
520       configuration file. To handle SNMP queries the plugin gets data from
521       collectd and translates requested values from collectd's internal format
522       to SNMP format.
523
524     - unixsock
525       One can query the values from the unixsock plugin whenever they're
526       needed. Please read collectd-unixsock(5) for a description on how that's
527       done.
528
529     - write_graphite
530       Sends data to Carbon, the storage layer of Graphite using TCP or UDP. It
531       can be configured to avoid logging send errors (especially useful when
532       using UDP).
533
534     - write_http
535       Sends the values collected by collectd to a web-server using HTTP POST
536       requests. The transmitted data is either in a form understood by the
537       Exec plugin or formatted in JSON.
538
539     - write_kafka
540       Sends data to Apache Kafka, a distributed queue.
541
542     - write_log
543       Writes data to the log
544
545     - write_mongodb
546       Sends data to MongoDB, a NoSQL database.
547
548     - write_prometheus
549       Publish values using an embedded HTTP server, in a format compatible
550       with Prometheus' collectd_exporter.
551
552     - write_redis
553       Sends the values to a Redis key-value database server.
554
555     - write_riemann
556       Sends data to Riemann, a stream processing and monitoring system.
557
558     - write_sensu
559       Sends data to Sensu, a stream processing and monitoring system, via the
560       Sensu client local TCP socket.
561
562     - write_tsdb
563       Sends data OpenTSDB, a scalable no master, no shared state time series
564       database.
565
566   * Logging is, as everything in collectd, provided by plugins. The following
567     plugins keep us informed about what's going on:
568
569     - logfile
570       Writes log messages to a file or STDOUT/STDERR.
571
572     - perl
573       Log messages are propagated to plugins written in Perl as well.
574       See collectd-perl(5).
575
576     - python
577       It's possible to implement log plugins in Python using the python plugin.
578       See collectd-python(5) for details.
579
580     - syslog
581       Logs to the standard UNIX logging mechanism, syslog.
582
583     - log_logstash
584       Writes log messages formatted as logstash JSON events.
585
586   * Notifications can be handled by the following plugins:
587
588     - notify_desktop
589       Send a desktop notification to a notification daemon, as defined in
590       the Desktop Notification Specification. To actually display the
591       notifications, notification-daemon is required.
592       See http://www.galago-project.org/specs/notification/.
593
594     - notify_email
595       Send an E-mail with the notification message to the configured
596       recipients.
597
598     - notify_nagios
599       Submit notifications as passive check results to a local nagios instance.
600
601     - exec
602       Execute a program or script to handle the notification.
603       See collectd-exec(5).
604
605     - logfile
606       Writes the notification message to a file or STDOUT/STDERR.
607
608     - network
609       Send the notification to a remote host to handle it somehow.
610
611     - perl
612       Notifications are propagated to plugins written in Perl as well.
613       See collectd-perl(5).
614
615     - python
616       It's possible to implement notification plugins in Python using the
617       python plugin. See collectd-python(5) for details.
618
619   * Value processing can be controlled using the "filter chain" infrastructure
620     and "matches" and "targets". The following plugins are available:
621
622     - match_empty_counter
623       Match counter values which are currently zero.
624
625     - match_hashed
626       Match values using a hash function of the hostname.
627
628     - match_regex
629       Match values by their identifier based on regular expressions.
630
631     - match_timediff
632       Match values with an invalid timestamp.
633
634     - match_value
635       Select values by their data sources' values.
636
637     - target_notification
638       Create and dispatch a notification.
639
640     - target_replace
641       Replace parts of an identifier using regular expressions.
642
643     - target_scale
644       Scale (multiply) values by an arbitrary value.
645
646     - target_set
647       Set (overwrite) entire parts of an identifier.
648
649   * Miscellaneous plugins:
650
651     - aggregation
652       Selects multiple value lists based on patterns or regular expressions
653       and creates new aggregated values lists from those.
654
655     - threshold
656       Checks values against configured thresholds and creates notifications if
657       values are out of bounds. See collectd-threshold(5) for details.
658
659     - uuid
660       Sets the hostname to a unique identifier. This is meant for setups
661       where each client may migrate to another physical host, possibly going
662       through one or more name changes in the process.
663
664   * Performance: Since collectd is running as a daemon it doesn't spend much
665     time starting up again and again. With the exception of the exec plugin no
666     processes are forked. Caching in output plugins, such as the rrdtool and
667     network plugins, makes sure your resources are used efficiently. Also,
668     since collectd is programmed multithreaded it benefits from hyper-threading
669     and multicore processors and makes sure that the daemon isn't idle if only
670     one plugin waits for an IO-operation to complete.
671
672   * Once set up, hardly any maintenance is necessary. Setup is kept as easy
673     as possible and the default values should be okay for most users.
674
675
676 Operation
677 ---------
678
679   * collectd's configuration file can be found at `sysconfdir'/collectd.conf.
680     Run `collectd -h' for a list of built-in defaults. See `collectd.conf(5)'
681     for a list of options and a syntax description.
682
683   * When the `csv' or `rrdtool' plugins are loaded they'll write the values to
684     files. The usual place for these files is beneath `/var/lib/collectd'.
685
686   * When using some of the plugins, collectd needs to run as user root, since
687     only root can do certain things, such as craft ICMP packages needed to ping
688     other hosts. collectd should NOT be installed setuid root since it can be
689     used to overwrite valuable files!
690
691   * Sample scripts to generate graphs reside in `contrib/' in the source
692     package or somewhere near `/usr/share/doc/collectd' in most distributions.
693     Please be aware that those script are meant as a starting point for your
694     own experiments.. Some of them require the `RRDs' Perl module.
695     (`librrds-perl' on Debian) If you have written a more sophisticated
696     solution please share it with us.
697
698   * The RRAs of the automatically created RRD files depend on the `step'
699     and `heartbeat' settings given. If change these settings you may need to
700     re-create the files, losing all data. Please be aware of that when changing
701     the values and read the rrdtool(1) manpage thoroughly.
702
703
704 collectd and chkrootkit
705 -----------------------
706
707   If you are using the `dns' plugin chkrootkit(1) will report collectd as a
708   packet sniffer ("<iface>: PACKET SNIFFER(/usr/sbin/collectd[<pid>])"). The
709   plugin captures all UDP packets on port 53 to analyze the DNS traffic. In
710   this case, collectd is a legitimate sniffer and the report should be
711   considered to be a false positive. However, you might want to check that
712   this really is collectd and not some other, illegitimate sniffer.
713
714
715 Prerequisites
716 -------------
717
718   To compile collectd from source you will need:
719
720   * Usual suspects: C compiler, linker, preprocessor, make, ...
721
722     collectd makes use of some common C99 features, e.g. compound literals and
723     mixed declarations, and therefore requires a C99 compatible compiler.
724
725     On Debian and Ubuntu, the "build-essential" package should pull in
726     everything that's necessary.
727
728   * A POSIX-threads (pthread) implementation.
729     Since gathering some statistics is slow (network connections, slow devices,
730     etc) collectd is parallelized. The POSIX threads interface is being
731     used and should be found in various implementations for hopefully all
732     platforms.
733
734   * When building from the Git repository, flex (tokenizer) and bison (parser
735     generator) are required. Release tarballs include the generated files – you
736     don't need these packages in that case.
737
738   * aerotools-ng (optional)
739     Used by the `aquaero' plugin. Currently, the `libaquaero5' library, which
740     is used by the `aerotools-ng' toolkit, is not compiled as a shared object
741     nor does it feature an installation routine. Therefore, you need to point
742     collectd's configure script at the source directory of the `aerotools-ng'
743     project.
744     <https://github.com/lynix/aerotools-ng>
745
746   * CoreFoundation.framework and IOKit.framework (optional)
747     For compiling on Darwin in general and the `apple_sensors' plugin in
748     particular.
749     <http://developer.apple.com/corefoundation/>
750
751   * libatasmart (optional)
752     Used by the `smart' plugin.
753     <http://git.0pointer.de/?p=libatasmart.git>
754
755   * libcap (optional)
756     The `turbostat' plugin can optionally build Linux Capabilities support,
757     which avoids full privileges requirement (aka. running as root) to read
758     values.
759     <http://sites.google.com/site/fullycapable/>
760
761   * libclntsh (optional)
762     Used by the `oracle' plugin.
763
764   * libhiredis (optional)
765     Used by the redis plugin. Please note that you require a 0.10.0 version
766     or higher. <https://github.com/redis/hiredis>
767
768   * libcurl (optional)
769     If you want to use the `apache', `ascent', `bind', `curl', `curl_json',
770     `curl_xml', `nginx', or `write_http' plugin.
771     <http://curl.haxx.se/>
772
773   * libdbi (optional)
774     Used by the `dbi' plugin to connect to various databases.
775     <http://libdbi.sourceforge.net/>
776
777   * libesmtp (optional)
778     For the `notify_email' plugin.
779     <http://www.stafford.uklinux.net/libesmtp/>
780
781   * libganglia (optional)
782     Used by the `gmond' plugin to process data received from Ganglia.
783     <http://ganglia.info/>
784
785   * libgrpc (optional)
786     Used by the `grpc' plugin. gRPC requires a C++ compiler supporting the
787     C++11 standard.
788     <https://grpc.io/>
789
790   * libgcrypt (optional)
791     Used by the `network' plugin for encryption and authentication.
792     <http://www.gnupg.org/>
793
794   * libgps (optional)
795     Used by the `gps' plugin.
796     <http://developer.berlios.de/projects/gpsd/>
797
798   * libi2c-dev (optional)
799     Used for the plugin `barometer', provides just the i2c-dev.h header file
800     for user space i2c development.
801
802   * libiptc (optional)
803     For querying iptables counters.
804     <http://netfilter.org/>
805
806   * libjevents (optional)
807     The jevents library is used by the `intel_pmu' plugin to access the Linux
808     kernel perf interface.
809     Note: the library should be build with -fPIC flag to be linked with
810     intel_pmu shared object correctly.
811     <https://github.com/andikleen/pmu-tools>
812
813   * libjvm (optional)
814     Library that encapsulates the `Java Virtual Machine' (JVM). This library is
815     used by the `java' plugin to execute Java bytecode.
816     See docs/BUILD.java.md for detailed build instructions.
817     <http://openjdk.java.net/> (and others)
818
819   * libldap (optional)
820     Used by the `openldap' plugin.
821     <http://www.openldap.org/>
822
823   * liblua (optional)
824     Used by the `lua' plugin. Currently, Lua 5.1 and later are supported.
825     <https://www.lua.org/>
826
827   * liblvm2 (optional)
828     Used by the `lvm' plugin.
829     <ftp://sources.redhat.com/pub/lvm2/>
830
831   * libmemcached (optional)
832     Used by the `memcachec' plugin to connect to a memcache daemon.
833     <http://tangent.org/552/libmemcached.html>
834
835   * libmicrohttpd (optional)
836     Used by the write_prometheus plugin to run an http daemon.
837     <http://www.gnu.org/software/libmicrohttpd/>
838
839   * libmnl (optional)
840     Used by the `netlink' plugin.
841     <http://www.netfilter.org/projects/libmnl/>
842
843   * libmodbus (optional)
844     Used by the `modbus' plugin to communicate with Modbus/TCP devices. The
845     `modbus' plugin works with version 2.0.3 of the library – due to frequent
846     API changes other versions may or may not compile cleanly.
847     <http://www.libmodbus.org/>
848
849   * libmysqlclient (optional)
850     Unsurprisingly used by the `mysql' plugin.
851     <http://dev.mysql.com/>
852
853   * libnetapp (optional)
854     Required for the `netapp' plugin.
855     This library is part of the “Manage ONTAP SDK” published by NetApp.
856
857   * libnetsnmp (optional)
858     For the `snmp' and 'snmp_agent' plugins.
859     <http://www.net-snmp.org/>
860
861   * libnetsnmpagent (optional)
862     Required for the 'snmp_agent' plugin.
863     <http://www.net-snmp.org/>
864
865   * libnotify (optional)
866     For the `notify_desktop' plugin.
867     <http://www.galago-project.org/>
868
869   * libopenipmi (optional)
870     Used by the `ipmi' plugin to prove IPMI devices.
871     <http://openipmi.sourceforge.net/>
872
873   * liboping (optional)
874     Used by the `ping' plugin to send and receive ICMP packets.
875     <http://octo.it/liboping/>
876
877   * libowcapi (optional)
878     Used by the `onewire' plugin to read values from onewire sensors (or the
879     owserver(1) daemon).
880     <http://www.owfs.org/>
881
882   * libpcap (optional)
883     Used to capture packets by the `dns' plugin.
884     <http://www.tcpdump.org/>
885
886   * libperfstat (optional)
887     Used by various plugins to gather statistics under AIX.
888
889   * libperl (optional)
890     Obviously used by the `perl' plugin. The library has to be compiled with
891     ithread support (introduced in Perl 5.6.0).
892     <http://www.perl.org/>
893
894   * libpq (optional)
895     The PostgreSQL C client library used by the `postgresql' plugin.
896     <http://www.postgresql.org/>
897
898   * libpqos (optional)
899     The PQoS library for Intel(R) Resource Director Technology used by the
900     `intel_rdt' plugin.
901     <https://github.com/01org/intel-cmt-cat>
902
903   * libprotobuf, protoc 3.0+ (optional)
904     Used by the `grpc' plugin to generate service stubs and code to handle
905     network packets of collectd's protobuf-based network protocol.
906     <https://developers.google.com/protocol-buffers/>
907
908   * libprotobuf-c, protoc-c (optional)
909     Used by the `pinba' plugin to generate a parser for the network packets
910     sent by the Pinba PHP extension.
911     <http://code.google.com/p/protobuf-c/>
912
913   * libpython (optional)
914     Used by the `python' plugin. Currently, Python 2.6 and later and Python 3
915     are supported.
916     <http://www.python.org/>
917
918   * libqpid-proton (optional)
919     Used by the `amqp1' plugin for AMQP 1.0 connections, for example to
920     Qdrouterd.
921     <http://qpid.apache.org/>
922
923   * librabbitmq (optional; also called “rabbitmq-c”)
924     Used by the `amqp' plugin for AMQP 0.9.1 connections, for example to
925     RabbitMQ.
926     <http://hg.rabbitmq.com/rabbitmq-c/>
927
928   * librdkafka (optional; also called “rdkafka”)
929     Used by the `write_kafka' plugin for producing messages and sending them
930     to a Kafka broker.
931     <https://github.com/edenhill/librdkafka>
932
933   * librouteros (optional)
934     Used by the `routeros' plugin to connect to a device running `RouterOS'.
935     <http://octo.it/librouteros/>
936
937   * librrd (optional)
938     Used by the `rrdtool' and `rrdcached' plugins. The latter requires RRDtool
939     client support which was added after version 1.3 of RRDtool. Versions 1.0,
940     1.2 and 1.3 are known to work with the `rrdtool' plugin.
941     <http://oss.oetiker.ch/rrdtool/>
942
943   * librt, libsocket, libkstat, libdevinfo (optional)
944     Various standard Solaris libraries which provide system functions.
945     <http://developers.sun.com/solaris/>
946
947   * libsensors (optional)
948     To read from `lm_sensors', see the `sensors' plugin.
949     <http://www.lm-sensors.org/>
950
951   * libsigrok (optional)
952     Used by the `sigrok' plugin. In addition, libsigrok depends on glib,
953     libzip, and optionally (depending on which drivers are enabled) on
954     libusb, libftdi and libudev.
955
956   * libstatgrab (optional)
957     Used by various plugins to collect statistics on systems other than Linux
958     and/or Solaris.
959     <http://www.i-scream.org/libstatgrab/>
960
961   * libtokyotyrant (optional)
962     Used by the `tokyotyrant' plugin.
963     <http://1978th.net/tokyotyrant/>
964
965   * libupsclient/nut (optional)
966     For the `nut' plugin which queries nut's `upsd'.
967     <http://networkupstools.org/>
968
969   * libvirt (optional)
970     Collect statistics from virtual machines.
971     <http://libvirt.org/>
972
973   * libxml2 (optional)
974     Parse XML data. This is needed for the `ascent', `bind', `curl_xml' and
975     `virt' plugins.
976     <http://xmlsoft.org/>
977
978   * libxen (optional)
979     Used by the `xencpu' plugin.
980     <http://xenbits.xensource.com/>
981
982   * libxmms (optional)
983     <http://www.xmms.org/>
984
985   * libyajl (optional)
986     Parse JSON data. This is needed for the `ceph', `curl_json', 'ovs_events',
987     'ovs_stats' and `log_logstash' plugins.
988     <http://github.com/lloyd/yajl>
989
990   * libvarnish (optional)
991      Fetches statistics from a Varnish instance. This is needed for the
992      `varnish' plugin.
993      <http://varnish-cache.org>
994
995   * riemann-c-client (optional)
996      For the `write_riemann' plugin.
997      <https://github.com/algernon/riemann-c-client>
998
999 Configuring / Compiling / Installing
1000 ------------------------------------
1001
1002   To configure, build and install collectd with the default settings, run
1003   `./configure && make && make install'.  For a complete list of configure
1004   options and their description, run `./configure --help'.
1005
1006   By default, the configure script will check for all build dependencies and
1007   disable all plugins whose requirements cannot be fulfilled (any other plugin
1008   will be enabled). To enable a plugin, install missing dependencies (see
1009   section `Prerequisites' above) and rerun `configure'. If you specify the
1010   `--enable-<plugin>' configure option, the script will fail if the depen-
1011   dencies for the specified plugin are not met. In that case you can force the
1012   plugin to be built using the `--enable-<plugin>=force' configure option.
1013   This will most likely fail though unless you're working in a very unusual
1014   setup and you really know what you're doing. If you specify the
1015   `--disable-<plugin>' configure option, the plugin will not be built. If you
1016   specify the `--enable-all-plugins' or `--disable-all-plugins' configure
1017   options, all plugins will be enabled or disabled respectively by default.
1018   Explicitly enabling or disabling a plugin overwrites the default for the
1019   specified plugin. These options are meant for package maintainers and should
1020   not be used in everyday situations.
1021
1022   By default, collectd will be installed into `/opt/collectd'. You can adjust
1023   this setting by specifying the `--prefix' configure option - see INSTALL for
1024   details. If you pass DESTDIR=<path> to `make install', <path> will be
1025   prefixed to all installation directories. This might be useful when creating
1026   packages for collectd.
1027
1028 Generating the configure script
1029 -------------------------------
1030
1031 Collectd ships with a `build.sh' script to generate the `configure'
1032 script shipped with releases.
1033
1034 To generate the `configure` script, you'll need the following dependencies:
1035
1036 - autoconf
1037 - automake
1038 - flex
1039 - bison
1040 - libtool
1041 - pkg-config
1042
1043 The `build.sh' script takes no arguments.
1044
1045
1046 Crosscompiling
1047 --------------
1048
1049   To compile correctly collectd needs to be able to initialize static
1050   variables to NAN (Not A Number). Some C libraries, especially the GNU
1051   libc, have a problem with that.
1052
1053   Luckily, with GCC it's possible to work around that problem: One can define
1054   NAN as being (0.0 / 0.0) and `isnan' as `f != f'. However, to test this
1055   ``implementation'' the configure script needs to compile and run a short
1056   test program. Obviously running a test program when doing a cross-
1057   compilation is, well, challenging.
1058
1059   If you run into this problem, you can use the `--with-nan-emulation'
1060   configure option to force the use of this implementation. We can't promise
1061   that the compiled binary actually behaves as it should, but since NANs
1062   are likely never passed to the libm you have a good chance to be lucky.
1063
1064   Likewise, collectd needs to know the layout of doubles in memory, in order
1065   to craft uniform network packets over different architectures. For this, it
1066   needs to know how to convert doubles into the memory layout used by x86. The
1067   configure script tries to figure this out by compiling and running a few
1068   small test programs. This is of course not possible when cross-compiling.
1069   You can use the `--with-fp-layout' option to tell the configure script which
1070   conversion method to assume. Valid arguments are:
1071
1072     * `nothing'    (12345678 -> 12345678)
1073     * `endianflip' (12345678 -> 87654321)
1074     * `intswap'    (12345678 -> 56781234)
1075
1076
1077 Contact
1078 -------
1079
1080   Please use GitHub to report bugs and submit pull requests:
1081   <https://github.com/collectd/collectd/>.
1082   See CONTRIBUTING.md for details.
1083
1084   For questions, development information and basically all other concerns please
1085   send an email to collectd's mailing list at
1086   <list at collectd.org>.
1087
1088   For live discussion and more personal contact visit us in IRC, we're in
1089   channel #collectd on freenode.
1090
1091
1092 Author
1093 ------
1094
1095   Florian octo Forster <octo at collectd.org>,
1096   Sebastian tokkee Harl <sh at tokkee.org>,
1097   and many contributors (see `AUTHORS').
1098