config BR2_PACKAGE_COLLECTD
	bool "collectd"
	# Uses fork()
	depends on BR2_USE_MMU
	depends on BR2_INET_IPV6
	depends on BR2_TOOLCHAIN_HAS_THREADS
	help
	  collectd is a daemon which collects system performance
	  statistics periodically and provides mechanisms to store
	  the values in a variety of ways, for example in RRD files.

	  http://collectd.org/

if BR2_PACKAGE_COLLECTD

menu "match plugins"

config BR2_PACKAGE_COLLECTD_EMPTY_COUNTER
	bool "empty counter"
	help
	  Match counter values which are currently zero.

config BR2_PACKAGE_COLLECTD_HASHED
	bool "hashed"
	help
	  Match values using a hash function of the hostname.

config BR2_PACKAGE_COLLECTD_REGEX
	bool "regex"
	help
	  Match values by their identifier based on regular expressions.

config BR2_PACKAGE_COLLECTD_TIMEDIFF
	bool "timediff"
	help
	  Match values with an invalid timestamp.

config BR2_PACKAGE_COLLECTD_VALUE
	bool "value"
	help
	  Select values by their data sources' values.
endmenu

menu "misc plugins"

config BR2_PACKAGE_COLLECTD_AGGREGATION
	bool "aggregation"
	help
	  The Aggregate plugin allows to aggregate multiple values into
	  a single value using one or several consolidation functions,
	  e.g. summation and average.

config BR2_PACKAGE_COLLECTD_LOGFILE
	bool "logfile"
	default y
	help
	  Writes log messages to a file or STDOUT/STDERR.

config BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL
	bool "notify_email"
	select BR2_PACKAGE_LIBESMTP
	select BR2_PACKAGE_OPENSSL
	help
	  Send an E-mail with the notification message to the
	  configured recipients.

config BR2_PACKAGE_COLLECTD_SYSLOG
	bool "syslog"
	default y
	help
	  Logs to the standard UNIX logging mechanism.

config BR2_PACKAGE_THRESHOLD
	bool "threshold"
	help
	  Checks values against configured thresholds and creates notifications
	  if values are out of bounds.

endmenu

menu "read plugins"

comment "Select at least one for collectd to be useful"

config BR2_PACKAGE_COLLECTD_APACHE
	bool "apache"
	select BR2_PACKAGE_LIBCURL
	help
	  Collects Apache's mod_status information.

config BR2_PACKAGE_COLLECTD_APCUPS
	bool "apcups"
	help
	  Collects UPS statistics from apcupsd.

config BR2_PACKAGE_COLLECTD_BATTERY
	bool "battery"
	help
	  Collects the battery's charge, the drawn current and voltage.

config BR2_PACKAGE_COLLECTD_BIND
	bool "bind"
	select BR2_PACKAGE_LIBCURL
	select BR2_PACKAGE_LIBXML2
	help
	  Collects BIND DNS statistics.

config BR2_PACKAGE_COLLECTD_CGROUPS
	bool "cgroups"
	help
	  Collects CGroups CPU usage accounting.

config BR2_PACKAGE_COLLECTD_CONNTRACK
	bool "conntrack"
	help
	  Collects the number of entries in Linux's connection tracking table.

config BR2_PACKAGE_COLLECTD_CONTEXTSWITCH
	bool "contextswitch"
	help
	  Collects the number of context switches done by the operating system.

config BR2_PACKAGE_COLLECTD_CPU
	bool "cpu"
	help
	  Collects the amount of time spent by the CPU in various states.

config BR2_PACKAGE_COLLECTD_CPUFREQ
	bool "cpufreq"
	help
	  Collects the current CPU's frequency.

config BR2_PACKAGE_COLLECTD_CURL
	bool "curl"
	select BR2_PACKAGE_LIBCURL
	help
	  Uses libcurl to read files and then parses them according
	  to the configuration.

config BR2_PACKAGE_COLLECTD_CURL_JSON
	bool "curl-json"
	select BR2_PACKAGE_LIBCURL
	select BR2_PACKAGE_YAJL
	help
	  Queries JSON data using the cURL library and parses it
	  according to the user's configuration using YAJL.

