X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=README;h=bb72ac2c4de609b2051883283ccc52b7e4084dc8;hb=1aa4295ba6875ceb02a7383237bc2485ffab9c1e;hp=3e2c0233adc3ea9ccfbcbbf072c107a0f6dcbd5b;hpb=9d3906a53e086d520b5ed71ca57118e8f589574b;p=collectd.git diff --git a/README b/README index 3e2c0233..bb72ac2c 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ collectd - System information collection daemon ================================================= -http://collectd.org/ +https://collectd.org/ About ----- @@ -51,6 +51,9 @@ Features - cgroups CPU accounting information for process groups under Linux. + - chrony + Chrony daemon statistics: Local clock drift, offset to peers, etc. + - conntrack Number of nf_conntrack entries. @@ -64,6 +67,9 @@ Features - cpufreq CPU frequency (For laptops with speed step or a similar technology) + - cpusleep + CPU sleep: Time spent in suspend (For mobile devices which enter suspend automatically) + - curl Parse statistics from websites using regular expressions. @@ -90,6 +96,9 @@ Features DNS traffic: Query types, response codes, opcodes and traffic/octets transferred. + - dpdk + Collect DPDK interface statistics. + - drbd Collect individual drbd resource statistics. @@ -119,9 +128,20 @@ Features - gmond Receive multicast traffic from Ganglia instances. + - gps + Monitor gps related data through gpsd. + + - grpc + Send and receive values over the network using the gRPC framework. + - hddtemp Hard disk temperatures using hddtempd. + - hugepages + Report the number of used and free hugepages. More info on + hugepages can be found here: + https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt. + - interface Interface traffic: Number of octets, packets and errors for each interface. @@ -156,6 +176,12 @@ Features Detailed CPU statistics of the “Logical Partitions” virtualization technique built into IBM's POWER processors. + - lua + The Lua plugin implements a Lua interpreter into collectd. This + makes it possible to write plugins in Lua which are executed by + collectd without the need to start a heavy interpreter every interval. + See collectd-lua(5) for details. + - lvm Size of “Logical Volumes” (LV) and “Volume Groups” (VG) of Linux' “Logical Volume Manager” (LVM). @@ -191,6 +217,9 @@ Features Reads values from Modbus/TCP enabled devices. Supports reading values from multiple "slaves" so gateway devices can be used. + - mqtt + Publishes and subscribes to MQTT topics. + - multimeter Information provided by serial multimeters, such as the `Metex M-4650CR'. @@ -379,12 +408,19 @@ Features - wireless Link quality of wireless cards. Linux only. + - xencpu + XEN Hypervisor CPU stats. + - xmms Bitrate and frequency of music played with XMMS. - zfs_arc Statistics for ZFS' “Adaptive Replacement Cache” (ARC). + - zone + Measures the percentage of cpu load per container (zone) under Solaris 10 + and higher + - zookeeper Read data from Zookeeper's MNTR command. @@ -400,6 +436,10 @@ Features diskspace but is extremely portable and can be analysed with almost every program that can analyse anything. Even Microsoft's Excel.. + - lua + It's possible to implement write plugins in Lua using the Lua + plugin. See collectd-lua(5) for details. + - network Send the data to a remote host to save the data somehow. This is useful for large setups where the data should be saved by a dedicated machine. @@ -495,6 +535,9 @@ Features Send an E-mail with the notification message to the configured recipients. + - notify_nagios + Submit notifications as passive check results to a local nagios instance. + - exec Execute a program or script to handle the notification. See collectd-exec(5). @@ -669,10 +712,19 @@ Prerequisites Used by the `gmond' plugin to process data received from Ganglia. + * libgrpc (optional) + Used by the `grpc' plugin. gRPC requires a C++ compiler supporting the + C++11 standard. + + * libgcrypt (optional) Used by the `network' plugin for encryption and authentication. + * libgps (optional) + Used by the `gps' plugin. + + * libhal (optional) If present, the `uuid' plugin will check for UUID from HAL. @@ -695,6 +747,10 @@ Prerequisites Used by the `openldap' plugin. + * liblua (optional) + Used by the `lua' plugin. Currently, Lua 5.1 and later are supported. + + * liblvm2 (optional) Used by the `lvm' plugin. @@ -758,14 +814,18 @@ Prerequisites The PostgreSQL C client library used by the `postgresql' plugin. + * libprotobuf, protoc 3.0+ (optional) + Used by the `grpc' plugin to generate service stubs and code to handle + network packets of collectd's protobuf-based network protocol. + + * libprotobuf-c, protoc-c (optional) Used by the `pinba' plugin to generate a parser for the network packets - sent by the Pinba PHP extension, and by the `write_riemann' plugin to - generate events to be sent to a Riemann server. + sent by the Pinba PHP extension. * libpython (optional) - Used by the `python' plugin. Currently, Python 2.3 and later and Python 3 + Used by the `python' plugin. Currently, Python 2.6 and later and Python 3 are supported. @@ -823,6 +883,10 @@ Prerequisites `virt' plugins. + * libxen (optional) + Used by the `xencpu' plugin. + + * libxmms (optional) @@ -836,6 +900,10 @@ Prerequisites `varnish' plugin. + * riemann-c-client (optional) + For the `write_riemann' plugin. + + Configuring / Compiling / Installing ------------------------------------ @@ -889,18 +957,19 @@ Configuring with libjvm library checks succeed. If this doesn't work for you, you have the possibility to specify CPP-flags, - C-flags and LD-flags for the ‘Java’ plugin by hand, using the following three - (environment) variables: + C-flags, LD-flags and LIBS for the ‘Java’ plugin by hand, using the + following environment variables: - JAVA_CPPFLAGS - JAVA_CFLAGS - JAVA_LDFLAGS + - JAVA_LIBS For example (shortened for demonstration purposes): ./configure JAVA_CPPFLAGS="-I$JAVA_HOME/include -I$JAVA_HOME/include/linux" - Adding "-ljvm" to the JAVA_LDFLAGS is done automatically, you don't have to + Adding "-ljvm" to JAVA_LIBS is done automatically, you don't have to do that. Generating the configure script @@ -917,6 +986,7 @@ To generate the `configure` script, you'll need the following dependencies: - bison - libtool - libtool-ltdl +- pkg-config The `build.sh' script takes no arguments. @@ -950,6 +1020,141 @@ Crosscompiling * `endianflip' (12345678 -> 87654321) * `intswap' (12345678 -> 56781234) +Configuring with DPDK +--------------------- + +Note: DPDK 16.04 is the minimum version and currently supported version of DPDK +required for the dpdkstat plugin. This is to allow the plugin to take advantage +of functions added to detect if the DPDK primary process is alive. + +Note: For Ubuntu, GCC 4.9 is the minimum version required to build collectd +with DPDK. Ubuntu 14.04, for example, has GCC 4.8 by default and will require +an upgrade: + $ sudo add-apt-repository ppa:ubuntu-toolchain-r/test + $ sudo apt-get update + $ sudo apt-get install gcc-4.9 +Alternatively, if you know that the platform that you wish to run collectd +on supports the SSSE3 instruction set, you can run make as follows: + $ make -j CFLAGS+='-mssse3' + +Build DPDK for use with collectd: + To compile DPDK for use with collectd dpdkstat start by: + - Clone DPDK: + $ git clone git://dpdk.org/dpdk + - Checkout the system requirements at + http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html and make sure you have + the required tools and hugepage setup as specified there. + NOTE: It's recommended to use the 1GB hugepage setup for best performance, + please follow the instruction for "Reserving Hugepages for DPDK Use" + in the link above. + However if you plan on configuring 2MB hugepages on the fly please ensure + to add appropriate commands to reserve hugepages in a system startup script + if collectd is booted at system startup time. These commands include: + mkdir -p /mnt/huge + mount -t hugetlbfs nodev /mnt/huge + echo 64 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages + - To configure the DPDK build for the combined shared library modify + config/common_base in your DPDK as follows + # + # Compile to share library + # + -CONFIG_RTE_BUILD_SHARED_LIB=n + +CONFIG_RTE_BUILD_SHARED_LIB=y + - Prepare the configuration for the appropriate target as specified at: + http://dpdk.org/doc/guides/linux_gsg/build_dpdk.html. + For example: + $ make config T=x86_64-native-linuxapp-gcc + - Build the target: + $ make + - Install DPDK to /usr + $ sudo make install prefix=/usr + NOTE 1: You must run make install as the configuration of collectd with + DPDK expects DPDK to be installed somewhere. + NOTE 2: If you don't specify a prefix then DPDK will be installed in /usr/local/ + NOTE 3: If you are not root then use sudo to make install DPDK to the appropriate + location. + - Check that the DPDK library has been installed in /usr/lib or /lib + $ ls /usr/lib | grep dpdk + - Bind the interfaces to use with dpdkstat to DPDK: + DPDK devices can be setup with either the VFIO (for DPDK 1.7+) or UIO modules. + Note: UIO requires inserting an out of tree driver igb_uio.ko that is available + in DPDK. + UIO Setup: + - Insert uio.ko: + $ sudo modprobe uio + - Insert igb_uio.ko: + $ sudo insmod $DPDK_BUILD/kmod/igb_uio.ko + - Bind network device to igb_uio: + $ sudo $DPDK_DIR/tools/dpdk_nic_bind.py --bind=igb_uio eth1 + VFIO Setup: + - VFIO needs to be supported in the kernel and the BIOS. More information can be found + @ http://dpdk.org/doc/guides/linux_gsg/build_dpdk.html. + - Insert the `vfio-pci.ko' module: modprobe vfio-pci + - Set the correct permissions for the vfio device: + $ sudo /usr/bin/chmod a+x /dev/vfio + $ sudo /usr/bin/chmod 0666 /dev/vfio/* + - Bind the network device to vfio-pci: + $ sudo $DPDK_DIR/tools/dpdk_nic_bind.py --bind=vfio-pci eth1 + NOTE: Please ensure to add appropriate commands to bind the network + interfaces to DPDK in a system startup script if collectd is + booted at system startup time. + - Run ldconfig to update the shared library cache. + + Build static DPDK library for use with collectd: + - To configure DPDK to build the combined static library libdpdk.a + ensure that CONFIG_RTE_BUILD_SHARED_LIB is set to n in + config/common_base in your DPDK as follows: + # + # Compile to share library + # + CONFIG_RTE_BUILD_SHARED_LIB=n + - Prepare the configuration for the appropriate target as specified at: + http://dpdk.org/doc/guides/linux_gsg/build_dpdk.html. + For example: + $ make config T=x86_64-native-linuxapp-gcc + - Build the target using -fPIC: + $ make EXTRA_CFLAGS=-fPIC -j + - Install DPDK to /usr + $ sudo make install prefix=/usr + +Configure collectd with DPDK: +NOTE: The Address-Space Layout Randomization (ASLR) security feature in Linux should + be disabled, in order for the same hugepage memory mappings to be present in all + DPDK multi-process applications. Note that this has security implications. + To disable ASLR: + $ echo 0 > /proc/sys/kernel/randomize_va_space + To fully enable ASLR: + $ echo 2 > /proc/sys/kernel/randomize_va_space + See http://dpdk.org/doc/guides/prog_guide/multi_proc_support.html + + - Generate the build script as specified below. (i.e. run `build.sh'). + - Configure collectd with the DPDK shared library: + ./configure --with-libdpdk=/usr + NOTE: To configure collectd with the DPDK static library: + ./configure --with-libdpdk=/usr CFLAGS=" -lpthread -Wl,--whole-archive + -Wl,-ldpdk -Wl,-lm -Wl,-lrt -Wl,-lpcap -Wl,-ldl -Wl,--no-whole-archive" + + Libraries: + ... + libdpdk . . . . . . . . yes + + Modules: + ... + dpdkstat . . . . . . .yes + + + - Make sure that dpdk and dpdkstat are enabled in the configuration log: + + - Build collectd: + $ make -j && make -j install. + NOTE: As mentioned above, if you are building on Ubuntu 14.04 with GCC <= 4.8.X, + you need to use: + $ make -j CFLAGS+='-mssse3' && make -j install + +Usage of dpdkstat: + - The same PCI device configuration should be passed to the primary process + as the secondary process uses the same port indexes as the primary. + NOTE: A blacklist/whitelist of NICs isn't supported yet. Contact ------- @@ -969,6 +1174,5 @@ Author Sebastian tokkee Harl , and many contributors (see `AUTHORS'). - Please send bug reports and patches to the mailing list, see `Contact' - above. - + Please use GitHub reporting bugs and submitting pull requests. + See CONTRIBUTING.md for details.