本教程适用于以下操作系统版本
- Debian 12(Bookworm)
- Debian 11(Bullseye)
本页内容
- 先决条件
- 安装 InfluxDB 与 InfluxDB-CLIs
- 配置 InfluxDB-CLI
- 配置 UFW
- 通过 InfluxDB-CLI 配置 InfluxDB
- 通过 SSL/TLS 证书保护 InfluxDB
- 安装并配置 Telegraf
- 创建监控仪表盘
- 结论
InfluxDB 是一个用 Go 编写的开源时序数据库。它是一个高性能的时序平台,专为收集、存储、处理和可视化时序数据而设计。InfluxDB 是时序数据库的首选解决方案,它提供了一个高性能的时序数据引擎,并内置强大的 API 用于构建实时应用。InfluxDB 这一平台可用于运维监控、应用与服务器性能指标、IoT 传感器数据以及实时分析等场景。
在本指南中,你将通过 InfluxDB 搭建仪表盘监控,并经由 Telegraf 发送指标以实现系统监控。你将使用一台 Debian 11 服务器进行安装。本指南包含如何通过 TLS/SSL 证书保护 InfluxDB、通过 InfluxDB-CLI(命令行)配置 InfluxDB,以及用于向 InfluxDB 发送指标的基础 Telegraf 配置。
先决条件
要完成本指南,你需要满足以下要求:
- 一台 Debian 11 服务器——你可以为本次安装使用两台或三台不同的服务器。以下是使用多台服务器时的基本架构:server1 用作 InfluxDB 服务器,server2 用作将安装 Telegraf 的目标监控机。
- 一个具有 sudo/root 管理员权限的非 root 用户。
- server1 用作 InfluxDB 服务器。
- server2 用作将安装 Telegraf 的目标监控机。
安装 InfluxDB 与 InfluxDB-CLIs
InfluxDB 是一个开源的时序数据库,可部署在多种环境中,包括运行 Linux、Windows 和 macOS 的虚拟机,以及 Docker 和 Kubernetes 等容器化环境。
influxdb2-cli 提供了一个名为 ' influx ' 的命令行工具,可用于管理 influxdb 的管理任务,例如管理 buckets、organizations、users、tasks 等。
在第一步中,你将配置 influxdb 仓库,然后在系统中安装 influxdb 和 influxdb-cli 软件包。
首先,运行以下 apt 命令为你的 Debian 服务器安装一些软件包依赖项。当提示是否安装时,输入 y 并按 ENTER。
sudo apt install gnupg2 wget curl

接下来,运行以下命令下载 influxdb 仓库的 GPG 密钥。该 GPG 密钥将保存在 ' /etc/apt/trusted.gpg.d/influxdb.gpg '。
wget -q https://repos.influxdata.com/influxdb.key
echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | sha256sum -c && cat influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
现在通过以下命令将 influxdb 仓库添加到系统中。本示例中,你将通过 stable 分支仓库安装 influxdb。
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
之后,通过以下 apt 命令更新并刷新软件包索引。
sudo apt update

添加仓库并更新软件包索引后,运行以下 apt 命令安装 influxdb2 和 influxdb2-cli 软件包。撰写本文时,influxdb 的最新稳定版本为 v2.xx,influxdb-cli 为 v2.xx。
sudo apt install influxdb2 influxdb2-cli
当提示是否进行配置时,输入 y 并按 ENTER 继续。

influxdb2 和 influxdb2-cli 安装完成后,使用以下 systemctl 工具命令启动 influxdb 服务。
sudo systemctl start influxdb
最后,使用以下 systemctl 工具命令验证 influxdb 服务。
sudo systemctl is-enabled influxdb
sudo systemctl status influxdb
你应看到输出显示 influxdb 服务已启用,并将在启动时自动运行。influxdb 服务的状态为 running(运行中)。

influxdb 服务运行后,你可以继续进行 influxdb2-cli 的基本配置。
配置 InfluxDB-CLI
influxdb2-cli 提供了一个用于管理 influxdb 服务器的命令行工具——名为 ' influx '。你现在将验证 influxdb2-cli,并为 ' influx ' 命令配置 bash 自动补全。
要验证 influxdb2-cli,请在终端运行以下命令。第一条命令将检查 ' influx ' 命令的完整二进制路径,第二条命令将验证系统中已安装的 influxdb2-cli 版本。
which influx
influx version
你将看到类似以下截图的输出——' influx ' 命令位于 ' /bin/influx ',已安装的 influxdb2-cli 软件包版本为 v2.xx。