config BR2_PACKAGE_COLLECTD_CURL_XML
	bool "curl-xml"
	select BR2_PACKAGE_LIBCURL
	select BR2_PACKAGE_LIBXML2
	help
	  Reads files using libcurl and parses it as XML.

config BR2_PACKAGE_COLLECTD_DF
	bool "df"
	help
	  Collects file system usage information.

config BR2_PACKAGE_COLLECTD_DISK
	bool "disk"
	help
	  Collects performance statistics of hard-disks and partitions.

config BR2_PACKAGE_COLLECTD_DNS
	bool "dns"
	select BR2_PACKAGE_LIBPCAP
	help
	  Collects statistics of DNS traffic using libpcap.

config BR2_PACKAGE_COLLECTD_ENTROPY
	bool "entropy"
	help
	  Collects the available entropy on a system.

config BR2_PACKAGE_COLLECTD_ETHSTAT
	bool "ethstat"
	help
	  Collects network interface card statistics.

config BR2_PACKAGE_COLLECTD_EXEC
	bool "exec"
	help
	  Executes scripts and reads values back that are printed
	  to STDOUT by that program.

config BR2_PACKAGE_COLLECTD_FILECOUNT
	bool "filecount"
	help
	  Counts the number of files in a directory and all its subdirectories.

config BR2_PACKAGE_COLLECTD_FSCACHE
	bool "fscache"
	help
	  Collects information about the file-system based caching
	  infrastructure for network file-systems and other slow media.

config BR2_PACKAGE_COLLECTD_INTERFACE
	bool "interface"
	help
	  Collects information about the traffic of network interfaces.

config BR2_PACKAGE_COLLECTD_IPTABLES
	bool "iptables"
	select BR2_PACKAGE_IPTABLES
	help
	  Gather statistics from iptables packet filter.

config BR2_PACKAGE_COLLECTD_IRQ
	bool "irq"
	help
	  Collects the number of interrupts.

config BR2_PACKAGE_COLLECTD_LOAD
	bool "load"
	help
	  Collects the system load.

config BR2_PACKAGE_COLLECTD_MD
	bool "md"
	help
	  Collects software-RAID device information.

config BR2_PACKAGE_COLLECTD_MEMCACHED
	bool "memcached"
	help
	  Collects statistics from a memcached daemon.

config BR2_PACKAGE_COLLECTD_MEMORY
	bool "memory"
	help
	  Collects physical memory utilization.

config BR2_PACKAGE_COLLECTD_MYSQL
	bool "mysql"
	depends on BR2_INSTALL_LIBSTDCPP # mysql
	depends on BR2_USE_MMU # mysql
	depends on BR2_TOOLCHAIN_HAS_THREADS # mysql
	select BR2_PACKAGE_MYSQL
	help
	  Connects to a MySQL database and issues a "show status" command.

config BR2_PACKAGE_COLLECTD_NFS
	bool "nfs"
	help
	  Collects information about the usage of the Network File System.

config BR2_PACKAGE_COLLECTD_NTPD
	bool "ntpd"
	help
	  Queries an NTP server and extracts parameters.

config BR2_PACKAGE_COLLECTD_OLSRD
	bool "olsrd"
	help
	  Reads information about meshed networks from olsrd.

config BR2_PACKAGE_COLLECTD_OPENVPN
	bool "openvpn"
	help
	  Reads the status file of OpenVPN to collect statistics.

config BR2_PACKAGE_COLLECTD_PING
	bool "ping"
	depends on BR2_INET_IPV6
	select BR2_PACKAGE_LIBOPING
	help
	  Mesures network latency using ICMP "echo requests".

config BR2_PACKAGE_COLLECTD_PROCESSES
	bool "processes"
	help
	  Collects the number of processes gruped by state.

config BR2_PACKAGE_COLLECTD_PROTOCOLS
	bool "protocols"
	help
	  Collects information about the network protocols.

config BR2_PACKAGE_COLLECTD_SENSORS
	bool "sensors"
	select BR2_PACKAGE_LM_SENSORS
	help
	  Collects data from lm-sensors.

config BR2_PACKAGE_COLLECTD_SERIAL
	bool "serial"
	help
	  Collects the traffic on serial interfaces.

config BR2_PACKAGE_COLLECTD_STATSD
	bool "StatsD"
	help
	  StatsD network protocol to allow clients to report "events".

