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