This website requires JavaScript.

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

by  admin  

“TIG” 是三个开源项目的首字母缩写,分别是 Telegraf、InfluxDB 和 Grafana。

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号

    强啊

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

    强啊