config BR2_PACKAGE_COLLECTD_SNMP
	bool "snmp"
	select BR2_PACKAGE_NETSNMP
	help
	  Reads values from SNMP devices.

config BR2_PACKAGE_COLLECTD_SWAP
	bool "swap"
	help
	  Collects the amount of memory currently written to disk.

config BR2_PACKAGE_COLLECTD_TABLE
	bool "table"
	help
	  Parses table-like structured plain-text files.

config BR2_PACKAGE_COLLECTD_TAIL
	bool "tail"
	help
	  Tails log files and each line is given to one or more matches
	  which test if the line is relevant for any statistics.

config BR2_PACKAGE_COLLECTD_TAIL_CSV
	bool "tail csv"
	help
	  Follows (tails) files in CSV format, parses each line and submits
	  extracted values.

config BR2_PACKAGE_COLLECTD_TCPCONNS
	bool "tcpconns"
	help
	  Counts the number of TCP connections to/from a specified port.

config BR2_PACKAGE_COLLECTD_THERMAL
	bool "thermal"
	help
	  Reads ACPI thermal zone information.

config BR2_PACKAGE_COLLECTD_UPTIME
	bool "uptime"
	help
	  Keeps track of the system uptime.

config BR2_PACKAGE_COLLECTD_USERS
	bool "users"
	help
	  Counts the number of users currently logged in.

config BR2_PACKAGE_COLLECTD_VMEM
	bool "vmem"
	help
	  Collects information about the virtual memory subsystem.

config BR2_PACKAGE_COLLECTD_WIRELESS
	bool "wireless"
	help
	  Collects signal quality, power and noise ratio for WLAN cards.

endmenu

menu "target plugins"

config BR2_PACKAGE_COLLECTD_NOTIFICATION
	bool "notification"
	help
	  Create and dispatch a notification.

config BR2_PACKAGE_COLLECTD_REPLACE
	bool "replace"
	help
	  Replace parts of an identifier using regular expressions.

config BR2_PACKAGE_COLLECTD_SCALE
	bool "scale"
	help
	  Scale (multiply) values by an arbitrary number.

config BR2_PACKAGE_COLLECTD_SET
	bool "set"
	help
	  Set (overwrite) entire parts of an identifier.

endmenu

menu "write plugins"

comment "Select at least one for collectd to be useful"

config BR2_PACKAGE_COLLECTD_CSV
	bool "csv"
	help
	  Writes values to a plain-text file in Comma Separated Values format.

config BR2_PACKAGE_COLLECTD_GRAPHITE
	bool "graphite"
	help
	  Writes data collected to Carbon (Graphite's) storage API.
	  http://graphite.wikidot.com/start

config BR2_PACKAGE_COLLECTD_NETWORK
	bool "network"
	depends on BR2_INET_IPV6
	help
	  Send/receive values from other instances of collectd.

config BR2_PACKAGE_COLLECTD_RRDTOOL
	bool "rrdtool"
	depends on BR2_USE_WCHAR # rrdtool
	select BR2_PACKAGE_FREETYPE
	select BR2_PACKAGE_LIBART
	select BR2_PACKAGE_LIBPNG
	select BR2_PACKAGE_RRDTOOL
	select BR2_PACKAGE_ZLIB
	help
	  Writes values to RRD-files.

comment "rrdtool support needs a toolchain w/ wchar"
	depends on !BR2_USE_WCHAR

config BR2_PACKAGE_COLLECTD_RIEMANN
	bool "riemann"
	depends on BR2_INSTALL_LIBSTDCPP # protobuf
	select BR2_PACKAGE_PROTOBUF_C
	help
	  Sends data to Riemann, a stream processing and monitoring system.

config BR2_PACKAGE_COLLECTD_UNIXSOCK
	bool "unixsock"
	help
	  Opens a UNIX domain socket and accepts connections.
	  One can send commands to the daemon and receive information.

config BR2_PACKAGE_COLLECTD_WRITEHTTP
	bool "writehttp"
	select BR2_PACKAGE_LIBCURL
	help
	  Sends values collected to a web-server using HTTP POST and PUTVAL.

endmenu

endif

comment "collectd needs a toolchain w/ IPv6, threads"
	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INET_IPV6
	depends on BR2_USE_MMU
