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