本教程适用于以下操作系统版本
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 16.04 (Xenial Xerus)
本页内容
- 先决条件
- 添加 Sensu 仓库
- 安装并配置 Sensu Go Backend
- 安装并配置 sensuctl
- 在目标机器上安装 Sensu Agent
- 设置监控系统的 Checks
- 结论
Sensu 是一款开源的基础设施和应用程序监控系统,专为容器和非容器监控以及多云基础设施而设计。
Sensu 是一套可扩展、安全且集成的监控解决方案,适用于你的技术和服务器基础设施。它可用于监控服务器、应用程序健康状态和服务,并通过第三方集成向多个目标发送告警通知。
在本指南中,你将在 Ubuntu 22.04 服务器上搭建 Sensu 监控解决方案。你还将安装并配置用于管理 Sensu 的 Sensu-go-client。最后,你将在目标主机上安装 Sensu Agent,以进行监控并为基本系统监控设置 Sensu checks。
先决条件
要完成本指南,你需要满足以下要求:
- 两台 Ubuntu 22.04 服务器 —— 第一台服务器用于安装 Sensu 监控解决方案,第二台服务器是要监控的目标服务器。
- 具有 sudo/root 管理员权限的非 root 用户。
以下是本指南将使用的服务器详细信息:
Hostname IP Address Used as -------------------------------------------------- sensugo-server 192.168.5.100 Sensu Server machine1 192.168.5.120 Target Monitoring
现在让我们开始安装。
添加 Sensu 仓库
Sensu 是一套安全且可扩展的监控解决方案,可安装在 Linux、macOS、Windows 和 FreeBSD 等多种操作系统上。Sensu 提供了自己的仓库,特别是面向基于 RHEL 和基于 Debian 的发行版。sensu 软件包通过 packagecloud.io 仓库提供。
在第一步中,你将在 Sensu 服务器和目标监控系统上都设置 Sensu 仓库。
首先,运行以下 apt 命令来更新软件包索引并安装一些基础软件包到系统中。
sudo apt update
sudo apt install wget curl gnupg2 apt-transport-https
当提示时,输入 y 确认并按 ENTER。

接下来,运行以下命令将 Sensu stable 仓库添加到你的系统。这将下载一个 bash 脚本,它会自动为你的 Ubuntu 系统设置并配置 Sensu 仓库。
curl -s https://packagecloud.io/install/repositories/sensu/stable/script.deb.sh | sudo bash
你将收到类似如下的输出。

在 sensu 仓库添加完成后,你现在可以开始在 Sensu 服务器上安装 Sensu Go,并在目标监控系统上安装 Sensu Agent。
安装并配置 Sensu Go Backend
Sensu Go Backend 是 Sensu 监控平台的主要组件。它提供了一个 Web 管理 dashboard 和 HTTP API,允许你通过命令行管理 Sensu,同时还提供 WebSocket,用于目标机器/agent 进行连接。
在开始之前,请确保你在 Sensu 服务器上运行以下所有命令。本示例中服务器主机名为 'sensugo-server'。
首先,运行以下 apt 命令来安装 Sensu Go backend。
sudo apt install sensu-go-backend
现在安装应当开始。

Sensu Go Backend 安装完成后,通过下面的 wget 命令将示例配置下载到 '/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"

完成后保存文件并退出编辑器。
接下来,运行以下 systemctl 命令工具来启动并启用 Sensu Go Backend 服务 ' sensu-backend '。
sudo systemctl start sensu-backend
sudo systemctl enable sensu-backend
现在 ' sensu-backend ' 应当处于运行并已启用状态。此外,该服务将在系统启动时自动运行。

通过以下 systemctl 命令验证 'sensu-backend' 服务状态。
sudo systemctl is-enabled sensu-backend
sudo systemctl status sensu-backend
你将收到类似如下的输出 —— ' sensu-backend ' 服务已启用且当前正在运行。

