本页内容
- 先决条件
- 配置软件仓库
- 安装 Sensu Go Backend
- 配置 Sensu Go Backend
- 安装 Sensuctl 命令行工具
- 安装 Sensu Agent 在基于 RHEL 的发行版上安装 Sensu Agent 在基于 Debian 的发行版上安装 Sensu Agent
- 通过 Sensu Go Backend 和 Sensuctl 验证 Agent
- 创建用于系统监控的检查(Checks)
- 应用系统检查以监控 Agents/主机
- 结论
- 在基于 RHEL 的发行版上安装 Sensu Agent
- 在基于 Debian 的发行版上安装 Sensu Agent
Sensu 是一个开源的基础设施和应用程序监控系统,专为容器与非容器监控以及多云基础设施而设计。
Sensu 是一个可扩展、安全、集成的监控解决方案,适用于你的技术和服务器基础设施。它可以用于监控服务器、应用程序健康状况和服务,并通过第三方集成将告警通知发送到多个目标。
在本教程中,你将在 Rocky Linux 9 服务器上安装 Sensu 监控方案。此外,你还将安装并配置 Sensuctl,以便通过命令行终端管理 Sensu。
在本教程结束时,你还将在基于 RHEL 的发行版和基于 Debian 的发行版上安装 Sensu Agent。然后,你将通过 Sensu Agent 设置用于监控服务器的检查(checks)。
先决条件
要学习本教程,你需要满足以下要求:
- 一台运行 Rocky Linux 9 的 Linux 服务器。
- 一个具有 sudo/root 管理员权限的非 root 用户。
- SELinux 以 permissive 模式运行。
关于目标监控服务器,本示例使用 Rocky Linux 和 Debian 服务器。以下是本演示将使用的服务器详情:
Host IP Address Used as ----------------------------------------------- sensu-rock 192.168.5.45 Sensu Go Backend RPM-OS 192.168.5.80 Sensu Go Agent DEB-OS 192.168.5.85 Sensu Go Agent
就是这样。你可以开始安装 Sensu 了。
配置软件仓库
你要做的第一件事是启用 CRB(Code Ready Builder)仓库、添加 EPEL(Extra Packages for Enterprise Linux)仓库,然后通过 packagecloud.io 添加 Sensu 仓库。
在 Rocky Linux 9 上,crb 仓库等同于 CentOS 中可用的 PowerTools。运行以下 dnf 命令以启用 crb 仓库并安装 EPEL 仓库。
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release

启用 crb 并安装 EPEL 仓库后,运行以下命令将 Sensu 仓库添加到你的 Rocky Linux 服务器。这将自动在你的系统上配置 Sensu 仓库,你将使用的是 stable 分支的 Sensu 仓库。
curl -s https://packagecloud.io/install/repositories/sensu/stable/script.rpm.sh | sudo bash

通过输入以下 dnf 命令来验证系统上已启用的仓库列表。你应该会看到 crb、epel 和 sensu_stable 仓库已添加到你的 Rocky Linux 系统。
sudo dnf repolist

既然你已经添加了必要的仓库,就可以开始安装 Sensu 了。
安装 Sensu Go Backend
Sensu 是一个完整的规模化监控解决方案,可用于监控传统服务器、容器、应用程序和/或云应用。在安装 Sensu 之前,你必须了解 Sensu 包含三个组件,列表如下:
- Sensu Backend——Sensu 的主要组件,由嵌入式传输(transport)和 etcd 数据存储驱动。Sensu Backend 开放了用于与 Sensu Agent 通信的 WebSocket,以及用于与 sensuctl 通信的 HTTP API。此外,它还提供了一个可通过浏览器访问的 Web UI dashboard。
- Sensu Agent——这是一个轻量级客户端,将安装并运行在目标服务器上。Agent 会在目标服务器上生成状态和指标,并通过 WebSocket 将结果发送到 Sensu Backend。
- Sensu Workstation——这是你可以安装 Sensuctl 的本地计算机,或者你也可以从浏览器访问 Sensu Dashboard。
在本节中,你将在 Rocky Linux 服务器上安装并配置 Sensu Backend。
输入以下 dnf 命令将 'sensu-go-backend' 软件包安装到你的系统。当提示时,输入 y 确认并按 ENTER 继续。
sudo dnf install sensu-go-backend

