Collectd Exporter
Collectd 是一个守护(daemon)进程,用来定期收集系统和应用程序的性能指标,同时提供了以不同的方式来存储这些指标值的机制。
Collectd 从各种来源收集指标,例如 操作系统,应用程序,日志文件和外部设备,并存储此信息或通过网络使其可用。 这些统计数据可用于监控系统、查找性能瓶颈(即性能分析)并预测未来的系统负载(即容量规划)等。
Collectd 的官网是 https://collectd.org ,针对 Collectd ,Prometheus 开发了一个 Collectd Exporter 来将 Collectd 的指标转换成 Prometheus 指标,这个 Exporter 的官方仓库是 https://github.com/prometheus/collectd_exporter ,当前最新版本是 v0.5.0 ,发布于 2020 年 5 月 8 日,到现在已经一年半没有更新了,不过看代码提交在2021 年 6 月的时候有过提交,看 Commit 信息,是新增了 TLS 的认证,但是没有发版,如果有需要 可以自己构建一个最新版本出来。
另外 Collectd 的最新版本是 5.12.0 ,发布于 2020 年 9 月 3 日,从这个角度来看的话,Collectd Exporter 一年半没更新还能接受,大部分功能应该是可以正常使用的。
看了一些,Collectd Exporter v0.4.0 版本发布于 2018 年,v0.3.1 版本发布于 2016 年,或许明年就发布 v0.6.0 了呢,也说明,用这个的人是真的少。
Collectd Exporter 接受由 Collectd 的网络插件发送的二进制网络协议,以及由 Collectd 的 write_http 插件发送的 JSON 格式的指标,并将它们转换并公开给 Prometheus 使用。
Collectd Exporter 对于从现有收集的设置导出度量非常有用,对于 Node Exporter 不包含的度量也很有用。
安装运行
这个安装包可以使用二进制部署或者使用容器部署,我们看一下容器部署的命令
docker pull prom/collectd-exporter
docker run -d -p 9103:9103 -p 25826:25826/udp prom/collectd-exporter --collectd.listen-address=":25826"
二进制网络协议
Collectd 的网络插件使用一个轻量级的二进制协议将指标从一个实例发送到另一个实例, collectd_exporter 使用这些数据包,首先配置collectd以将这些度量发送到适当的地址:
LoadPlugin network
<Plugin network>
Server "prometheus.example.com" "25826"
</Plugin>
然后在启动 Collectd Exporter 的时候使用 --collectd.listen-address=":25826"
参数启动,这样就可以消费和导出这些指标。
JSON 格式
Collectd 的 write_http 插件能够通过 HTTP POST 请求发送指标,Collectd_exporter 提供接受、解析和导出指标的合适接口。首先,配置 Collectd 将这些指标发送到HTTP接口:
LoadPlugin write_http
<Plugin write_http>
<Node "collectd_exporter">
URL "http://localhost:9103/collectd-post"
Format "JSON"
StoreRates false
</Node>
</Plugin>
如果需要改变这个接口的路径,可以使用 --web.collectd-push-path
命令行参数,
To change the path of the end-point, use the --web.collectd-push-path command line option. 如果需要完全禁用这个功能可以这样,--web.collectd-push-path=""
,保持这个参数的值为空就可以。
TLS 和 basic authentication
Collectd Exporte 支持 TLS 和 basic authentication ,这使得可以更好地控制各种 HTTP 接口。使用 TLS 和 basic authentication 需要通过 --web.config.file
参数来指定文件,这个文件的格式也是老朋友了,很多 Exporter 都使用这个格式,这个格式的描述就是 Exporter-Toolkit