静看光阴荏苒
不管不顾不问不说也不念

Grafana+InfluxDB+Collectd搭建三网监控

前言

前两天水了一篇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

安全在任何时候都是第一要素,首先我们需要给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

现在你需要在每台安装了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数据了:

Grafana配置

在之前我们已经把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
https://collectd.org/wiki/index.php/Plugin:Ping
https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/

赞(3)
未经允许不得转载:荒岛 » Grafana+InfluxDB+Collectd搭建三网监控
分享到: 更多 (0)

评论 11

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    :neutral: 大佬新年好

    zturns4个月前 (02-07) Chrome 71.0.3578.89 Chrome 71.0.3578.89 iPhone iOS 12.1 iPhone iOS 12.1回复
    • 新年好。

      LALA4个月前 (02-08) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    不知道说点啥,大佬新年牛逼 :arrow:

    南黎4个月前 (02-09) Google Chrome 71.0.3578.99 Google Chrome 71.0.3578.99 Android 8.1.0 Android 8.1.0回复
  3. #3

    我要是把我的所有服务器都安装好要累死 :arrow:

    MintTang4个月前 (02-10) WebView 4.0 WebView 4.0 Android 6.0.1 Android 6.0.1回复
  4. #4

    按着顺序安装好几次了No package collectd available.谷哥上找了也不管用的·····(CENTOS 7)

    56734M4个月前 (02-17) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 先安装EPEL源才有这个包,另外要加*号安装,不然它只会安一个主程序的包,插件包都不会安装。

      LALA4个月前 (02-18) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  5. #5

    influxd老哥可能少写了个d

    56734M4个月前 (02-17) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  6. #6

    请问大佬 我需要监控多台vps 数据库那里请问怎么设置?请问是给每个vps的数据建立个数据库还是账户?

    Xiao1个月前 (05-15) Google Chrome 74.0.3729.131 Google Chrome 74.0.3729.131 Mac OS X  10.14.4 Mac OS X 10.14.4回复
    • 一个数据库就行了,要监控几台就在每台都装Collectd,展示数据的时候是通过hostname区分的。

      LALA1个月前 (05-16) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 好的 多谢大佬

        Xiao1个月前 (05-17) Google Chrome 74.0.3729.131 Google Chrome 74.0.3729.131 Mac OS X  10.14.4 Mac OS X 10.14.4回复

分享创造快乐

广告合作资源投稿