Grafana+InfluxDB基于D...
 
Notifications
Clear all

Grafana+InfluxDB基于Docker搭建VPS三网监控平台

1 Posts
1 Users
0 Likes
2,033 Views
(@taichi)
Member
Joined: 4 years ago
Posts: 408
Topic starter  

我大概一年多以前水过几篇搭建VPS三网监控平台的文章,当时用过的组合是:

1.Grafana+InfluxDB+Collectd

2.Grafana+Prometheus+blackbox_exporter

这次用到的是:Grafana+InfluxDB+Telegraf,并且为方便部署Grafana和InfluxDB这次直接用Docker。

Prometheus+blackbox_exporter的方案我当时部署起来用了没多久就放弃了,blackbox_exporter采集的数据貌似有点问题,不符合我的需求。

InfluxDB+Collectd其实还不错,但配置起来很麻烦,毕竟Collectd不是InfluxData亲生的。而Telegraf和InfluxDB都属于InfluxData旗下的产品,自然配置起来会方便很多。

InfluxData著名的TICK架构(Telegraf, InfluxDB, Chronograf, Kapacitor)全家桶说的就是它啦。当然我们这里是用Grafana代替了Chronograf,因为Chronograf和Grafana比起来的话,那差的可不是一点半点。

上一张预览图:

安装docker/docker-compose:

apt -y update
apt -y install curl
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

新建docker-compose:

mkdir -p /opt/pingmonitor && cd /opt/pingmonitor && nano docker-compose.yml

写入如下配置:

version: '3.5'

volumes: 
    grafana-data:
    influxdb-data:

services: 
    grafana:
        image: grafana/grafana
        container_name: grafana
        environment:
            - GF_AUTH_ANONYMOUS_ENABLED=true
        ports:
            - 3000:3000
        volumes:
            - grafana-data:/var/lib/grafana
        restart: unless-stopped

    influxdb:
        image: influxdb
        container_name: influxdb
        environment: 
            - INFLUXDB_HTTP_AUTH_ENABLED=true
            - INFLUXDB_DB=telegraf
            - INFLUXDB_ADMIN_USER=admin
            - INFLUXDB_ADMIN_PASSWORD=password
            - INFLUXDB_USER=telegraf
            - INFLUXDB_USER_PASSWORD=password
        ports:
            - 8086:8086
        volumes: 
            - influxdb-data:/var/lib/influxdb
        restart: unless-stopped

注:

1.GF_AUTH_ANONYMOUS_ENABLED是方便公开你的仪表板给别人访问。

2.INFLUXDB_ADMIN_PASSWORD设置HTTP身份验证的账号密码。

3.INFLUXDB_USER_PASSWORD设置数据库用户的密码。

确认无误后up起来即可:

docker-compose up -d

访问你的IP:3000打开Grafana,默认的管理员账号密码均是admin,登录进去之后添加数据源:

勾上BasicAuth并填写INFLUXDB的HTTP身份验证的账号密码:

接着填写数据库信息:

保存测试,没问题的话现在Grafana和InfluxDB就部署好了。

接下来在每台需要监控的VPS上安装Telegraf,Telegraf是用于监控主机系统的,不建议使用Docker安装,所以这里采用添加源的方式安装在每台机器上:

apt -y update && apt -y install apt-transport-https wget gnupg
wget -qO- https://repos.influxdata.com/influxdb.key | apt-key add -
echo "deb  https://repos.influxdata.com/debian  buster stable" | tee /etc/apt/sources.list.d/influxdb.list
apt -y update
apt -y install telegraf

其他系统,如CentOS可以参考官方的文档安装:

https://docs.influxdata.com/telegraf/v1.14/introduction/installation/

编辑telegraf的主配置文件:

nano /etc/telegraf/telegraf.conf

修改数据库连接信息,服务器IP是搭建InfluxDB机器的公网IP,注意这里的账号和密码不是数据库的而是InfluxDB的HTTP身份验证账号密码:

[[outputs.influxdb]]
  urls = ["http://服务器IP:8086"]
  database = "telegraf"
  username = "admin"
  password = "password"

接下来新建一个监控项目的配置文件:

nano /etc/telegraf/telegraf.d/ping.conf

写入如下配置:

[agent]
  interval = "20s"
  flush_interval = "20s"
  hostname = "iKoula G3930"

[[inputs.ping]]
  urls = ["219.148.253.225","58.49.233.254","183.56.167.125","60.16.96.1","103.38.43.1","122.194.47.117","211.137.47.109","117.174.59.1","120.237.53.17"]
  count = 5
  ping_interval = 1.0
  timeout = 1.0

注:

1.注意修改hostname用于区分不同的机器。

2.测试IP都来自ipip.net的路由追踪,每个IP的地理位置:

辽宁沈阳电信
219.148.253.225

湖北武汉电信
58.49.233.254

广东深圳电信
183.56.167.125

辽宁沈阳联通
60.16.96.1

湖南长沙联通
103.38.43.1

江苏镇江联通
122.194.47.117

辽宁沈阳移动
211.137.47.109

四川德阳移动
117.174.59.1

广东茂名移动
120.237.53.17

配置好了后启动重启telegraf/设置开机自启:

systemctl restart telegraf.service
systemctl enable telegraf.service

现在回到Grafana就可以新建仪表板了,由于没有现成的模板,这里只能自己手动创建一个了。

先来绘制PING值数据,按照下图的方式先把SQL查询语句构造出来:

图表这块选择Lines,Null value选择connected:

Left Y的单位选择ms:

勾选Avg显示出平均值:

设置该面板的标题和描述:

其他的可以根据自己的需求改,差不多保存就可以了。

接下来绘制标准差,之前已经创建好了一个面板,所以这次我们就可以直接偷懒复制出一个面板:

只需要把SELECT修改为field (standard_deviation_ms)即可:

其他的可以和之前的保持一致。

最后再来绘制一个丢包率,还是按照之前的老套路复制一个面板出来,把SQL查询语句改为:

Left Y的单位改为percent(0-100):

不同的主机还是按照之前的套路复制一个面板出来,更改一下SQL查询语句内的Host就能展现出数据了:

Telegraf默认还启用了CPU/Disk/Network/Kernel等其他数据的采集,有兴趣的话你也可以自己创建其他的仪表盘。


   
Quote
Share: