lala.im:Grafana+InfluxDB+Collectd搭建三网监控

運維技術·lala.im · 2019-02-07 · 101 人浏览

原文地址:https://lala.im/4953.html,請支持原作者!該處僅作轉載。

文章目录
前两天水了一篇Grafana+Prometheus搭建三网监控平台的文章,其实Prometheus最擅长的领域是监控K8S集群,监控PING值这些只是它附带的一些功能,并且在之前的实际使用过程中也可以发现通过blackbox_exporter采集到的ICMP数据使用Grafana展示出来有一些问题。
综合上述,其实有一个更好的方案可以实现三网监控,那就是InfluxDB+Collectd。InfluxDB是一个时间序列数据库,它的专长就是存储此类监控所产生的数据。而Collectd则扮演着数据采集的角色,它可以实时监控机器内的各项指标。
我们要做的就是通过Collectd采集到机器的ICMP数据,然后使用InfluxDB存储这些数据,最后通过Grafana绘制出这些数据的可视化图表并美观的展现出来。每个软件都发挥自己最擅长的领域,各尽其责,这套方案看上去就很美~
上两张监控图,你可以看到这套组合比使用Prometheus展现出来的图表数据更精准,另外经过一些DIY后还能展现出标准差/丢包率:

範例

範例
一般情况下,我们都是把Granfana和InfluxDB安装在同一台机器内,本文也是如此。
Granfana安装:
CentOS7:

wget https://dl.grafana.com/oss/release/grafana-5.4.3-1.x86_64.rpm 
sudo yum localinstall grafana-5.4.3-1.x86_64.rpm

Debian9:

wget https://dl.grafana.com/oss/release/grafana_5.4.3_amd64.deb 
sudo dpkg -i grafana_5.4.3_amd64.deb

启动:

systemctl start grafana-server
systemctl enable grafana-server

InfluxDB安装:
CentOS7:

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.3.x86_64.rpm
sudo yum localinstall influxdb-1.7.3.x86_64.rpm

Debian9:

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.3_amd64.deb
sudo dpkg -i influxdb_1.7.3_amd64.deb

启动:

systemctl start influxd
systemctl enable influxd

Collectd则是看你的需求来安装,你要监控本机就在本机装,要监控多台机器就在每台机器上都安装:
CentOS7:

yum -y install epel-release
yum -y install collectd*

Debian9:

apt -y install collectd

启动:

systemctl start collectd
systemctl enable collectd

安全在任何时候都是第一要素,首先我们需要给influxdb内的collectd插件新建一个身份验证文件:

mkdir -p /etc/collectd/ && echo "imlala: 设置你的密码" > /etc/collectd/auth_file

接着编辑influxdb的配置文件:

nano /etc/influxdb/influxdb.conf

找到collectd这段,将里面的配置信息修改为我这样的:

[[collectd]]
   enabled = true
   bind-address = ":25826"
   database = "collectd"
   security-level = "sign"
   auth-file = "/etc/collectd/auth_file"
   batch-size = 5000
   batch-pending = 10
   batch-timeout = "10s"
   read-buffer = 0

接着找到http段,开启HTTPAPI以及启用身份验证:

[http]
   enabled = true
   bind-address = ":8086"
   auth-enabled = true

注:在上面的这两个配置中我们分别启用了两个身份验证,第一个身份验证是用于collectd向influxdb写数据用的,如果不配置这个身份验证,那么只要有人知道你的influxdb数据库地址,任何人都可以通过collectd往你的数据库内写数据,这样会造成滥用。第二个身份验证是用于influxdb的HTTPAPI,不配置的话任何人都可以对你的数据库进行操作。
配置完成之后重启influxdb:

systemctl restart influxd.service

执行如下命令进入到数据库的查询shell:

influx

首先我们创建influxdb的管理员账户,这个也就是HTTPAPI身份验证的账户:

CREATE USER "imlala" WITH PASSWORD '设置你的密码' WITH ALL PRIVILEGES

接着我们创建一个名为collectd的数据库,用于存放监控数据:

CREATE DATABASE "collectd"

再创建一个名为collectd的普通用户:

CREATE USER "collectd" WITH PASSWORD '设置你的密码'

将普通用户授权给之前的collectd数据库:

GRANT ALL ON "collectd" TO "collectd"

完成之后quit退出来,influxdb的配置就完成了。
现在你需要在每台安装了Collectd的机器上修改配置文件,不同发行版存放的配置文件路径不同,Debian9:

nano /etc/collectd/collectd.conf

CentOS7:

nano /etc/collectd.conf

首先在这个配置文件内去掉如下两个插件的注释:

LoadPlugin network
LoadPlugin ping

因为默认的Collectd的配置文件注释掉了大部分内容,我们可以接着直接跳到文件的末尾,添加如下插件配置:
注:因WordPress编辑器转义,我在配置内插入了“去掉我”,你们配置的时候删掉这部分即可。

<去掉我Plugin "network">
        <去掉我Server "InfluxDB数据库IP" "25826">
                SecurityLevel Encrypt
                Username "imlala"
                Password "之前配置的Collectd插件密码"
        <去掉我/Server>
<去掉我/Plugin>
<去掉我Plugin "ping">
        Host "111.177.18.254"
        Host "125.65.80.5"
        Host "113.59.224.1"
        Host "122.194.78.21"
        Host "103.24.228.1"
        Host "140.206.244.241"
        Host "117.174.59.1"
        Host "120.210.204.1"
        Host "221.131.68.129"
        Interval 1.0
        Timeout 0.9
<去掉我/Plugin>

注:一个Host代表一个监控点,你想写多少就写多少,友情提示我这些IP都来自IPIP.NET。
完成之后重启:

systemctl restart collectd.service

接着你可以试着使用下面的命令去验证一下InfluxDB和Collectd的工作是否正常:

範例
如果正常的话,你就应该可以查询到数据库内的PING数据了:

範例
在之前我们已经把InfluxDB和Collectd都配置完成,那么现在就到了把数据展现出来的时候了。
Grafana在安装完成之后默认的访问端口是3000,默认的管理员账号密码均是admin,这些就不多说了。直接来到添加数据源这里,选择influxdb:

範例
按照如图填写配置:

範例
注:BasicAuth就是influxdb的HTTPAPI管理员账户。
如果正常点击保存测试后可以回显出如图内容:

範例
接下来创建新的面板并绘制图表,这个绘制方法和Prometheus是完全不同的,InfluxDB的方法是类似于SQL查询语句,比如我现在要把之前的PING数据都展示出来,那么正确的语句应该是:

範例
这部分太灵活了,说实话不好讲,反正你最好懂一点SQL相关的知识就行。实在不会就按照我上面这张图一个个对着选吧。
接下来有多少个监控项就添加几个查询语句,全部完成之后如图所示:

範例
接着点击Axes,修改Left Y轴单位为ms:

範例
其他选项你需要就设置,我建议在Legend内把Avg勾上,这样可以显示出平均值,不需要的话,直接保存就完成了一个图表的绘制了:

範例
如果是要绘制标准差则修改对应的语句为:ping_stddev
如果是绘制丢包率则修改对应的语句为:ping_droprate,并修改Left Y轴单位为:percent(0.0-1.0)。如果勾选了Avg记得取消掉。
参考文献:
https://collectd.org/wiki/index.php/Networking_introduction\nhttps://collectd.org/wiki/index.php/Plugin:Ping\nhttps://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/

運維技術 lala.im
Theme Jasmine by Kent Liao