使用 Collectd 和 InfluxDB 监控服务器延迟

一、功能介绍

通过配置 Collectd 定期 Ping 实现监控目标服务器延迟状态并存储在 InfluxDB 中。

二、操作流程

  1. 配置 Collectd

在大多数主流版本中 Collectd 都有自己的预编译包,因此 Ubuntu 可以直接安装:

sudo apt-get install collectd

简单修改一下 Collectd 的配置 /etc/collectd/collectd.conf

-#LoadPlugin network
+LoadPlugin network
+<Plugin network>
# 配置 InfluxDB 服务器地址和端口
+        Server "127.0.0.1" "25826"
+</Plugin>
+<Plugin "ping">
# 配置需要检测的服务器
+  Host "example.com"
+</Plugin>

通过这个设置,Collectd 会将数据通过 localhost:25826 通信,同时利用 ping plugin 就可以实现对服务器延迟的监控,多个服务器通过多条 Host “domain” 即可实现。

最后开启 Collectd

systemctl start collectd
  1. 配置 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 即可。