“TIG” 是三个开源项目的首字母缩写,分别是 Telegraf、InfluxDB 和 Grafana。
Telegraf 是负责采集系统指标(比如 CPU 、内存使用率等)的代理程序,与 InfluxDB 同属 InfluxData 公司。
InfluxDB单机版
是免费的时间序列数据库(TSDB),常用于监控、埋点等数据的查询与存储。
Grafana 是一款数据可视化软件,能够将 InfluxDB 的数据转换为图表和可视化效果。
本文将介绍如何使用 Telegraf 采集系统的性能指标,并将数据存放到 InfluxDB 中,然后在 Grafana 进行可视化展示:
接下来我们将在 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 的左侧菜单中点击 Configuration > Data sources 选项:
在数据源页面中,点击 Add data source:
在选择面板中,搜索或者下拉选择 InfluxDB 作为数据源:
参考下图,配置数据源的名称、地址以及数据库连接等参数:
点击 Save & Test,确保数据源可以连接成功:
导入仪表板
打开 Grafana 官方的 Dashboards 页面,根据数据源和采集器来筛选社区提供的仪表板,同时按下载量排序:
选择第一个下载量最多的仪表板,进入详情页复制出仪表板 ID:
回到 Grafana,从左侧菜单中点击 Create > Import 选项:
在导入页面中,粘贴仪表板 ID,再点击 Load :
从下拉列表中选择刚刚创建的数据源,Import 即可:
如图所示,Grafana 将自动生成一个炫酷的监控面板:
至此,基于 TIG 架构的自动化监控平台,已成功搭建完成。
强啊
强啊