# 17.6 Telegraf、InfluxDB 与 Grafana 监控平台架构

系统监控是运维管理和性能优化的基础，通过实时采集、存储和可视化系统指标，可以实现故障预警、性能分析和容量规划等关键功能，为系统的稳定运行提供有力保障。

Telegraf、InfluxDB 与 Grafana 构成的 TIG 堆栈是业界广泛采用的开源监控解决方案，遵循数据采集、存储与可视化分离的设计原则，实现了模块化的监控架构。

其中 InfluxDB 作为时序数据库专门用于高效存储时间序列数据，Telegraf 作为插件化的采集代理负责指标收集，Grafana 则提供强大的可视化能力，三者协同工作构成完整的监控体系。

## InfluxDB 安装与配置

InfluxDB 是一款用于存储和分析时间序列数据的开源数据库。

### 安装 InfluxDB

使用 pkg 包管理器安装 InfluxDB 是最快捷的方式，执行以下命令即可完成安装：

```sh
# pkg install influxdb
```

或者使用 Ports 方式安装 InfluxDB，需要先进入对应的目录再执行编译安装命令。

```sh
# cd /usr/ports/databases/influxdb/ 
# make install clean
```

### 服务管理

安装完成后，需要设置 InfluxDB 服务开机自启并启动服务。

设置 InfluxDB 服务开机自启：

```sh
# service influxd enable
```

启动 InfluxDB 服务：

```sh
# service influxd start
```

### 修改 InfluxDB 配置

如需自定义配置，读者可以自行修改 InfluxDB 的配置文件 `/usr/local/etc/influxd.conf`。编辑该文件可实现自定义配置。

修改完成后请重启 InfluxDB 服务：

```sh
# service influxd restart
```

### 创建 InfluxDB 数据库

需要在 InfluxDB 中创建数据库和用户，供 Telegraf 使用。

```sql
# influx # 连接到 InfluxDB 数据库
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> CREATE DATABASE mydb -- 创建 InfluxDB 数据库
> CREATE USER username WITH PASSWORD 'password' -- 创建数据库用户及密码，此处用户名为 username，密码为 password
> SHOW DATABASES -- 查看数据库
name: databases
name
----
_internal
mydb
>
> quit -- 退出 InfluxDB shell
```

## Telegraf

Telegraf 是一个用于采集和报告指标的代理程序。本节将介绍如何安装和配置 Telegraf。

### 安装 Telegraf

使用 pkg 包管理器安装 Telegraf 是最快捷的方式，执行以下命令即可完成安装：

```sh
# pkg install telegraf
```

或者使用 Ports 方式安装 Telegraf，需要先进入对应的目录再执行编译安装命令。

```sh
# cd /usr/ports/net-mgmt/telegraf/ 
# make install clean
```

### 加入启动项

安装完成后，需要设置 Telegraf 服务开机自启。

设置 Telegraf 服务开机自启：

```sh
# service telegraf enable
```

此时不要启动 Telegraf 服务。

### 配置 InfluxDB 连接

目录结构：

```sh
/usr/local/
└── etc/
    ├── influxd.conf              # InfluxDB 配置文件
    └── telegraf.conf             # Telegraf 配置文件
```

需要配置 Telegraf 使其能够将采集的数据发送到 InfluxDB。这里使用的是 InfluxDB 1.8 版本。

需要在配置文件 `/usr/local/etc/telegraf.conf` 中进行修改如下：

```ini
# 配置 InfluxDB 连接信息，此处的内容应与上面配置的 InfluxDB 数据库账号和密码一致
[[outputs.influxdb]]        # 输出插件类型为 InfluxDB
  urls = ["http://127.0.0.1:8086"]  # InfluxDB 服务地址
  database = "mydb"                 # 要写入的数据库名称
  username = "username"             # 数据库用户名
  password = "password"             # 数据库密码
```

### 配置采集指标

需要配置 Telegraf 采集哪些系统指标。配置文件路径：`/usr/local/etc/telegraf.conf`：

这里将收集系统的 CPU、磁盘（disk）、磁盘 IO（diskio）、内存（memory）、交换空间（swap）等指标。下面是 Telegraf 配置文件中的部分内容，其中部分参数默认启用，部分参数需要手动取消注释。

详情参见：官方文档\[EB/OL]. \[2026-03-26]. <https://docs.influxdata.com/telegraf/v1.26/configuration/>，提供 Telegraf 完整配置参数及插件使用说明。

```ini
# 内存
[[inputs.mem]]

# swap
[[inputs.swap]]

# 磁盘
[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

# 磁盘 IO
[[inputs.diskio]]

# 进程
[[inputs.processes]]

# 系统（运行时长等）
[[inputs.system]]

# 网络
[[inputs.net]]
```

### 启动服务

所有配置完成后，可以启动 Telegraf 服务开始采集数据。

启动 Telegraf 服务：

```sh
# service telegraf start
```

## Grafana

Grafana 是一个开源的数据可视化和监控平台，用于将 InfluxDB 等数据源中的数据以图表形式展示。

### 安装 Grafana

使用 pkg 包管理器安装 Grafana 是最快捷的方式，执行以下命令即可完成安装：

