Collectd InfluxDB Grafana 监控服务器延迟

IT, 其他
没有评论

最近由于对服务器延迟有监控的需求,于是研究了一下这套方案。这套方案首先在虚拟机中做过测试,最后直接部署在 Banana-pi M3 平台上,由于部署时需要使用的代码完全一致,因此以 M3 为例。以下是简单的过程记录:

配置 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/

, , ,
上一篇文章
静态编译笔记
下一篇文章
来自新世界 BDRip 制作的碎碎念

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Fill out this field
Fill out this field
请输入正确的电子邮件地址。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

菜单