安装 Sensu Backend 后,通过 curl 将 Sensu Backend 的示例配置下载到 '/etc/sensu/backend.yml'。然后,使用以下 nano 编辑器命令打开下载的文件。
sudo curl -L https://docs.sensu.io/sensu-go/latest/files/backend.yml -o /etc/sensu/backend.yml
sudo nano /etc/sensu/backend.yml
取消注释以下行。
cache-dir: "/var/cache/sensu/sensu-backend" config-file: "/etc/sensu/backend.yml" log-level: "debug" state-dir: "/var/lib/sensu/sensu-backend"
完成后保存并关闭文件 '/etc/sensu/backend.yml'。

接下来,运行以下 systemctl 命令以启动并启用 'sensu-backend' 服务。这样,Sensu Backend 应该会运行,并在系统启动时自动启动。
sudo systemctl start sensu-backend
sudo systemctl enable sensu-backend

运行以下 systemctl 命令验证 'sensu-backend' 服务,确保该服务正在运行并已启用。
sudo systemctl is-enabled sensu-backend
sudo systemctl status sensu-backend
输出 'enabled' 确认 Sensu Backend 将在系统启动时自动启动。而输出 'active (running)' 确认 Sensu Backend 当前正在运行。

现在你已经安装了 Sensu backend,并且它正在运行且已启用。接下来,你将初始化 Sensu 管理员用户并验证安装。
配置 Sensu Go Backend
在本节中,你将初始化 Sensu Backend 的管理员用户名和密码,通过 curl 和 Web 浏览器验证安装,并通过 firewalld 开放一些端口。
运行以下命令设置环境变量 'SENSU_BACKEND_CLUSTER_ADMIN_USERNAME' 和 'SENSU_BACKEND_CLUSTER_ADMIN_PASSWORD'。请务必将值替换为你自己的用户名和密码。
export SENSU_BACKEND_CLUSTER_ADMIN_USERNAME=adminsensu
export SENSU_BACKEND_CLUSTER_ADMIN_PASSWORD=SensuRocks
现在运行以下 'sensu-backend init' 命令来初始化你的 Sensu 安装。这样,你的 Sensu backend 管理员用户就创建好了。
sensu-backend init

接下来,运行以下命令安装 'jq' 软件包以将输出解析为 JSON。然后,运行 curl 命令验证 Sensu Backend 状态。Sensu backend 的 HTTP API 运行在默认端口 8080 上。
sudo dnf install jq
curl -s http://127.0.0.1:8080/health | jq .
输出 'Healthy: true' 确认 Sensu Backend 正在无错误地运行。

在访问 Sensu dashboard 之前,你必须在 firewalld 上开放端口。
输入以下 firewall-cmd 命令为 Sensu Backend 开放一些端口。然后,重新加载 firewalld 以应用更改。
sudo firewall-cmd --add-port={2379/tcp,2380/tcp,3000/tcp,6060/tcp,8080/tcp,8081/tcp} --permanent
sudo firewall-cmd --reload
通过以下命令验证 firewalld 上开放的端口列表。
sudo firewall-cmd --list-all

