This website requires JavaScript.

使用 TIG 构建自动化监控平台

by  admin  

“TIG” 是三个开源项目的首字母缩写,分别是 TelegrafInfluxDBGrafana

Telegraf 是负责采集系统指标(比如 CPU 、内存使用率等)的代理程序,与 InfluxDB 同属 InfluxData 公司。
InfluxDB 单机版是免费的时间序列数据库(TSDB),常用于监控、埋点等数据的查询与存储。
Grafana 是一款数据可视化软件,能够将 InfluxDB 的数据转换为图表和可视化效果。

本文将介绍如何使用 Telegraf 采集系统的性能指标,并将数据存放到 InfluxDB 中,然后在 Grafana 进行可视化展示:

TIG 监控架构

接下来我们将在 Linux 系统中使用 Docker,容器化安装、部署各个应用。

准备工作

在此之前,先使用 docker pull 命令依次从 Docker Hub 拉取 InfluxDB、Telegraf、Grafana 的官方镜像:

$ docker pull influxdb:1.8.9
$ docker pull telegraf:latest
$ docker pull grafana/grafana:latest

InfluxDB 从 2.0 的版本开始也提供了数据可视化 UI,然而本文仍选择 Grafana 来做数据可视化,为降低学习成本,使用 InfluxDB 1.x 的最后一个版本 1.8.9。

考虑到容器与容器之间的网络是相互隔离的,再手动创建一个名称是 devops 的网络,为稍后的容器运行提供统一的网络环境:

$ docker network create devops

部署 InfluxDB

采用从主机挂载配置文件的方式运行容器,先生成 InfluxDB 的默认配置到 /etc/influxdb 目录:

$ docker run --rm influxdb:1.8.9 influxd config > /etc/influxdb/influxdb.conf

暴露 8086 端口,并将 InfluxDB 的持久化数据挂载到主机目录,然后使用默认配置运行容器:

$ docker run -d --name=influxdb --network=devops -p 8086:8086 \
    -v /var/lib/influxdb:/var/lib/influxdb \
    -v /etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
    --restart=always \
    influxdb:1.8.9 -config /etc/influxdb/influxdb.conf

--network=devops:将容器连接到刚刚创建的 devops 网络。

容器启动成功后,执行 docker exec 命令进入容器终端,紧接着输入 influx 连接到 InfluxDB:

$ docker exec -it influxdb bash
root@b321cd3221ef:/# influx
Connected to http://localhost:8086 version 1.8.9
InfluxDB shell version: 1.8.9

创建一个用户名和密码都是 telegraf 的数据库账户(仅作演示,可自行定义):

> CREATE USER telegraf WITH PASSWORD 'telegraf'
> SHOW USERS
user     admin
----     -----
telegraf false

再创建一个名称是 telegraf 的数据库,作为 Telegraf 采集系统指标的数据源:

> CREATE DATABASE telegraf
> SHOW DATABASES
name: databases
name
----
_internal
telegraf

至此,InfluxDB 的准备工作已经完成,连续执行两次 exit 命令退出即可。

部署 Telegraf

与 InfluxDB 的运行方式一致,也是从主机挂载配置文件。第一步生成默认配置到 /etc/telegraf 目录:

$ docker run --rm telegraf:latest telegraf config > /etc/telegraf/telegraf.conf

然后用 vim 编辑配置文件,找到 [[outputs.influxdb]] 节点,修改成刚才创建的数据库配置信息:

$ vim /etc/telegraf/telegraf.conf

[[outputs.influxdb]]
  urls = ["http://influxdb:8086"]
  database = "telegraf"
  username = "telegraf"
  password = "telegraf"

urls 参数的 host 地址为 InfluxDB 的容器名称,在同一网络下的容器互联都可以采用此方式。

最后在运行容器时,指定使用 devops 网络,并把 Telegraf 的配置文件挂载到容器中:

$ docker run -d --name=telegraf --network=devops \
    -v /etc/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
    --restart=always \
    telegraf:latest

Telegraf 启动成功后,再次连接到 InfluxDB,就可以看到已经采集的系统 CPU、硬盘等指标数据:

> USE telegraf
Using database telegraf
> SHOW MEASUREMENTS
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
> SELECT * FROM system LIMIT 2
name: system
time                host         load1 load15 load5 n_cpus n_users uptime   uptime_format
----                ----         ----- ------ ----- ------ ------- ------   -------------
1633346870000000000 05dbdcf21066 0     0      0.01  1      0       36018255 416 days, 21:04
1633346880000000000 05dbdcf21066 0     0      0.01  1      0       36018265 416 days, 21:04

安装 Grafana

Grafana 的安装比较简单,直接运行以下命令,暴露 3000 端口,并将配置文件挂载到主机:

$ docker run -d --name=grafana --user $(id -u) \
    --network=devops -p 3000:3000 \
    -v /var/lib/grafana:/var/lib/grafana \
    --restart=always \
    grafana/grafana:latest

--user $(id -u):使用当前(主机)用户身份运行容器(否则可能会因权限问题启动失败)。

打开浏览器访问 http://你的主机IP:3000,会自动跳转到 Grafana 登录页面,默认的用户名和密码都是 admin
首次登录时,会要求设置新的密码,重置完密码就可以进入 Grafana 主页了:

Grafana 主页

制作监控面板

经过前面几个步骤,我们已经准备好了系统指标数据以及可视化工具,接下来将开始自动化监控面板的制作。

添加数据源

从 Grafana 的左侧菜单中点击 Configuration > Data sources 选项:

配置 > 数据源

在数据源页面中,点击 Add data source

添加数据源

在选择面板中,搜索或者下拉选择 InfluxDB 作为数据源:

选择数据源

参考下图,配置数据源的名称、地址以及数据库连接等参数:

配置数据源

点击 Save & Test,确保数据源可以连接成功:

测试连接

导入仪表板

打开 Grafana 官方的 Dashboards 页面,根据数据源和采集器来筛选社区提供的仪表板,同时按下载量排序:

社区提供的仪表板

选择第一个下载量最多的仪表板,进入详情页复制出仪表板 ID:

复制仪表板 ID

回到 Grafana,从左侧菜单中点击 Create > Import 选项:

创建 > 导入

在导入页面中,粘贴仪表板 ID,再点击 Load

加载仪表板

从下拉列表中选择刚刚创建的数据源,Import 即可:

导入仪表板

如图所示,Grafana 将自动生成一个炫酷的监控面板:

System Dashboard


至此,基于 TIG 架构的自动化监控平台,已成功搭建完成。

相关推荐
  • Jenkins 多分支流水线构建标签
  • CentOS 7 安装 Blue Ocean
  • Certbot 申请免费 HTTPS 证书
  • SSH 免密登录 Linux 服务器
  • Docker Stack 部署博客站点
评论
  • 魏老哥小迷弟2号
    魏老哥小迷弟2号 魏老哥小迷弟2号

    强啊

  • 魏老哥小迷弟
    魏老哥小迷弟 魏老哥小迷弟

    强啊