接下来,你将通过 '~/.bashrc' 配置文件为 'influx' 命令设置 bash 自动补全。
运行以下 influx 命令,将 bash 自动补全脚本生成到 '/etc/bash_completion.d/influx.sh '。然后,使用 chmod 命令使新生成的脚本 ' /etc/bash_completion.d/influx.sh ' 可执行。
sudo influx completion bash > /etc/bash_completion.d/influx.sh
sudo chmod +x /etc/bash_completion.d/influx.sh
接下来,通过以下 nano 编辑器命令打开 ' ~/.bashrc ' 配置文件。
sudo nano ~/.bashrc
在文件末尾添加以下配置。这样,你将加载多个目录中可用的 bash 脚本自动补全。
# enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi
完成后保存文件并退出编辑器。
接下来,运行以下命令重新加载 ' ~/.bashrc ' 配置并刷新当前 shell。
source ~/.bashrc
最后,在终端输入 ' influx ' 命令并按 TAB 键,获取 ' influx ' 命令的可用选项。
sudo influx TAB
随后你将看到类似以下的输出。

现在 influxdb 服务已运行且 influxdb2-cli 命令行已配置完成,你将配置 firewalld 并开始通过命令行 influxdb2-cli 配置 influxdb。
配置 UFW
默认情况下,influxdb 服务运行在端口 8086 上。该端口也用作 influxdb 接收来自 telegraf 的指标数据的端点。
在此步骤中,你将配置 ufw 防火墙,并在 ufw 防火墙上开放 influxdb 端口 ' 8086 '。
默认 Debian 安装中未安装 ufw 软件包。请通过以下 apt 命令安装 ufw。
sudo apt install ufw -y

安装 ufw 软件包后,运行以下 ufw 命令添加 OpenSSH 服务并启用 ufw 防火墙服务。
sudo ufw allow OpenSSH
sudo ufw enable
当提示确认时,输入 y 并按 ENTER。此时 ufw 服务应已启动并启用,将在系统启动时自动运行。

接下来,运行以下命令将端口 ' 8086 ' 添加到 ufw 防火墙。然后,验证 ufw 防火墙的当前状态。
sudo ufw allow 8086/tcp
sudo ufw status
你将看到类似以下截图的输出——ufw 防火墙状态为 active(活动),已启用 OpenSSH 服务和端口 ' 8086 '。

通过 InfluxDB-CLI 配置 InfluxDB
要使用 influxdb,你必须通过基于 Web 的管理界面或使用 influxdb2-cli 命令行对其进行配置。influxdb 的基本配置包含以下内容:
- Influxdb 管理员用户
- Influxdb 管理员密码
- 默认组织名称
- 默认 bucket/数据库
在此步骤中,你将通过 influxdb2-cli 软件包提供的 influx 命令来配置 influxdb。运行以下命令开始配置 influxdb。
sudo influx setup
现在系统会要求你输入 influxdb 的一些配置信息。输入 influxdb 安装的用户名和密码,以及默认组织名称和默认 bucket/数据库。
以下截图中的示例显示,influxdb 安装的用户为 ' jokic ',组织名称为 ' HW.IO ',默认 bucket 为 ' mybucket '。

influxdb 配置完成后,运行以下 influx 命令验证配置。
sudo influx user list
sudo influx auth list
你将看到类似以下截图的输出。' influx setup ' 命令还会为新管理员用户自动配置具有部分默认管理员权限的 token。

新管理员用户已创建且 token 已生成,你现在将通过 influxdb shell 和 Web 管理仪表盘登录来验证配置。
运行以下命令创建新的环境变量 'INFLUX_TOKEN '。请务必将 token 替换为你生成的 token。
export INFLUX_TOKEN=r_We-DLv_GY64klANaag1jVQ1iQ3oT3By7PLG1m6-TCO_kImk4q0IyKXLDIFs3jjCGG_P8Q0Y_nVwiNw9Vk5tQ==
现在通过以下 influx 命令访问 influxdb shell。
sudo influx v1 shell $INFLUX_TOKEN
登录后,你将收到类似 'Connected to InfluxDB OSS v2.5.1' 的消息。

运行以下查询,验证你的 influxdb 安装中的 buckets/数据库列表。以下终端界面显示 bucket ' mybucket ' 在 influxdb 中可用。
show DATABASES

