Jay
Jay

Docker+Grafana+InfluxDB+Telegraf搭建VPS监控平台

之前用的是Serverstatus,比较简单的一款监控工具,今天来试一下好康点的Grafana套件。

Grafana介绍

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:

1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;

2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;

3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;

4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;

5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;

6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

安装

1.安装docker&docker compose

curl -sSL https://get.daocloud.io/docker | sh
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

2.编写docker-compose.yml

这里有两种方案,一种是Grafana和Influxdb安装在一台服务器,或者可以将Influxdb独立出来。我将Influxdb放到了白嫖的Azure Web APP Server上。下面是完整的一份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 #开启HTTP认证
            - INFLUXDB_DB=telegraf  #设置数据库名称
            - INFLUXDB_ADMIN_USER=admin #设置HTTP身份验证(Basic Auth)的账号
            - INFLUXDB_ADMIN_PASSWORD=password #设置HTTP身份验证(Basic Auth)的密码
            - 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_USER_PASSWORD设置数据库用户的密码。

上面检查完docker-compose up -d 启动即可

配置Grafana

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

https://blog.jay6.tech/wp-content/uploads/2020/06/1.png

URL填写你的Infludb的地址,如果你是上面那份配置文件启动的容器,url填http://influxdb:你设置的端口 打开Basic Auth 并在下方填入你的配置。

https://blog.jay6.tech/wp-content/uploads/2020/06/2.png

HTTP Method 选GET 点击Save&test,出现成功提示Grafana就配置完了。

Telegraf安装

Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。内存占用小,通过插件系统可轻松添加支持其他服务的扩展。

CentOS

cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

yum -y insall telegraf

Debian

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

Telegraf配置

vim /etc/telegraf/telegraf.conf

接下来的配置建议使用搜索功能呢

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

上面的urls里面填写Influxdb的地址,下面填写Influxdb里的数据库以及用户

[[inputs.net]]
  interfaces = ["eth0"]
  fieldpass = ["bytes_recv", "bytes_sent"]

这里的eth0填写你服务器的网卡名称,我只需要服务器的上下行,所以只需要bytes_recv&bytes_sent

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

vim /etc/telegraf/telegraf.d/ping.conf

[agent]
  interval = "20s"
  flush_interval = "20s"
  hostname = "US MULTLACOM"

[[inputs.ping]]
  urls = ["8.8.8.8"]
  count = 1
  ping_interval = 1.0
  timeout = 1.0

需要ping多少ip就加多少,顺便把下面的count改了。

重启telegraf并设置开机启动:

systemctl restart telegraf.service
systemctl enable telegraf.service

添加图表

1.PING监控

打开IP:3000(你的Grafana),添加dashboard。

按照下图方式构造查询语句

host后面填的是你上面Telegraf配置的hostname,当你正确配置客户端的Telegraf,等一会下拉列表就有你配置到的服务器。这里的url填写你配置的urls中的一个。

这里设置图表的名称和描述

Lines打开,这个时候如果数据库中有数据的话就能看到线了,下面的选项可开可不开,字面意思。

纵坐标单位选择ms,label可有可无,横坐标选择时间

Avg表示平均值,点击save保存。

如果有多个监控IP,只需要点击 Duplicate,并修改IP和描述即可。

如果有多个节点,只需要点击 Duplicate ,并修改hostname即可。

2.上行/下行监控

按照上图设置查询语句(单位在math那里进行换算,我这里采用bits/sec)

 

成品展示:

没有标签
首页      VPS      Docker+Grafana+InfluxDB+Telegraf搭建VPS监控平台

发表评论

textsms
account_circle
email

Jay

Docker+Grafana+InfluxDB+Telegraf搭建VPS监控平台
之前用的是Serverstatus,比较简单的一款监控工具,今天来试一下好康点的Grafana套件。 Grafana介绍 Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的…
扫描二维码继续阅读
2020-06-05