https://collectd.org/
Collectd是一个小型守护程序,可定期收集系统信息,并提供以多种方式存储和监视值的机制。
Collectd能够收集以下数据:
Apache Apache Server利用率:传输的字节数,已处理的请求数和详细的记分牌统计信息
APCUPS APC UPS守护程序:UPS充电,负载,输入/输出/电池电压等。
Apple_sensors传感器在运行Mac OS X / Darwin的Mac中:温度,风扇速度和电压传感器。
Aquaero在Aquaero 5水冷却板上由Aquacomputer制造的各种传感器。
关于Ascent的上升统计数据,这是游戏“魔兽世界”的免费服务器。
晴雨表读取绝对气压,气压降低至海平面和温度。支持的传感器是Freescale的MPL115A2和MPL3115,BOSCH的BMP085。
电池电池电量, - ACPI和基于PMU的笔记本电池电池电量和电压。
从绑定9.5、9,6及以后的statistics-channel接口绑定名称服务器和解析器统计信息。
来自BuddyInfo文件的BuddyInfo统计信息有关内存碎片。
功能平台功能从硬件子系统解码,例如使用DMIDECODE的SMBIO。 https://www.nongnu.org/dmidecode/
CEPH分布式存储系统的CEPH统计数据。
CGROUPS在Linux下的过程组的CPU会计信息。
Chrony Chrony守护程序统计:本地时钟漂移,对同行的抵消等。
基于连接事件的接口状态。
NF_ConnTrack条目的连接号码。
上下文开关的上下文开关数量由操作系统完成。
CPU CPU利用率:在系统,用户,尼斯,空闲和相关状态中花费的时间。
CPUFREQ CPU频率(对于具有速度步骤或类似技术的笔记本电脑)
CPUSLEEP CPU睡眠:悬挂时间花费的时间(用于自动悬挂的移动设备)
使用正则表达式从网站上进行curl解析统计。
curl_json通过curl检索JSON数据,并根据用户配置对其进行解析。
curl_xml通过卷曲检索XML数据,并根据用户配置对其进行解析。
DBI在各种数据库上执行SQL语句,并解释返回的数据。
DCPMM收集Intel Optane DC证券记忆(DCPMM)的性能和健康统计数据。
DF登录点的用法(基本上是值df(1)传递)
磁盘磁盘利用率:扇区读取/书面,读/写操作的数量,IO操作完成的平均时间。
DNS DNS流量:转移的查询类型,响应代码,OpCodes和流量/八位位。
DPDKSTAT收集DPDK接口统计。有关详细的构建说明,请参见Docs/build.dpdkstat.md。
该插件应与启用编译器防御措施一起编译,例如-fstack -Protector。
dpdk_telemetry收集DPDK接口,应用程序和全局统计信息。该插件可以用作DPDKSTAT插件的替代品。
该插件取决于DPDK 19.08版本,必须与DPDK应用程序一起使用。
此外,此插件对Jansson库有依赖性。
DRBD收集单个DRBD资源统计。
电子邮件电子邮件统计信息:计数,流量,垃圾邮件分数和支票。请参阅Collectd-Email(5)。
系统可用的熵量。
史诗从史诗般的消息总线收集数据。 https://epics-controls.org
ETHSTAT网络接口卡统计信息。
由自定义程序或脚本收集的Exec值。请参阅Collectd-exec(5)。
FHCOUNT文件处理统计信息。
FileCount计数目录中的文件数。
FSCACHE LINUX文件系统基于基于的缓存框架统计。
Gmond从神经节实例中获得多播流量。
GPS通过GPSD监视GPS相关数据。
GPU_NVIDIA监控NVIDIA GPU统计信息可通过NVML获得。
使用HDDTEMPD的HDDTEMP硬盘温度。
大型页面报告了用过的和免费的大量庞大的数量。有关大量页面的更多信息,请参见:https://www.kernel.org/doc/documentation/vm/hugetlbpage.txt。
该插件应与启用编译器防御措施一起编译,例如-fstack -Protector。
每个IB设备上每个端口的Infiniband属性和计数器。
intel_pmu intel_pmu插件读取Linux内核perf接口提供的性能计数器。该插件使用JEVENTS库将命名的事件解析为PERF EVENT和访问PERF接口。
Intel_rdt Intel_rdt插件收集了由Intel Resource Direction Technology(Intel(r)RDT)的监视功能提供的信息,例如高速缓存监视技术(CMT),内存带宽监视(MBM)。这些功能提供了有关共享资源的利用的信息,例如最后一个级别的缓存占用,本地存储器带宽使用情况,远程存储器带宽使用情况,每个时钟的说明。 https://01.org/packet-processing/cache-monitoring-technology-memory-bandwidth-monitoring-cache-alocation-cache-alocation-technology-code-code-code and-data
接口接口流量:每个接口的章鱼,数据包和错误的数量。
IPC IPC计数器:使用的信号量,共享内存中的分配段数等等。
IPMI IPMI(智能平台管理接口)传感器信息。
IPSTATS IPv4和IPv6;传入,外向,转发的柜台。仅FreeBSD。
Iptables Iptables的计数器:由某些iPtables规则匹配的字节数。
IPVS IPVS连接统计信息(每个服务和目的地的连接数,八位位和数据包数)。请参阅http://www.linuxvirtualserver.org/software/index.html。
IRQ IRQ计数器:发生某些中断的频率。
Java集成了Java虚拟机(JVM),以在Java字节码中执行插件。有关详细的构建说明,请参见Docs/build.java.md。
在过去的1、5和15分钟内,负载系统负载的平均值。
LPAR详细介绍了IBM电源处理器中内置的“逻辑分区”虚拟化技术的CPU统计。
lua lua插件将Lua解释器实现为Collectd。这使得可以在LUA中编写插件,该插件由Collectd执行,而无需在每个间隔中启动重型解释器。有关详细信息,请参见Collectd-Lua(5)。
Madwifi查询来自使用Atheros芯片组和Madwifi驱动程序的无线LAN适配器和接口的详细用法统计信息。
MBMON主板传感器:使用MBMON(1)温度,风扇速度和电压信息。
McElog监视器检查异常(由硬件检测到的硬件错误并报告给软件)由McElog报告,并在检测到机器检查异常时生成适当的通知。
MD Linux软件框架设备信息(活动,失败,备用和缺失磁盘的数量)。
Memcachec查询和解析Memcache守护程序(Memcached)的数据。
模因分布式缓存系统的后备统计数据。 http://www.danga.com/memcached/
内存内存利用率:通过运行过程,页面缓存,缓冲缓存和免费的内存存储器。
麦克风从英特尔收集许多集成核心(MIC)CPU的CPU使用,内存使用,温度和功耗。
MMC读取EMMC 5.0+设备报告的寿命估计,以及一些更详细的健康指标,例如BAD BLOCK和ERASE计数或功率周期,用于Micron和Sandisk Emmc以及一些瑞士swissbit MMC卡(ManFID = 0x5d oemid = 0x5342)。
Modbus从Modbus/启用的设备中读取值。支持来自多个“奴隶”的读取值,因此可以使用网关设备。
由串行多组提供的万用表信息,例如Metex M-4650CR 。
MySQL Mariadb和MySQL Server统计信息:发出的命令,触发处理程序,线程使用情况,查询缓存利用率以及发送和接收的流量/八十位。
NetApp插件使用NetApp提供的“管理ONTAP” SDK从NetApp存储系统查询性能值。
Netlink非常详细的Linux网络接口和路由统计。您可以获取有关接口,QDISC,类的(详细)信息,如果您可以使用过滤器,则可以获取(如果可以使用它)。
网络接收其他主机收集的值。大型设置将希望在一台专用的机器上收集数据,这是为此选择的插件。
NFS NFS程序:称呼哪个NFS命令被称为频率。
NGINX从nginx (Speak:Engine X),HTTP和Mail Server/Proxy收集统计信息。
NTPD NTP守护程序统计信息:本地时钟漂移,偏移到同行等。
NUMA有关非均匀内存访问(NUMA)的信息。
螺母网络UPS工具:UPS电流,电压,电源,充电,利用率,温度等。请参阅UPSD(8)。
OLSRD查询从“优化的链接状态路由”守护程序中查询路由信息。
Onewire(实验!)使用OWFS项目的OWCAPU库读取OneWire传感器。请在Collectd.conf(5)中阅读此插件为什么进行实验。
OpenLDAP读取监视信息来自OpenLDAP的CN = Monitor Subtree。
OpenVPN-status.log中每个客户端的OpenVPN RX和TX(状态转换2)。 http://openvpn.net/index.php/documentation/howto.html
Oracle查询数据来自Oracle数据库。
OVS_EVENTS插件监视开放vswitch(OVS)连接的接口的链接状态,将值分配给收集的值并在OVS数据库中发生链接状态更改时发送通知。它需要安装YAJL库。用于安装和设置开放VSWITCH的详细说明,请参阅OVS文档。 http://openvswitch.org/support/dist-docs/install.rst.html
OVS_STATS插件收集了OVS连接的桥梁和接口的统计信息。它需要安装YAJL库。用于安装和设置开放VSWITCH的详细说明,请参阅OVS文档。 http://openvswitch.org/support/dist-docs/install.rst.html
PCIE_ERRORS读取PCI Express设备状态和AER扩展功能的错误。 https://www.design-reuse.com/articles/38374/pcie-error-logging-and-handling-on-a-typical-soc.html
Perl Perl插件将Perl-Interpreter实现在Collectd中。您可以在Perl中编写自己的插件,并使用此API返回任意值。参见Collectd-Perl(5)。
BSD的数据包滤镜“ PF”的PF查询统计信息。
Pinba从Pinba接收并调度正时值,PINBA是PHP的分析扩展。
PING网络延迟:到达默认网关或另一个给定主机的时间。
PostgreSQL PostgreSQL数据库统计信息:活动服务器连接,事务号,块IO,表行操作。
PowerDNS PowerDNS名称服务器统计信息。
过程计数:跑步,睡觉,僵尸,...流程的数量。
通过NetLink聆听过程的启动和退出过程。
协议计算网络协议的各个方面,例如IP,TCP,UDP等。
Python Python插件将Python解释器实现到Collectd中。这使得可以在Python中编写插件,该插件由Collectd执行,而无需在每个间隔中启动重型解释器。有关详细信息,请参见Collectd-Python(5)。
RAS RAS插件收集并计算Rasdaemon提供的错误
REDIS REDIS插件从Redis服务器收集信息,包括:正常时间,二手内存,总连接等。
Routeros查询接口和Routeros的无线注册统计。
rrdcached rrdtool缓存守护程序(rrdcached)统计。
传感器系统传感器,使用LM_SENSERS访问:电压,温度和风扇旋转速度。
串行接口的串行RX和TX。仅Linux;需要根特权。
Sigrok使用Libsigrok作为后端,允许任何Sigrok支持的设备都可以进行收集的测量。这包括多项式,声音仪表,温度计等等。
Slurm使用libslurm以及内部健康统计数据收集每段节点和工作状态信息。
智能收集智能统计数据,特别是加载周期数,温度和不良部门。
SNMP从SNMP(简单网络管理协议)启用的网络设备(例如开关,路由器,温度计,机架监视服务器等)读取值。请参阅CollectD-SNMP(5)。
STATSD充当StatsD服务器,从StatsD客户端通过网络发送的读取值,并计算出这些值中的费率和其他聚合。
Sysevent聆听RSYSLOG事件并提交匹配的值。
交换页面交换在硬盘上或操作系统所谓的swap 。
表解析表状的结构化文件。
尾巴以(尾部)日志文件为单位,按行解析并提交匹配的值。
tail_csv以CSV格式遵循(TAILS)文件,解析每行并提交提取的值。
磁带字节和操作在磁带设备上读取和写入。仅Solaris。
TCPCONNS的TCP连接数量到特定的本地和远程端口。
TeamSpeak2 TeamSpeak2服务器统计信息。
TED插件以读取“能量侦探”(TED)的值。
热线ACPI热区信息。
Tokyotyrant从运行的东京暴君服务器中读取记录和文件大小的数量。
TurboStat在现代具有Intel涡轮功能的处理器上读取CPU频率和C状态居留权。
UBI读取不良物理擦除的计数和当前UBI体积上的最大擦除计数。
正常运行系统正常运行时间统计。
用户目前已登录。
HTTP加速器Varnish的各种统计数据。
Virt CPU,内存,磁盘和网络I/O来自虚拟机的统计信息。
VMEM虚拟内存统计信息,例如页面ins/-outs的数量或pageFaults的数量。
vserver系统资源由Linux Vservers使用。请参阅http://linux-vserver.org/。
无线卡的无线链接质量。仅Linux。
XENCPU XEN管理程序CPU统计数据。
XMMS比特率和音乐的频率播放了XMM。
ZFS的ZFS_ARC统计信息,用于ZFS的“自适应替换缓存”(ARC)。
区域测量Solaris 10及更高的每个容器(区域)的CPU负载百分比
Zookeeper从Zookeeper的MNTR命令中读取数据。
可以通过以下插件编写或发送到各个目的地的输出:
AMQP将JSON编码的数据发送到高级消息排队协议(AMQP)0.9.1服务器,例如RabbitMQ。
AMQP1将JSON编码的数据发送到高级消息排队协议(AMQP)1.0服务器,例如QPID调度路由器或Apache Artemis Broker。
CSV写入逗号分隔值(CSV)文件。这需要大量的磁盘空间,但非常便携,并且可以通过几乎每个可以分析任何内容的程序进行分析。甚至微软的Excel。
GRPC使用GRPC框架通过网络发送和接收值。
lua可以使用LUA插件在LUA中实现写插件。有关详细信息,请参见Collectd-Lua(5)。
MQTT发布并订阅了MQTT主题。
网络将数据发送到远程主机以某种方式保存数据。这对于大型设置很有用,其中应由专用机器保存数据。
Perl当然也将值也传播到用Perl编写的插件,因此您可以使用我们不敢想的插件来轻松地做奇怪的事情;)参见Collectd-Perl(5)。
Python可以使用Python插件在Python中实现写插件。有关详细信息,请参见Collectd-Python(5)。
使用rrdtool caching守护程序(rrdcached)将rrdcached输出到圆形旋转数据库(RRD)文件 - 请参见rrdcached(1) 。该守护程序提供了由rrdtool插件完成的缓存的一般实现。
使用Librrd的RRDTOOL输出到圆形机蛋白数据库(RRD)文件。参见RRDTOOL(1)。这可能是此类值最受欢迎的目的地。由于对RRD文件的更新有些昂贵,因此该插件可以缓存到文件中并立即编写大量更新,从而减少了系统的加载很多。
SNMP_AGENT接收并处理SNMP Master Agent的查询,并返回读取插件收集的数据。处理仅针对配置文件中指定的OID请求。要处理SNMP查询,该插件从Collectd获取数据,并将请求的值从Collectd的内部格式转换为SNMP格式。
Unixsock可以在需要时从Unixsock插件中查询值。请阅读collectd-unixsock(5),以获取有关如何完成的说明。
write_graphite将数据发送到使用TCP或UDP的石墨存储层的碳。可以配置它以避免日志记录发送错误(在使用UDP时尤其有用)。
write_http使用HTTP POST请求将Collectd收集的值发送到Web服务器。传输数据的形式是由EXEC插件理解的,或者在JSON中格式化。
write_kafka将数据发送到分布式队列Apache Kafka。
write_log将数据写入日志
write_mongodb将数据发送到NOSQL数据库MongoDB。
使用嵌入式HTTP服务器,与Prometheus的CollectD_Exporter兼容的write_prometheus发布值。
write_redis将值发送到redis键值数据库服务器。
write_riemann将数据发送到Riemann,这是一个流处理和监视系统。
write_sensu通过Sensu客户端本地TCP插座将数据发送到SENSU,即流处理和监视系统。
write_syslog使用TCP以syslog格式发送数据,其中该消息包含人类或JSON格式的度量。
write_tsdb发送数据opentsDB,可扩展的无主管,无共享状态时间序列数据库。
作为集合中的所有内容,日志记录都是由插件提供的。以下插件使我们了解正在发生的事情:
logFile将日志消息写入文件或stdout/stderr。
Perl日志消息也被传播到Perl编写的插件。参见Collectd-Perl(5)。
Python可以使用Python插件在Python中实现日志插件。有关详细信息,请参见Collectd-Python(5)。
Syslog记录到标准的Unix日志记录机构Syslog。
log_logstash将格式为logstash JSON事件的日志消息写入。
可以通过以下插件来处理通知:
NOTIFY_DESKTOP将桌面通知发送到桌面通知规范中定义的通知守护程序。要实际显示通知,需要通知daemon。请参阅http://www.galago-project.org/specs/notification/。
Notify_email将带有通知消息的电子邮件发送给已配置的收件人。
notify_nagios将通知作为被动检查结果提交到本地的Nagios实例。
执行执行程序或脚本以处理通知。请参阅Collectd-exec(5)。
LogFile将通知消息写入文件或Stdout/stderr。
网络将通知发送到远程主机以某种方式处理它。
Perl通知也传播到用Perl编写的插件。参见Collectd-Perl(5)。
Python可以使用Python插件在Python中实现通知插件。有关详细信息,请参见Collectd-Python(5)。
可以使用“过滤链”基础结构和“匹配”和“目标”来控制价值处理。可用以下插件:
Match_empty_counter匹配计数器值当前为零。
使用主机名的哈希函数match_hashed匹配值。
Match_regex根据正则表达式通过其标识符匹配值。
Match_timediff与无效的时间戳匹配值。
match_value通过其数据源的值选择值。
target_notification创建并派遣通知。
target_replace使用正则表达式替换标识符的零件。
target_scale量表(乘法)值以任意值。
target_set集(覆盖)标识符的整个部分。
其他插件:
聚合根据模式或正则表达式选择多个值列表,并从其中创建新的汇总值列表。
阈值对配置的阈值进行检查值,如果值超出界限,则会创建通知。有关详细信息,请参见Collectd-Threshold(5)。
UUID将主机名设置为唯一标识符。这是针对每个客户端可以迁移到另一个物理主机的设置,可能会在过程中更改一个或多个名称。
性能:由于Collectd是作为守护程序运行的,因此不会花费太多时间一次又一次地开始。除EXEC插件外,没有任何进程。输出插件(例如RRDTool和网络插件)中的缓存确保您的资源有效地使用。另外,由于收集的多线程进行了编程,因此它受益于超线程和多层处理器,并确保如果只有一个插件等待io操作完成,请确保守护程序不会空闲。
设置后,几乎不需要任何维护。设置尽可能容易,对于大多数用户来说,默认值应该可以。
Collectd的配置文件可在sysconfdir/collectd.conf上找到。运行collectd -h以获取内置默认值列表。有关选项列表和语法描述,请参见collectd.conf(5) 。
加载csv或rrdtool插件后,它们将将值写入文件。这些文件的通常位置是在/var/lib/collectd之下。
当使用某些插件时,CollectD需要作为用户根运行,因为只有root才能做某些事情,例如ping其他主机所需的craft icmp软件包。收集不应安装setuid root,因为它可用于覆盖有价值的文件!
示例脚本生成图形属于源contrib/ ,或在大多数发行版中的/usr/share/doc/collectd附近的某个地方。请注意,这些脚本是您自己实验的起点。其中一些需要RRDs PERL模块。 (在debian上的librrds-perl )如果您写了一个更复杂的解决方案,请与我们分享。
自动创建的RRD文件的RRA取决于给出的step和heartbeat设置。如果更改这些设置,则可能需要重新创建文件,然后丢失所有数据。在更改值并彻底阅读rrdtool(1)时,请注意这一点。
如果您使用的是dns插件, chkrootkit(1)将报告作为数据包collectd ( <iface>: PACKET SNIFFER(/usr/sbin/collectd[<pid>]) )。该插件捕获了端口53上的所有UDP数据包,以分析DNS流量。在这种情况下,收集是一个合法的嗅探者,该报告应被视为假阳性。但是,您可能想检查一下这确实是收集的,而不是其他非法的嗅探器。
要从源中收集收集,您将需要:
通常的嫌疑人:C编译器,链接器,预处理器,制造,...
CollectD利用了一些常见的C99功能,例如复合文字和混合声明,因此需要C99兼容的编译器。
在Debian和Ubuntu上,“ Build-Nectend”软件包应吸引所有必要的内容。
POSIX-THEAREREXS(PTHREAD)实现。由于收集某些统计数据很慢(网络连接,慢速设备等)收集是并行的。 POSIX线程接口正在使用,应在各种实现中找到所有平台。
从GIT存储库中构建时,需要Flex(Tokenizer)和Bison(Parser Generator)。释放TARBALL包括生成的文件 - 在这种情况下,您不需要这些软件包。
aquaero插件使用的Aerotools-NG(可选)。当前, aerotools-ng工具包使用的libaquaero5库并未编译为共享对象,也不包含安装例程。因此,您需要将Collectd的配置指向aerotools-ng项目的源目录。 https://github.com/lynix/aerotools-ng
corefoundation.framework和iokit.framework(可选),尤其是在darwin上编译和apple_sensors插件。 http://developer.apple.com/corefoundation/
gpu_nvidia插件使用的CUDA(可选)https://developer.nvidia.com/cuda-downloads
smart插件使用的libatasmart(可选)。 http://git.0pointer.de/?p=libatasmart.git
libcap(可选) turbostat插件可以选择构建Linux功能支持,从而避免了完全的特权要求(又称作为根运行)以读取值。 http://sites.google.com/site/loullouscapable/
oracle插件使用的libclntsh(可选)。
redis插件使用的libhiredis(可选)。请注意,您需要0.10.0版本或更高版本。 https://github.com/redis/hiredis
libcurl(可选)如果要使用apache , ascent , bind , curl , curl_json , curl_xml , nginx或write_http插件。 http://curl.haxx.se/
dbi插件使用的LIBDBI(可选)连接到各种数据库。 http://libdbi.sourceforge.net/
notify_email插件的libesmtp(可选)。 http://www.stafford.uklinux.net/libesmtp/
gmond插件使用的Libganglia(可选)处理从神经节接收的数据。 http://ganglia.info/
grpc插件使用的LIBGRPC(可选)。 GRPC需要一个支持C ++ 11标准的C ++编译器。 https://grpc.io/
network插件用于加密和身份验证的Libgcrypt(可选)。 http://www.gnupg.org/
gps插件使用的LIBGPS(可选)。 http://developer.berlios.de/projects/gpsd/
libi2c-dev(可选)用于插件barometer ,仅提供用于用户空间I2C开发的i2c-dev.h头文件。
用于查询iPtables计数器的libiptc(可选)。 http://netfilter.org/
Libjansson(可选)解析JSON数据。这用于capabilities和dpdk_telemetry插件。 http://www.digip.org/jansson/
libjevents(可选)jevents库由intel_pmu插件使用来访问Linux内核perf接口。注意:应使用-fPIC标志构建库,以与intel_pmu正确共享对象链接。 https://github.com/andikleen/pmu-tools
封装Java Virtual Machine(JVM)的libjvm(可选)库。 java插件使用此库来执行Java字节码。有关详细的构建说明,请参见Docs/build.java.md。 http://openjdk.java.net/(等)
openldap插件使用的Libldap(可选)。 http://www.openldap.org/
lua插件使用的Liblua(可选)。目前,LUA 5.1及以后得到了支持。 https://www.lua.org/
memcachec插件使用的libmemcached(可选)连接到memcache守护程序。 http://tangent.org/552/libmemcached.html
write_prometheus插件使用的libmicrohttpd(可选)运行HTTP守护程序。 http://www.gnu.org/software/libmicrohttpd/
netlink插件使用的LIBMNL(可选)。 http://www.netfilter.org/projects/libmnl/
modbus插件使用的Libmodbus(可选)与Modbus/TCP设备通信。 modbus插件可与库的2.0.3版一起使用 - 由于频繁的API,其他版本可能会或可能不会干净地进行编译。 http://www.libmodbus.org/
mysql插件毫不奇怪地使用了libmysqlclient(可选)。 http://dev.mysql.com/
netapp插件所需的libnetapp(可选)。该库是NetApp发布的“管理ONTAP SDK”的一部分。
snmp和snmp_agent插件的libnetsnmp(可选)。 http://www.net-snmp.org/
snmp_agent插件所需的libnetsnmpagent(可选)。 http://www.net-snmp.org/
notify_desktop插件的libnotify(可选)。 http://www.galago-project.org/
ipmi插件使用的libopenipmi(可选)证明了IPMI设备。 http://openipmi.sourceforge.net/
ping插件使用的LIBOPING(可选)发送和接收ICMP数据包。 http://octo.it/liboping/
onewire插件使用的Libowcapi(可选)用于从Onewire传感器(或Owserver(1)守护程序)读取值。 http://www.owfs.org/
LIBPCAP(可选)用于dns插件捕获数据包。 http://www.tcpdump.org/
各种插件使用的Libperfstat(可选)来收集AIX下的统计信息。
perl插件明显使用了libperl(可选)。必须在ITHREAD支持(Perl 5.6.0中引入)中编译该库。 http://www.perl.org/
dcpmm插件使用的libpmwapi(可选)。库github:https://github.com/intel/intel/intel-pmwatch遵循DCPMM插件提到的PMWATCH构建指令,并使用安装路径在此处解决依赖关系。
libpq(可选) postgresql插件使用的PostgreSQL C客户库库。 http://www.postgresql.org/
LIBPQOS(可选) intel_rdt插件使用的Intel(R)资源总监技术的PQOS库。 https://github.com/01org/intel-cmt-cat
libprotobuf, grpc插件使用的Protoc 3.0+(可选)来生成服务存根和代码,以处理Collectd的基于ProtoBuf的网络协议的网络数据包。 https://developers.google.com/protocol-buffers/
pinba插件使用的LibProtobuf-C,Protoc-C(可选)(可选)为Pinba PHP扩展程序发送的网络数据包生成解析器。 http://code.google.com/p/protobuf-c/
python插件使用的Libpython(可选)。目前,支持Python 2.6及以后的Python 3。 http://www.python.org/
例如, amqp1插件用于AMQP 1.0连接的LibqPID-Proton(可选),例如QDROUTORD。 http://qpid.apache.org/
amqp插件用于AMQP 0.9.1连接,例如,liblabbitmq(可选;也称为“ RabbitMQ-C”),例如与RabbitMQ。 http://hg.rabbitmq.com/rabbitmq-c/
write_kafka插件使用的librdkafka(可选;也称为“ rdkafka”)用于生成消息并将其发送到Kafka Brok。 https://github.com/edenhill/librdkafka
routeros插件使用的Librouteros(可选)连接到运行Routeros的设备。 http://octo.it/librouteros/
rrdtool和rrdcached插件使用的librrd(可选)。后者需要RRDTool客户端支持,并在RRDTOOL版本1.3之后添加。已知版本1.0、1.2和1.3可与rrdtool插件一起使用。 http://oss.oetiker.ch/rrdtool/
librt,libsocket,libkstat,libdevinfo(可选)提供系统功能的各种标准Solaris库。 http://developers.sun.com/solaris/
libsensors(可选)可从lm_sensors读取,请参见sensors插件。 http://www.lm-sensors.org/
sigrok插件使用的Libsigrok(可选)。此外, libsigrok在libusb , libftdi和libudev上取决于glib , libzip和(取决于启用驾驶员)。
slurm插件使用的libslurm(可选)。 https://slurm.schedmd.com/
ras插件使用的libsqlite3(可选)。 https://sqlite.org/
LIBSTATGRAB(可选)由各种插件用于收集Linux和/或Solaris以外的系统的统计信息。 http://www.i-scream.org/libstatgrab/
tokyotyrant插件使用的libtokyotyrant(可选)。 http://1978th.net/tokyotyrant/
libupsclient/nut(可选),用于查询螺母upsd的nut插件。 http://networkupstools.org/
libvirt(可选)从虚拟机收集统计。 http://libvirt.org/
libxml2(可选)分析XML数据。这对于ascent , bind , curl_xml和virt插件所需。 http://xmlsoft.org/
xencpu插件使用的Libxen(可选)。 http://xenbits.xensource.com/
libxmms(可选)http://www.xmms.org/
Libyajl(可选)解析JSON数据。这是ceph , curl_json , ovs_events , ovs_stats和log_logstash插件所需的。 http://github.com/lloyd/yajl
libvarnish(可选)从清漆实例中获取统计信息。这是varnish插件所需的。 http://varnish-cache.org
riemann-c-client(可选) write_riemann插件。 https://github.com/algernon/riemann-c-client
要配置,使用默认设置构建和安装收集,请运行./configure && make && make install 。 For a complete list of configure options and their description, run ./configure --help .
By default, the configure script will check for all build dependencies and disable all plugins whose requirements cannot be fulfilled (any other plugin will be enabled). To enable a plugin, install missing dependencies (see section Prerequisites above) and rerun configure . If you specify the --enable-<plugin> configure option, the script will fail if the depen- dencies for the specified plugin are not met. In that case you can force the plugin to be built using the --enable-<plugin>=force configure option. This will most likely fail though unless you're working in a very unusual setup and you really know what you're doing. If you specify the --disable-<plugin> configure option, the plugin will not be built. If you specify the --enable-all-plugins or --disable-all-plugins configure options, all plugins will be enabled or disabled respectively by default. Explicitly enabling or disabling a plugin overwrites the default for the specified plugin. These options are meant for package maintainers and should not be used in everyday situations.
By default, collectd will be installed into /opt/collectd . You can adjust this setting by specifying the --prefix configure option - see INSTALL for details. If you pass DESTDIR=<path> to make install , <path> will be prefixed to all installation directories. This might be useful when creating packages for collectd.
Collectd ships with a build.sh script to generate the configure script shipped with releases.
To generate the configure script, you'll need the following dependencies:
The build.sh script takes no arguments.
Collectd can be built on Windows using Cygwin, and the result is a binary that runs natively on Windows. That is, Cygwin is only needed for building, not running, collectd.
You will need to install the following Cygwin packages:
To build, just run the build.sh script in your Cygwin terminal. By default, it installs to "C:/Program Files/collectd". You can change the location by setting the INSTALL_DIR variable:
$ export INSTALL_DIR="C:/some/other/install/directory" $ ./build.sh
或者:
$ INSTALL_DIR="C:/some/other/install/directory" ./build.sh
To compile correctly collectd needs to be able to initialize static variables to NAN (Not A Number). Some C libraries, especially the GNU libc, have a problem with that.
Luckily, with GCC it's possible to work around that problem: One can define NAN as being (0.0 / 0.0) and isnan as f != f . However, to test this "implementation" the configure script needs to compile and run a short test program. Obviously running a test program when doing a cross- compilation is, well, challenging.
If you run into this problem, you can use the --with-nan-emulation configure option to force the use of this implementation. We can't promise that the compiled binary actually behaves as it should, but since NANs are likely never passed to the libm you have a good chance to be lucky.
Likewise, collectd needs to know the layout of doubles in memory, in order to craft uniform network packets over different architectures. For this, it needs to know how to convert doubles into the memory layout used by x86. The configure script tries to figure this out by compiling and running a few small test programs. This is of course not possible when cross-compiling. You can use the --with-fp-layout option to tell the configure script which conversion method to assume. Valid arguments are:
* `nothing` (12345678 -> 12345678)
* `endianflip` (12345678 -> 87654321)
* `intswap` (12345678 -> 56781234)
Please use GitHub to report bugs and submit pull requests: https://github.com/collectd/collectd/. See CONTRIBUTING.md for details.
For questions, development information and basically all other concerns please send an email to collectd's mailing list at (list at collectd.org).
For live discussion and more personal contact visit us in IRC, we're in channel #collectd on freenode.
Florian octo Forster (octo at collectd.org), Sebastian tokkee Harl (sh at tokkee.org), and many other authors and contributors.