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