```sh
# pkg install grafana
```

使用 Ports 方式安装 Grafana，需要先进入对应目录再执行编译安装命令。

```sh
# cd /usr/ports/www/grafana/ 
# make install clean
```

### 守护进程

安装完成后，需要设置 Grafana 服务开机自启并启动服务。

设置 Grafana 服务开机自启：

```sh
# service grafana enable
```

启动 Grafana 服务：

```sh
# service grafana start
```

### 登录 Grafana

Grafana 服务启动后，可以通过浏览器访问其 Web 界面进行配置。Grafana 的默认登录地址为 `http://localhost:3000`。

![Grafana 主页](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-c69d1c7dc5776ad635223c9612d7c34bf0fc75ca%2Fgrafana1.png?alt=media)

* 默认登录用户名和密码：
  * Username（用户名）：`admin`
  * Password（密码）：`admin`

![Grafana 登录页面](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-1945994711a9196d89a15a5edacb4591d38ed0b0%2Fgrafana2.png?alt=media)

登录后会要求修改密码。

### 配置数据源

需要在 Grafana 中配置数据源，使其能够从 InfluxDB 中读取数据。

* 登录后点击左上角的 **Connections** -> 选择 **Add new connection**

  ![grafana-datasource-add](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-dac8654a80a3165ff92b95979ee3d84e6be0a40f%2Fgrafana-datasource-add.png?alt=media)
* 在右边的输入框中输入 `InfluxDB` -> 选择搜索出来的 **InfluxDB**，点击

  ![choose-influxdb](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-f516d3b9876565ac2f0f642975cca39de78574ef%2Fgrafana-datasource-search.png?alt=media)
* 点击右上角的 **Add new data source** 按钮 -> 配置 InfluxDB 相关的内容。

  ![grafana-datasource-create](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-209318095c825a4229745186b1216b716777b71d%2Fgrafana-datasource-create.png?alt=media)
* 在数据源配置页面填写相关的 InfluxDB 连接信息，需配置内容如下：

  > **注意**
  >
  > 我们上面使用的是 InfluxDB 1.8，所以选择的查询语言必须选 `InfluxQL`（默认即是）

`URL` 输入：`http://localhost:8086`。

![grafana-influxdb-source-config1](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-62f648024aa1b7b6736f4df7546c78d86a3aea5f%2Fgrafana-influxdb-source-config1.png?alt=media)

在数据源配置中，Database 输入 `mydb`，User 输入 `username`，Password 输入 `password`（这些值在创建 InfluxDB 数据库时设置）。

![grafana-influxdb-source-config2](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-42db3c9caf19a9272a30471f0539bd298075f53a%2Fgrafana-influxdb-source-config2.png?alt=media)

点击 **`Save & Test`** 按钮保存配置。提示成功连接，并获取了数据：

![grafana-influxdb-source-config3](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-61208d0c24a90f3e66de15cbbc5008ae63df54b3%2Fgrafana-influxdb-source-config3.png?alt=media)

### 配置 Dashboard

数据源配置完成后，可以配置 Dashboard 来可视化展示监控数据。选择用于展示数据的 Dashboard，可以自行开发，也可以使用 [官方模板库](https://grafana.com/grafana/dashboards/) 中其他人开发的模板，提供丰富的社区贡献仪表板资源。

此处导入 id 为 [928](https://grafana.com/grafana/dashboards/928-telegraf-system-dashboard/) 的模版，该模板专为 Telegraf 系统监控设计，展示全面的系统指标。

* 导入模版，点击右上角的 **`+`** -> **`Import dashboard`** 进入导入模版页面。

  ![Grafana 导入模版](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-5f9abbfdb68059d0c0b6af2285e89dbd4ea0cd3b%2Fgrafana-dashboard-import.png?alt=media)
* 选择 `id` 为 `928` 的模版导入，输入 `928`，再点击“Load”。

  ![Grafana 选择 id](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-288e93a27569dbc70e1ebda2eb7a1ff31b4d448e%2Fgrafana-dashboard-import-config.png?alt=media)

  选择我们的数据库。

  ![Grafana 选择数据库](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-94c949f9519c98368b9888000271edda6e4ff4c6%2Fgrafana-dashboard-import-config2.png?alt=media)
* 模版最终效果

  ![Grafana 模版最终效果](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-5171152f91c751438279d969550fd3a3bfb668d3%2Fgrafana-dashboard-result.png?alt=media)

### 设置中文

依次进入 Home -> Administration -> General -> Default preferences -> Language，选择“简体中文”。

![Grafana 设置中文](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-8031cc9e42b4c64468ce9c37b21615b126d941e6%2Fgrafana4.png?alt=media)

## 故障排除与未竟事宜

在使用过程中可能会遇到一些问题，本节列出了一些常见的问题和待解决的事项。

### 内核、网络、CPU 相关信息均未显示

问题可能与 `/proc` 文件系统有关。

该问题有待进一步研究与解决。

## 课后习题

1. 重构 Telegraf 的简体中文翻译，贡献上游。
2. 配置 HTTPS 支持，并实现 SSL 自动签名。
3. 加固安全配置，使其能够面向互联网。
