本教程适用于以下操作系统版本

  • 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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

接下来,运行以下命令下载 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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

添加仓库并更新软件包索引后,运行以下 apt 命令安装 influxdb2 和 influxdb2-cli 软件包。撰写本文时,influxdb 的最新稳定版本为 v2.xx,influxdb-cli 为 v2.xx。

sudo apt install influxdb2 influxdb2-cli

当提示是否进行配置时,输入 y 并按 ENTER 继续。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

influxdb2 和 influxdb2-cli 安装完成后,使用以下 systemctl 工具命令启动 influxdb 服务。

sudo systemctl start influxdb

最后,使用以下 systemctl 工具命令验证 influxdb 服务。

sudo systemctl is-enabled influxdb
sudo systemctl status influxdb

你应看到输出显示 influxdb 服务已启用,并将在启动时自动运行。influxdb 服务的状态为 running(运行中)。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

接下来,你将通过 '~/.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

随后你将看到类似以下的输出。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

现在 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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

安装 ufw 软件包后,运行以下 ufw 命令添加 OpenSSH 服务并启用 ufw 防火墙服务。

sudo ufw allow OpenSSH
sudo ufw enable

当提示确认时,输入 y 并按 ENTER。此时 ufw 服务应已启动并启用,将在系统启动时自动运行。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

接下来,运行以下命令将端口 ' 8086 ' 添加到 ufw 防火墙。然后,验证 ufw 防火墙的当前状态。

sudo ufw allow 8086/tcp
sudo ufw status

你将看到类似以下截图的输出——ufw 防火墙状态为 active(活动),已启用 OpenSSH 服务和端口 ' 8086 '。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

通过 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 '。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

influxdb 配置完成后,运行以下 influx 命令验证配置。

sudo influx user list
sudo influx auth list

你将看到类似以下截图的输出。' influx setup ' 命令还会为新管理员用户自动配置具有部分默认管理员权限的 token。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

新管理员用户已创建且 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' 的消息。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

show DATABASES

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

现在输入 ' q ' 退出交互界面。然后输入 ' quit ' 退出 influxdb shell。

接下来,打开 Web 浏览器,访问你的服务器 IP 地址加默认端口 8086(例如:http://192.168.5.8086/ )。你将看到 influxdb 登录页面。

输入你的管理员用户名和密码,然后点击 'SIGN IN'(登录)。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

至此,你已完成 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.. ' 的错误消息。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

要解决此身份验证问题,你必须更新 ' 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 证书得到保护。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

现在你已完成 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 安装应已在运行中。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

telegraf 安装完成后,运行以下 systemctl 命令工具启动 telegraf 服务。

sudo systemctl start telegraf

现在使用以下 systemctl 命令工具验证 telegraf 服务,并确保该服务已启用且正在运行。

sudo systemctl is-enabled telegraf
sudo systemctl status telegraf

在终端界面中,你将看到类似以下截图的输出——telegraf 服务当前正在运行且已启用,这意味着 telegraf 服务将在系统启动时自动启动。

在 Debian 11 上安装 InfluxDB 与 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 指标可用。

在 Debian 11 上安装 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。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

在最后一步,你将学习如何在 influxdb 上创建监控仪表盘,并利用 influxdb 服务器上可用的 telegraf 指标搭建一个新的监控系统。

创建监控仪表盘

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

点击 Dashboard 菜单,然后点击 ' Create Dashboard '(创建仪表盘)

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

在页面顶部输入仪表盘名称,本示例使用的仪表盘名称为 ' Test Dashboard '。

现在点击 ' ADD CELL '(添加单元格)以添加一个新的系统监控图表。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

以下是内存监控图表。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

系统负载监控。

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

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

在 Debian 11 上安装 InfluxDB 与 Telegraf 时序数据库监控

结论

在本教程中,你在 Debian 11 服务器上安装了 influxdb 时序数据库和 influxdb2-cli。你还使用 SSL/TLS 证书保护了 influxdb 安装,并通过 influxdb2-cli 的 'influx' 命令行配置了 influxdb 服务器。

此外,你还安装并配置了 telegraf,通过安全的 SSL/TLS 连接收集指标并发送到 influxdb 服务器。最后,你通过 influxdb 服务器和 telegraf 创建了系统监控仪表盘。

一切就绪后,你现在可以可视化你的系统和应用程序,并搭建监控仪表盘。你还可以设置 influxdb tasks(任务)、配置告警系统等。