最近由于对服务器延迟有监控的需求,于是研究了一下这套方案。这套方案首先在虚拟机中做过测试,最后直接部署在 Banana-pi M3 平台上,由于部署时需要使用的代码完全一致,因此以 M3 为例。以下是简单的过程记录:
Contents
配置 Collectd
在大多数主流版本中 Collectd 都有自己的预编译包,因此 M3 可以直接安装:
sudo apt-get install collectd
简单修改一下 collectd 的配置 /etc/collectd/collectd.conf
-#LoadPlugin network +LoadPlugin network +<Plugin network> + Server "127.0.0.1" "25826" +</Plugin> +<Plugin "ping"> + Host "example.com" +</Plugin>
通过这个设置,Collectd 会将数据通过 localhost:25826 通信,同时利用 ping plugin 就可以实现对服务器延迟的监控,多个服务器通过多条 Host “domain” 即可实现。
最后开启 Collectd
systemctl start collectd
配置 InfluxDB
InfluxDB 的安装也非常简单:
sudo apt-get install -y apt-transport-https curl -sL https://repos.influxdata.com/influxdb.key | apt-key add - source /etc/lsb-release echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | tee /etc/apt/sources.list.d/influxdb.list sudo apt-get update && sudo apt-get install influxdb
安装完成后需要启用 InfluxDB 对 Collectd 的支持:
[[collectd]] enabled = true bind-address = "127.0.0.1:25826" database = "collectd" retention-policy = "" typesdb = "/usr/local/share/collectd/types.db" batch-size = 5000 batch-pending = 10 batch-timeout = "10s" read-buffer = 0
此时 InfluxDB 仍然缺少 typesdb,我们直接通过如下命令下载:
mkdir /usr/local/share/collectd wget -P /usr/local/share/collectd https://raw.githubusercontent.com/collectd/collectd/master/src/types.db
最后开启 InfluxDB
systemctl start influxdb
创建一个数据库:
curl -i -XPOST http://localhost:8086/query -u collectd:qazxcdawfw45 --data-urlencode "q=CREATE DATABASE collectd"
配置 Grafana
Grafana 也像 InfluxDB 一样直接提供了预编译的安装包,因此也可以直接安装:
sudo apt-get install -y software-properties-common wget wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
如果不需要修改默认端口 3000 的话,直接启动 Grafana 即可:
systemctl start grafana
访问 http://ip:3000 初始化 Grafana 配置。
配置 Grafana 面板
首先添加一个数据源
如下图所示,填入数据库的 URL,用户名,密码,数据库名称,然后测试并保存该设置。
接下来就可以创建面板了:
在面板默认的仪表中,点击 Add Query 添加一个查询,从 ping_value 表中读取 type_instance=目标 IP 的数据,并提取 mean 平均值,stddev 标准差,使用 linear 插补数据采集间隔:
其余部分只要根据自己的需求进行设置即可。
小结
使用 Collectd InfluxDB Grafana 即可实现对系统资源,网络,服务器的监控,并提供一个相对友好的仪表界面,相对 NetData,这个方案可以自定义的部分更多,只是在数据库对接,图表绘制方面需要一些基本的设置,并且这套方案对系统资源的占用也并不是很高,M3 这样的 ARM 平台也可以很轻松的搞定。另外,这套方案也有 docker 版本,也是做类似的数据库对接即可使用。
参考文档
https://blog.didiyun.com/index.php/2019/03/21/grafana-collectd-influxdb/
https://medium.com/@cristianpb/system-monitoring-with-grafana-influxdb-et-collectd-7827969e1fe
https://www.vpsee.com/2015/03/a-modern-monitoring-system-built-with-grafana-collected-influxdb/