随着 Sensu Go Backend 的运行,接下来你将通过设置管理员密码并生成一些配置来初始化 Sensu Go Backend。
要初始化 Sensu Go Backend 安装,请运行以下命令创建新的环境变量,用于设置 Sensu 管理员用户和密码。
本示例将使用 ' sensuadmin ' 作为用户,' sensupassword ' 作为密码。因此,请务必更改管理员用户和密码。
export SENSU_BACKEND_CLUSTER_ADMIN_USERNAME=sensuadmin
export SENSU_BACKEND_CLUSTER_ADMIN_PASSWORD=sensupassword
现在运行以下 'sensu-backend' 命令来初始化 Sensu Go Backend 安装。
sensu-backend init
你将收到类似如下的输出 —— Sensu Go Backend 现已初始化,并运行在默认端口 ' 3000 '。

现在打开 Web 浏览器,访问服务器 IP 地址加上 TCP 端口 3000(即:http://192.168.5.100:3000)。你应当会看到 Sensu 登录页面。
使用初始化过程中设置的用户名和密码登录,并点击 ' SIGN-IN '。

登录后,你应当会看到 Sensu 管理 dashboard。至此你已完成 Sensu Go Backend 的安装。

此外,你也可以通过 Sensu API 验证 Sensu Go Backend 服务器的健康状态。
通过下面的 apt 命令将 ' jq ' 软件包工具安装到系统中。
sudo apt install jq -y
现在运行以下 curl 命令以访问运行在默认端口 ' 8080 ' 上的 Sensu Server API。该命令将检查你的 Sensu 服务器的健康状态,然后输出将被格式化为 json,使输出更具可读性。
curl -s http://127.0.0.1:8080/health | jq .
输出 —— 在以下输出中 'Healthy: true' 且无错误。

安装并配置 sensuctl
在 Sensu Go Backend 安装并配置完成后,你将在 Sensu 服务器上安装 Sensu Go Client。Sensu Go Client 提供了一个命令行工具 'sensuctl',允许你通过终端服务器管理 Sensu。
'sensuctl' 的工作方式是通过 API 与 Sensu 服务器通信,以在 Sensu 服务器上创建、读取、更新和删除资源、事件和实体。
运行以下 apt 命令来安装 Sensu Go Client。安装现在应当开始。
sudo apt install sensu-go-cli

在 ' sensu-go-cli' 安装完成后,使用下面的 nano 编辑器命令打开 '~ /.bashrc ' 文件。
nano ~/.bashrc
将以下行添加到该行的末尾。此配置将为 'sensuctl' 命令启用自动补全。
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 ' 文件来重载当前会话。然后使用 'sensuctl' 命令进行验证。
source ~/.bashrc
sensuctl TAB
如果在 ' sensuctl ' 命令后按 TAB 键,你应当会看到该命令的选项列表。

在 Sensu Go Client 安装完成后,你现在开始配置到 Sensu 服务器的连接。
运行以下 ' sensuctl configure ' 命令来添加 Sensu 服务器。
sudo sensuctl configure
你现在将被询问一些配置项:
- 认证方式? username/password
- Sensu Backend API URL? Sensu API 默认运行在 http://127.0.0.1:8080
- Namespace? default
- 首选输出格式? 选择你需要的输出格式 —— 本示例为表格形式。
- Username? sensu 的管理员用户
- Password? sensu 管理员用户的密码
在 ' sensuctl ' 配置完成后,运行以下命令来验证当前的配置详情。
sudo sensuctl config view
你将收到类似如下的输出 —— Sensu Go Client 现已通过默认运行在 localhost:8080 的 HTTP API 连接到 Sensu 服务器。

至此,你已完成 Sensu Go Backend 和 Sensu Go Client 的基本配置。在下一步中,你将通过 Sensu Agent 监控目标机器。
在目标机器上安装 Sensu Agent
Sensu Agent 是一个轻量级客户端,运行在你想要监控的目标机器上。它通过 WebSocket 与 Sensu 服务器通信,具有自注册、发送 keepalive 消息和执行监控 checks 等功能。
在开始之前,请确保已添加 Sensu 仓库。同时,请确保在目标机器上运行以下命令,本示例使用主机名为 ' machine1 ' 的服务器。
运行以下 apt 命令将 Sensu Agent 安装到你的系统。安装应当自动进行。
sudo apt install sensu-go-agent

Sensu Agent 安装完成后,通过 curl 命令将 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 是运行在默认端口 ' 8081 ' 上的 Sensu 服务器的 WebSocket 地址。
在本示例中,目标机器的主机名为 ' machine1 ',Sensu 服务器的 IP 地址为 ' 192.168.5.100 '。
name: "machine1" namespace: "default" ... backend-url: - "ws://192.168.5.100:8081" cache-dir: "/var/cache/sensu/sensu-agent" config-file: "/etc/sensu/agent.yml"

完成后保存文件并退出编辑器。
接下来,运行以下 systemctl 命令工具来启动并启用 ' sensu-agent' 服务。该服务现在应当处于运行并已启用状态,这意味着服务将在系统启动时自动启动。
sudo systemctl start sensu-agent
sudo systemctl enable sensu-agent

现在通过以下命令验证 'sensu-agent' 服务,以确保服务正在运行。
sudo systemctl is-enabled sensu-agent
sudo systemctl status sensu-agent
你将收到类似如下的输出 —— ' sensu-agent ' 服务已启用,当前状态为运行中。

最后,回到 Sensu 服务器终端,运行以下 'sensuctl' 命令来验证目标机器 'machine1' 在 Sensu 服务器上是否可用。
sensuctl entity list --format tabular
你将收到类似如下的输出 —— 目标机器 ' machine1 ' 已通过 Sensu Agent 添加到 Sensu 服务器。

现在目标机器 'machine1' 已添加到 Sensu 服务器,接下来你将设置用于基本系统监控的 checks。
设置监控系统的 Checks
在 Sensu 中,checks 用于定义你想要监控的内容。checks 的示例包括监控 CPU 使用率、内存使用率、磁盘使用率等等。Checks 是 Assets 的一部分,Assets 是可共享、可重用的动态运行时。
在这一步中,你将创建用于监控 CPU 使用率、内存使用率和磁盘使用率的新 checks。这些 checks 将用于监控目标机器 ' machine1 '。
首先,运行以下 sensuctl 命令来更新实体或目标机器 ' machine1 '。
sensuctl entity update machine1
class 应为 ' agent ',Subscription 应为 ' System '。

现在运行以下 sensuctl 命令工具,向你的 Sensu 服务器添加 assets。你可以从 Sensu asset hub https://bonsai.sensu.io 获取其他 Sensu asset。
sensuctl asset add sensu/check-cpu-usage
sensuctl asset add sensu/check-memory-usage
sensuctl asset add sensu/check-disk-usage
你将收到类似如下的输出。
正在添加 runtime asset ' sensu/check-cpu-usage '

正在添加 runtime asset ' sensu/check-memory-usage '。

正在添加 runtime asset ' sensu/check-disk-usage '。

接下来,通过下面的 sensuctl 命令验证 Sensu 服务器上的 asset 列表。你应当看到这些 runtime assets 已被添加到 Sensu 服务器。
sensuctl asset list

在 Sensu assets 添加完成后,你将根据已添加的 asset 创建 checks。
运行以下命令创建一个 check 'check_cpu',订阅为 ' system ',并使用 runtime 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

运行以下命令创建一个 check ' check_mem ',订阅为 'system',并使用 runtime 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

运行以下命令创建一个 check 'check_disk',订阅为 ' system ',并使用 runtime 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

现在通过以下 'sensuctl' 命令工具验证 Sensu 服务器上的 checks 列表。你将看到你创建的三个 checks:check_cpu、check_mem 和 check_disk。
sensuctl check list

现在回到 Web 浏览器并访问 Sensu 管理 dashboard。确保你处于 ' default ' 命名空间中,然后点击 ' Entities '。
你应当看到目标机器 ' machine1 ' 已添加,状态为 OK。

点击 ' machine1 ' 以查看详细监控信息。你应当会看到类似如下的页面 —— 你创建的所有 checks 都已执行并正在运行。

你现已在 Sensu 服务器上创建并配置用于系统监控的 assets 和 checks。
结论
你现已在 Ubuntu 22.04 服务器上安装了 Sensu 监控解决方案。你还学习了用于管理 Sensu backend 的 Sensuctl 命令的基本用法。此外,你已通过 Sensu Agent 成功监控了 Linux 主机,并为监控目标服务器设置了 "assets" 和 "checks"。