现在打开你的 Web 浏览器并访问服务器 IP 地址加端口 3000(例如:http://192.168.5.45:3000/)。你应该会看到 Sensu backend 的登录页面。
使用你的用户名和密码登录,然后点击 'SIGN-IN'。

成功后,你应该会进入 Sensu 管理 dashboard。

至此,你已经安装了 Sensu Backend,配置了管理员用户和密码,并成功从浏览器登录了 Sensu dashboard。下一步,你将安装 Sensuctl,然后通过 Sensuctl 连接到 Sensu Backend。
安装 Sensuctl 命令行工具
运行以下 dnf 命令安装 Sensuctl 命令。当提示时,输入 y 确认并按 ENTER 继续。
sudo dnf install sensu-go-cli

安装 Sensuctl 后,运行以下命令验证 Sensuctl 的二进制路径和版本。
which sensuctl
sensuctl --version
Sensuctl 的二进制路径位于 '/bin/sensuctl',安装的版本为 v6.9.1。

接下来,运行以下 'sensuctl' 命令来配置与你的 Sensu Backend 服务器的连接。
sensuctl configure
现在会要求你进行一些配置:
- 认证方式?username/password
- Sensu Backend API URL?Sensu API 默认运行在 http://127.0.0.1:8080
- 命名空间?default
- 首选输出格式?选择你想要的輸出格式——本示例为 json。
- 用户名?sensu 的 admin 用户
- 密码?sensu admin 用户的密码

完成后,运行以下命令验证连接的详细信息。
sensuctl config view
你将收到类似以下的输出——Sensuctl 已通过默认运行在 'http://127.0.0.1:8080' 的 HTTP API 连接到 Sensu Backend。

配置完 Sensuctl 后,你现在将为 Sensuctl 命令行启用自动补全功能。
运行以下 dnf 命令安装 'bash-completion' 软件包。
sudo dnf install bash-completion -y
安装 'bash-completion' 后,使用以下 nano 编辑器命令打开 '~/.bashrc' 文件。
sudo nano ~/.bashrc
将以下行添加到文件中。这将为 root 用户启用 'bash-completion'。
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 source <(sensuctl completion bash)
完成后保存并退出文件。
接下来,运行以下命令在当前会话中重新加载 '~/.bashrc' 文件。
source ~/.bashrc
通过输入 'sensuctl' 命令并按 TAB 键来验证自动补全。
sensuctl TAB
成功后,你应该会看到 'sensuctl' 命令可用的选项列表。

至此,你已经安装了 Sensuctl,通过 Sensuctl 连接到了 Sensu Backend 服务器,并配置了其自动补全。接下来,你将在 Rocky Linux 和 Debian 服务器上设置 Sensu Agent。
安装 Sensu Agent
在本节中,你将在两个不同的节点上安装并配置 Sensu Agent。你将在基于 RHEL 的发行版和基于 Debian 的发行版上安装 Sensu Agent。然后,将 Sensu Agent 设置为通过 WebSocket 连接到你已安装的 Sensu Backend 服务器。
现在,让我们开始吧。
在基于 RHEL 的发行版上安装 Sensu Agent
本示例使用一台基于 RHEL 或 CentOS 9 的 Rocky Linux 9 机器。要安装 Sensu Agent,你必须添加 Sensu 仓库并在 firewalld 上开放一些端口。
运行以下 firewall-cmd 命令开放一些端口。然后,重新加载 firewalld 以应用更改。
sudo firewall-cmd --add-port={3030/tcp,3030/udp,3031/tcp,8125/udp} --permanent
sudo firewall-cmd --reload
通过以下命令验证 firewalld 上已启用的端口列表。
sudo firewall-cmd --list-all
你应该会收到类似以下的输出:

接下来,输入以下 dnf 命令启用 crb 仓库并安装 EPEL 仓库。
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release
现在通过输入以下命令添加 Sensu 仓库。这将下载并运行 bash 安装脚本,自动完成仓库配置。
curl -s https://packagecloud.io/install/repositories/sensu/stable/script.rpm.sh | sudo bash
输出:

添加 Sensu 仓库后,运行以下 dnf 命令将 'sensu-go-agent' 软件包安装到你的系统。当提示时,输入 y 确认并按 ENTER 继续。
sudo dnf install sensu-go-agent
输出:

接下来,运行以下命令将 Sensu Agent 配置文件下载到 '/etc/sensu/agent.yml'。然后,使用以下 nano 编辑器命令打开配置文件 '/etc/sensu/agent.yml'。
sudo curl -L https://docs.sensu.io/sensu-go/latest/files/agent.yml -o /etc/sensu/agent.yml
sudo nano /etc/sensu/agent.yml
取消注释以下行,并务必将默认的 'name' 替换为系统主机名,将 'backend-url' 替换为 Sensu Backend 服务器的 WebSocket IP 地址。
在本示例中,系统主机名为 'RPM-OS',Sensu Backend 服务器 IP 地址为 '192.168.5.45'。
name: "RPM-OS" namespace: "default" ... backend-url: - "ws://192.168.5.45:8081" cache-dir: "/var/cache/sensu/sensu-agent" config-file: "/etc/sensu/agent.yml"
完成后保存文件 '/etc/sensu/agent.yml' 并退出编辑器。

现在运行以下 systemctl 命令以启动并启用 'sensu-agent' 服务。
sudo systemctl start sensu-agent
sudo systemctl enable sensu-agent
输出 'Create symlink ... => ...' 确认 Sensu Agent 已启用。

接下来,通过以下 systemctl 命令验证 'sensu-agent' 服务,确保该服务正在运行并已启用。
sudo systemctl is-enabled sensu-agent
sudo systemctl status sensu-agent
输出 'enabled' 确认 Sensu Agent 已启用,并将在系统启动时自动启动。Sensu Agent 的状态为 'active (running)'。

随着 Sensu Agent 在 'RPM-OS' 机器上运行,该 agent 将通过端口 8081 上的 WebSocket 连接到 Sensu Backend。
在基于 Debian 的发行版上安装 Sensu Agent
现在你将在基于 Debian 的发行版上安装 Sensu Agent,配置 UFW 防火墙,然后将 Sensu Agent 配置为连接到 Sensu Backend 服务器。
首先,你必须在系统上开放一些端口。在基于 Debian 的发行版上,你可以使用 ufw 来设置防火墙。
运行以下 apt 命令安装 ufw 防火墙。
sudo apt install ufw -y

安装完成后,运行以下 ufw 命令添加 OpenSSH 服务以及 Sensu Agent 将使用的一些端口。
sudo ufw allow OpenSSH
sudo ufw allow 3030/tcp
sudo ufw allow 3030/udp
sudo ufw allow 3031/tcp
sudo ufw allow 8125/udp
输出 'Rules updated' 确认新规则已添加到防火墙。
接下来,运行以下命令启动并启用 ufw 防火墙。当提示时,输入 y 确认并按 ENTER 继续。
sudo ufw enable

通过输入以下命令验证 ufw 上已启用的端口和应用程序列表。
sudo ufw status
你应该会收到类似以下的输出:

现在你已经准备好安装 Sensu Agent 软件包了。
运行以下 apt 命令在系统上安装基本依赖项。输入 y 确认并按 ENTER 继续安装。
sudo apt install debian-archive-keyring curl gnupg apt-transport-https

接下来,通过输入以下命令为基于 Debian 的发行版添加 Sensu 仓库。这将下载并运行 bash 安装脚本,自动完成仓库配置。
curl -s https://packagecloud.io/install/repositories/sensu/stable/script.deb.sh | sudo bash

添加仓库后,通过下面的 'apt install' 命令安装 'sensu-go-agent'。当提示时,输入 y 并按 ENTER。
sudo apt install sensu-go-agent

接下来,运行以下命令将 Sensu Agent 配置文件下载到 '/etc/sensu/agent.yml'。然后,使用以下 nano 编辑器命令打开配置文件 '/etc/sensu/agent.yml'。
sudo curl -L https://docs.sensu.io/sensu-go/latest/files/agent.yml -o /etc/sensu/agent.yml
sudo nano /etc/sensu/agent.yml
取消注释以下行,并务必将默认的 'name' 替换为系统主机名,将 'backend-url' 替换为 Sensu Backend 服务器的 WebSocket IP 地址。
在本示例中,系统主机名为 'DEB-OS',Sensu Backend 服务器 IP 地址为 '192.168.5.45'。
name: "DEB-OS" namespace: "default" ... backend-url: - "ws://192.168.5.45:8081" cache-dir: "/var/cache/sensu/sensu-agent" config-file: "/etc/sensu/agent.yml"
完成后保存文件 '/etc/sensu/agent.yml' 并退出编辑器。

现在运行以下 systemctl 命令以启动并启用 'sensu-agent' 服务。
sudo systemctl start sensu-agent
sudo systemctl enable sensu-agent
输出 'Create symlink ... => ...' 确认 Sensu Agent 已启用。

接下来,通过以下 systemctl 命令验证 'sensu-agent' 服务,确保该服务正在运行并已启用。
sudo systemctl is-enabled sensu-agent
sudo systemctl status sensu-agent
输出 'enabled' 确认 Sensu Agent 已启用,并将在系统启动时自动启动。Sensu Agent 的状态为 'active (running)'。

随着 Sensu Agent 在 'DEB-OS' 机器上运行,该 agent 将通过端口 8081 上的 WebSocket 连接到 Sensu Backend。
通过 Sensu Go Backend 和 Sensuctl 验证 Agent
至此,你已通过 Sensu Agent 将两台服务器 'RPM-OS' 和 'DEB-OS' 添加到了 Sensu 监控方案。在本节中,你将通过 Sensu backend dashboard 以及终端中的 Sensuctl 命令来验证这两台服务器。
回到 Sensu dashboard,你应该会看到 Sensu 上有三个可用的实体(entities)。

点击 'default' 命名空间,你应该会看到 'RPM-OS' 和 'DEB-OS' 已添加到 Sensu。

接下来,回到 Sensu Backend 终端服务器,运行以下 sensuctl 命令来验证 Sensu 上可用的实体列表。
sensuctl entity list --format tabular
你应该会收到两个已添加并可在 Sensu 上使用的实体 'RPM-OS' 和 'DEB-OS'。

创建用于系统监控的检查(Checks)
在 Sensu 中,checks(检查)是你定义想要监控内容的地方。检查的示例包括监控 CPU 使用率、内存使用率、磁盘使用率等等。Checks 是 Assets 的一部分,Assets 是可共享、可复用的动态运行时。
在本节中,你将创建用于监控 CPU 使用率、内存使用率和磁盘使用率的新检查。这些检查将用于监控 'RPM-OS' 和 'DEB-OS' 服务器。
在 Sensu 上创建检查的过程是先添加 Sensu assets,然后定义符合你需求的检查。所有这些过程都可以通过 Sensuctl 命令完成。
运行以下命令添加一个用于检查 CPU 使用率的 asset。
sensuctl asset add sensu/check-cpu-usage

现在运行以下命令创建一个名为 'check_cpu' 的检查,其订阅(subscription)为 'system',并使用运行时 asset 'sensu/check-cpu-usage'。你可以在 'command' 选项中调整设置。
sensuctl check create check_cpu \
--command 'check-cpu-usage -w 75 -c 90' \
--interval 60 \
--subscriptions system \
--runtime-assets sensu/check-cpu-usage

接下来,使用以下命令添加一个新的用于检查内存使用率的 asset。
sensuctl asset add sensu/check-memory-usage

运行以下命令创建一个名为 'check_mem' 的检查,其订阅为 'system',并使用运行时 asset 'sensu/check-memory-usage'。你可以在 'command' 选项中调整设置。
sensuctl check create check_mem \
--command 'check-memory-usage -w 80 -c 90' \
--interval 60 \
--subscriptions system \
--runtime-assets sensu/check-memory-usage

运行以下命令添加用于检查磁盘使用率的新 asset。
sensuctl asset add sensu/check-disk-usage

然后,使用以下命令创建一个用于检查磁盘使用率的新检查。这将创建一个名为 'check_disk' 的检查,其订阅为 'system',并使用运行时 asset 'sensu/check-disk-usage'。你可以在 'command' 选项中调整设置。
sensuctl check create check_disk \
--command 'check-disk-usage --include-fs-type "xfs,ext4" --exclude-fs-path "/boot" --warning 90 --critical 95' \
--interval 60 \
--subscriptions system \
--runtime-assets sensu/check-disk-usage

最后,运行以下命令验证 Sensu Backend 上可用的 asset 列表。你应该会看到多个可用于为多种系统架构创建检查的 asset。
sensuctl asset list --format tabular

现在通过输入以下命令验证你已创建的检查列表。你应该会看到三个检查 'check_cpu'、'check_mem' 和 'check_disk'。
sensuctl check list --format tabular

应用系统检查以监控 Agents/主机
既然你已经在 Sensu 上添加了检查,接下来你将通过修改每个实体并更改其订阅,将检查应用到实体/主机 'RPM-OS' 和 'DEB-OS' 上。
你所有的检查 'check_cpu'、'check_mem' 和 'check_disk' 都配置到了 'system' 订阅上。
首先,通过以下 sensuctl 命令查看实体列表。你应该会在列表中看到 'RPM-OS' 和 'DEB-OS' 服务器。
sensuctl entity list --format tabular
接下来,运行以下命令修改 'RPM-OS' 和 'DEB-OS' 实体。实体类(entity class)应为 'agent',然后添加订阅 'system'。输出 'Updated' 确认实体已更改。
sensuctl entity update RPM-OS
sensuctl entity update DEB-OS
输出:

现在回到 Sensu Dashboard,然后选择 'default' 命名空间。点击 Entities 菜单,你应该会看到 'system' 订阅已添加到 DEB-OS 和 RPM-OS。点击 'DEB-OS' 查看详细监控信息。你应该会看到 'system' 订阅上的所有检查都已应用。点击 'RPM-OS' 查看详细监控信息。你应该会看到 'system' 订阅上的所有检查都已应用。至此,你已经将检查应用到了 RPM-OS 和 DEB-OS 两台服务器。



结论
在本教程中,你已在 Rocky Linux 9 服务器上安装了 Sensu 监控方案。你已安装并初始化了 Sensu Backend 管理员用户,并且安装并配置了用于管理 Sensu backend 的 Sensuctl 命令行工具。
此外,你还通过 Sensu Agent 将两台主机(Rocky Linux 和 Debian 服务器)添加到了 Sensu。你还为监控系统添加了 assets、创建了 Sensu checks,并将检查应用到了目标主机监控。
有了这些基础,你现在可以通过 Sensu Agent 添加更多新主机。你也可以定义并创建新的检查、添加新的 Sensu assets,然后将检查应用到你的主机和应用程序。你现在可以从 Sensu 的官方文档中了解更多关于 Sensu 的内容。