menuconfig BR2_PACKAGE_COLLECTD
	bool "collectd"
	# Uses fork()
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on !BR2_STATIC_LIBS
	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_LOGSTASH
	bool "logstash"
	select BR2_PACKAGE_YAJL
	help
	  Writes log messages formatted as logstash JSON events.

config BR2_PACKAGE_COLLECTD_LUA
	bool "lua"
	depends on BR2_PACKAGE_HAS_LUAINTERPRETER
	help
	  Embeds a Lua interpreter into collectd and provides an
	  interface to collectd's plugin system.

comment "lua support needs a Lua interpreter"
	depends on !BR2_PACKAGE_HAS_LUAINTERPRETER

config BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL
	bool "notify_email"
	depends on !BR2_STATIC_LIBS # libesmtp
	select BR2_PACKAGE_LIBESMTP
	select BR2_PACKAGE_OPENSSL
	help
	  Send an E-mail with the notification message to the
	  configured recipients.

comment "notify_email needs a toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS

config BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS
	bool "notify_nagios"
	help
	  Sends notifications to Nagios as a passive check result.

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

config BR2_PACKAGE_COLLECTD_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_BUDDYINFO
	bool "buddyinfo"
	help
	  Statistics from buddyinfo file about memory fragmentation.

config BR2_PACKAGE_COLLECTD_CAPABILITIES
	bool "capabilities"
	depends on BR2_aarch64 || BR2_i386 || BR2_x86_64 # dmidecode
	select BR2_PACKAGE_DMIDECODE # runtime
	select BR2_PACKAGE_JANSSON
	select BR2_PACKAGE_LIBMICROHTTPD
	help
	  Collects selected static platform data using dmidecode and
	  expose it through micro embedded webserver.

config BR2_PACKAGE_COLLECTD_CEPH
	bool "ceph"
	select BR2_PACKAGE_YAJL
	help
	  Statistics from the Ceph distributed storage system.

config BR2_PACKAGE_COLLECTD_CHRONY
	bool "chrony"
	help
	  Collects NTP data from the chrony NTP server.

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_CPUSLEEP
	bool "cpusleep"
	help
	  Measures time spent by CPU in deep sleep mode.

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_DPDK_TELEMETRY
	bool "dpdk_telemetry"
	select BR2_PACKAGE_JANSSON
	help
	  Collects DPDK ethernet device metrics via dpdk_telemetry
	  library.

config BR2_PACKAGE_COLLECTD_DRBD
	bool "drbd"
	help
	  Collect individual drbd resource statistics.

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_FHCOUNT
	bool "fhcount"
	help
	  File handles statistics.

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_GPS
	bool "gps"
	select BR2_PACKAGE_GPSD
	help
	  Reports the number of sattelites seen by and precision
	  of a GPS receiver.

config BR2_PACKAGE_COLLECTD_HUGEPAGES
	bool "hugepages"
	help
	  Reports the number of used and free hugepages on Linux.

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

config BR2_PACKAGE_COLLECTD_IPC
	bool "ipc"
	help
	  IPC counters: semaphores used, number of allocated segments
	  in shared memory and more.

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

config BR2_PACKAGE_COLLECTD_IPVS
	bool "ipvs"
	help
	  Extracts statistics from IP Virtual Server (IPVS), the
	  transport-layer load-balancer of the LVS project.
	  It stores traffic and connections history for each of the
	  Real Servers (RS) behind a local Virtual Server (VS).
	  Collectd must be run on Directors (in LVS jargon).

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_MEMCACHEC
	bool "memcachec"
	depends on BR2_INSTALL_LIBSTDCPP
	select BR2_PACKAGE_LIBMEMCACHED
	help
	  Query and parse data from a memcache daemon.

comment "memcachec needs a toolchain w/ C++"
	depends on !BR2_INSTALL_LIBSTDCPP

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_MODBUS
	bool "modbus"
	select BR2_PACKAGE_LIBMODBUS
	help
	  Reads register values from a modbus "slave" via Modbus/TCP.

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_NETLINK
	bool "netlink"
	select BR2_PACKAGE_LIBMNL
	help
	  Get statistics for interfaces, qdiscs, classes, and filters.

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

config BR2_PACKAGE_COLLECTD_NGINX
	bool "nginx"
	select BR2_PACKAGE_LIBCURL
	help
	  Collects the number of requests handled by the nginx daemon
	  since startup and the number of current connections by state.

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

config BR2_PACKAGE_COLLECTD_NUT
	bool "nut"
	depends on BR2_INSTALL_LIBSTDCPP
	select BR2_PACKAGE_NUT
	help
	  The NUT plugin collects uninterruptible power supply (UPS)
	  statistics using the Network UPS Tools (NUT).

comment "nut needs a toolchain w/ C++"
	depends on !BR2_INSTALL_LIBSTDCPP

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

config BR2_PACKAGE_COLLECTD_ONEWIRE
	bool "onewire"
	select BR2_PACKAGE_OWFS
	help
	  Collects temperature information from sensors connected over
	  the OneWire bus.

config BR2_PACKAGE_COLLECTD_OPENLDAP
	bool "openldap"
	depends on BR2_USE_WCHAR
	select BR2_PACKAGE_OPENLDAP
	help
	  Read monitoring information from OpenLDAP's cn=Monitor
	  subtree.

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

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

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

config BR2_PACKAGE_COLLECTD_POSTGRESQL
	bool "postgresql"
	depends on BR2_USE_WCHAR # postgresql
	select BR2_PACKAGE_POSTGRESQL
	help
	  Connects to and executes SQL statements on a PostgreSQL
	  database. It then reads back the results and, depending on the
	  configuration, the returned values are then converted into
	  collectd 'value lists'.

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

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_REDIS
	bool "redis"
	select BR2_PACKAGE_HIREDIS
	help
	  Connects to one or more instances of Redis.

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_SMART
	bool "SMART"
	depends on BR2_PACKAGE_HAS_UDEV # libatasmart
	select BR2_PACKAGE_LIBATASMART
	help
	  Collect SMART statistics, notably load cycle count,
	  temperature and bad sectors.

comment "SMART requires udev to be enabled"
	depends on !BR2_PACKAGE_HAS_UDEV

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.

config BR2_PACKAGE_COLLECTD_ZOOKEEPER
	bool "zookeeper"
	help
	  Read data from Zookeeper's MNTR command.

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_AMQP
	bool "amqp"
	select BR2_PACKAGE_RABBITMQ_C
	help
	  Send/receive values via the Advanced Message Queuing Protocol
	  (AMQP).

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_GRPC
	bool "grpc"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC # grpc
	depends on BR2_INSTALL_LIBSTDCPP # grpc -> protobuf
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # grpc -> protobuf
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # grpc -> protobuf
	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc
	select BR2_PACKAGE_GRPC
	help
	  Send/receive values using the gRPC protocol.

comment "grpc needs a toolchain w/ C++, gcc >= 4.8"
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc

config BR2_PACKAGE_COLLECTD_MQTT
	bool "mqtt"
	select BR2_PACKAGE_MOSQUITTO
	help
	  Sends metrics to and/or receives metrics from an MQTT broker.

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

config BR2_PACKAGE_COLLECTD_NETWORK_GCRYPT
	bool "crypto support"
	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
	depends on BR2_PACKAGE_COLLECTD_NETWORK
	select BR2_PACKAGE_LIBGCRYPT
	help
	  Enable crypto support

config BR2_PACKAGE_COLLECTD_RRDTOOL
	bool "rrdtool"
	depends on BR2_USE_WCHAR # rrdtool
	select BR2_PACKAGE_RRDTOOL
	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"
	# riemann-c-client -> protobuf-c
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	select BR2_PACKAGE_RIEMANN_C_CLIENT
	select BR2_PACKAGE_LIBTOOL
	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 "write_http"
	select BR2_PACKAGE_LIBCURL
	help
	  Sends values collected to a web-server using HTTP POST and
	  PUTVAL.

config BR2_PACKAGE_COLLECTD_WRITEINFLUXDBUDP
	bool "write_influxdb_udp"
	help
	  Sends data to an instance of InfluxDB using the "Line
	  Protocol".

config BR2_PACKAGE_COLLECTD_WRITELOG
	bool "write_log"
	help
	  Writes data to the log.

config BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS
	bool "write_prometheus"
	depends on BR2_INSTALL_LIBSTDCPP # protobuf-c
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" # protobuf-c
	select BR2_PACKAGE_LIBMICROHTTPD
	select BR2_PACKAGE_PROTOBUF_C
	help
	  Publishes values using an embedded HTTP server, in a format
	  compatible with Prometheus' collectd_exporter.

comment "write_prometheus needs a toolchain w/ C++"
	depends on !BR2_INSTALL_LIBSTDCPP
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"

config BR2_PACKAGE_COLLECTD_WRITEREDIS
	bool "write_redis"
	select BR2_PACKAGE_HIREDIS
	help
	  Sends data to Redis.

config BR2_PACKAGE_COLLECTD_WRITESENSU
	bool "write_sensu"
	help
	  Sends data to Sensu, a stream processing and monitoring
	  system, via the Sensu client local TCP socket.

config BR2_PACKAGE_COLLECTD_WRITETSDB
	bool "write_tsdb"
	help
	  Sends data OpenTSDB, a scalable no master, no shared state
	  time series database.

endmenu

endif

comment "collectd needs a toolchain w/ threads, dynamic library"
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
	depends on BR2_USE_MMU