现在输入 ' q ' 退出交互界面。然后输入 ' quit ' 退出 influxdb shell。
接下来,打开 Web 浏览器,访问你的服务器 IP 地址加默认端口 8086(例如:http://192.168.5.8086/ )。你将看到 influxdb 登录页面。
输入你的管理员用户名和密码,然后点击 'SIGN IN'(登录)。

现在你将进入 influxdb 管理仪表盘。

要验证 influxdb 中的 buckets/数据库列表,请点击 Load Data > Buckets,你将看到 bucket ' mybucket ' 在 influxdb 中可用。

至此,你已完成 influxdb 的基本安装与配置。接下来,你将通过 SSL/TLS 证书保护 influxdb,并更新 influxdb2-cli 的默认配置文件。
通过 SSL/TLS 证书保护 InfluxDB
influxdb 的安装可以通过多种方式在不同场景下进行保护。你可以为每个用户设置授权和权限,也可以通过 SSL/TLS 证书保护传输安全。
在此步骤中,你将使用 SSL/TLS 证书保护 influxdb,因此在配置 influxdb 之前,请确保已生成 SSL/TLS 证书。然后,你将更新 influxdb2-cli 上的默认配置文件。
在开始配置之前,运行以下命令创建一个新的目录 '/etc/influxdb/ssl' 用于存放 SSL/TLS 证书。
mkdir -p /etc/influxdb/ssl
将你的 SSL/TLS 证书的公钥和私钥复制到新目录 ' /etc/influxdb/ssl'。然后,将该 SSL/TLS 目录的所有权更改为用户 ' influxdb '。
cp *.pem /etc/influxdb/ssl/
sudo chown -R influxdb: /etc/influxdb/ssl
接下来,使用以下 nano 编辑器命令打开 influxdb 配置文件 '/opt/influxdb/config.toml'。
sudo nano /etc/influxdb/config.toml
添加以下配置行,用于定义 SSL/TLS 公钥和私钥的完整路径。
tls-cert = "/etc/influxdb/ssl/fullchain.pem" tls-key = "/etc/influxdb/ssl/privkey.pem"
完成后保存文件并退出编辑器。
现在运行以下 ' systemctl ' 命令工具,重启 influxdb 服务以应用新的更改。
sudo systemctl restart influxdb
在 influxdb 通过 SSL/TLS 证书运行于安全连接下时,你将无法通过 influx 命令与 influxdb 通信。
运行以下 influx 命令验证 influxdb2-cli 上的配置文件列表,并运行查询验证 influxdb 上的用户列表。
sudo influx config ls
sudo influx user list
你应看到类似 ' failed to list users: 400 Bad Request.. ' 的错误消息。

要解决此身份验证问题,你必须更新 ' default ' 配置文件,并将 influxdb 的默认 host/URL 更改为安全的 HTTPS 连接。
运行以下命令,将 ' default ' 配置文件更新为安全的 influxdb 主机 ' https://influxdb.howtoforge.local:8086 '。
sudo influx config set --active --config-name=default --host-url=https://influxdb.howtoforge.local:8086 --token=$INFLUX_TOKEN --org=HW.IO
现在通过以下 influx 命令验证更新后的 ' default ' 配置文件。
sudo influx user list
sudo influx auth list
现在你应该可以通过 influx 命令再次与 influxdb 通信。并且 influx 命令与 influxdb 之间的连接已通过 SSL/TLS 证书得到保护。

现在你已完成 influxdb 服务器的基本配置,可以开始设置 Telegraf 并向 influxdb 服务器发送系统指标了。
安装并配置 Telegraf
Telegraf 是由 influxdata 创建的时序平台的一部分。它是一个开源的、基于服务器的代理,用于从多种环境(如 IoT 传感器、数据库系统、系统遥测以及 DevOps 工具和框架)收集和发送指标与事件。Telegraf 被编译为单个二进制文件,使用 Go 编写,安装时无需外部依赖。
Telegraf 在 influxdb 仓库中默认可用。因此,如果你使用多台 Debian 服务器,必须将所有服务器都添加 influxdb 仓库。
在此步骤中,你将在 Debian 11 服务器上安装 Telegraf,然后配置 telegraf 向 influxdb 服务器发送指标。
运行以下 apt 命令在 Debian 服务器上安装 telegraf。请确保已添加 influxdb 仓库。
sudo apt install telegraf
此时 telegraf 安装应已在运行中。

telegraf 安装完成后,运行以下 systemctl 命令工具启动 telegraf 服务。
sudo systemctl start telegraf
现在使用以下 systemctl 命令工具验证 telegraf 服务,并确保该服务已启用且正在运行。
sudo systemctl is-enabled telegraf
sudo systemctl status telegraf
在终端界面中,你将看到类似以下截图的输出——telegraf 服务当前正在运行且已启用,这意味着 telegraf 服务将在系统启动时自动启动。

接下来,使用以下 nano 编辑器命令打开 telegraf 配置文件 '/etc/telegraf/telegraf.conf '。
sudo nano /etc/telegraf/telegraf.conf
取消注释 ' [[outputs.influxdb_v2]] ' 部分,并按照以下设置修改详细配置。请务必将 influxdb URLs 更改为安全的 HTTPS 连接,并修改 token、组织名称以及默认 bucket/数据库。
[[outputs.influxdb_v2]] # ## The URLs of the influxdb cluster nodes. ......... # ### ## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"] urls = ["https://influxdb.howtoforge.local:8086"] # # ## Token for authentication. token = "FlIq521ZVxEA40Iz7rVVKK25sDmuEWUHm_Mbly-4mYxt-rWrYOOytVnmE5yL5bpNB_gNHBWlYXKDED9PEbk-0g==" # # ## Organization is the name of the organization you wish to write to. organization = "HW.IO" # # ## Destination bucket to write into. bucket = "mybucket"
完成后保存文件并退出编辑器。
现在运行以下 systemctl 工具命令重启 telegraf 服务以应用更改。
sudo systemctl restart telegraf
telegraf 重启并应用更改后,接下来你将验证 telegraf 安装,可以通过 influxdb 管理仪表盘或 influxdb shell 进行验证。
返回 influxdb 管理仪表盘,点击 Data Explorer 菜单,并选择 bucket ' mybucket '。你应看到 influxdb 上已有一系列 telegraf 指标可用。

要从 influxdb shell 进行验证,请在 influxdb 终端服务器上运行以下命令。
sudo influx v1 shell
登录 influxdb shell 后,运行以下查询来验证 telegraf 指标。第一条查询用于切换到 bucket ' mybucket ',第二条查询用于显示该 bucket 上可用的列/measurements。
use mybucket
SHOW MEASUREMENTS
以下是你将在终端服务器上收到的类似输出——influxdb 服务器上已包含 telegraf 指标,包括 cpu、disk、diskio、kernel、mem、processes、swap 和 system。

你现在已验证 telegraf 服务器的指标在 influxdb 服务器上可用。这意味着 telegraf 的安装与配置已成功完成。

在最后一步,你将学习如何在 influxdb 上创建监控仪表盘,并利用 influxdb 服务器上可用的 telegraf 指标搭建一个新的监控系统。
创建监控仪表盘
在这最后一步,你将通过 influxdb 服务器和 telegraf 搭建一个新的仪表盘,用于监控系统遥测数据。你将创建 influxdb 仪表盘,并为系统监控设置 cells(单元格),可视化 telegraf 收集的指标。
点击 Dashboard 菜单,然后点击 ' Create Dashboard '(创建仪表盘)

在页面顶部输入仪表盘名称,本示例使用的仪表盘名称为 ' Test Dashboard '。
现在点击 ' ADD CELL '(添加单元格)以添加一个新的系统监控图表。

以下是内存监控图表。

系统负载监控。

目标服务器的运行时间(Uptime)。

目标系统上可用的 CPU 数量(X 个)。

最后是登录到目标机器的当前用户。

创建单元格后,以下是 influxdb 上系统监控仪表盘创建的示例结果。所有这些指标都由 telegraf 收集,并发送到 influxdb 服务器。

结论
在本教程中,你在 Debian 11 服务器上安装了 influxdb 时序数据库和 influxdb2-cli。你还使用 SSL/TLS 证书保护了 influxdb 安装,并通过 influxdb2-cli 的 'influx' 命令行配置了 influxdb 服务器。
此外,你还安装并配置了 telegraf,通过安全的 SSL/TLS 连接收集指标并发送到 influxdb 服务器。最后,你通过 influxdb 服务器和 telegraf 创建了系统监控仪表盘。
一切就绪后,你现在可以可视化你的系统和应用程序,并搭建监控仪表盘。你还可以设置 influxdb tasks(任务)、配置告警系统等。