X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=README;h=bb72ac2c4de609b2051883283ccc52b7e4084dc8;hb=b7c67e8ccfc70f52f8533df9502424de85074eee;hp=3e2c0233adc3ea9ccfbcbbf072c107a0f6dcbd5b;hpb=56536633afb68ded68ac7bd012060cb9337fbcc5;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.