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

  • 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。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

接下来,运行以下命令将 Sensu stable 仓库添加到你的系统。这将下载一个 bash 脚本,它会自动为你的 Ubuntu 系统设置并配置 Sensu 仓库。

curl -s https://packagecloud.io/install/repositories/sensu/stable/script.deb.sh | sudo bash

你将收到类似如下的输出。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

在 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

现在安装应当开始。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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"

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

完成后保存文件并退出编辑器。

接下来,运行以下 systemctl 命令工具来启动并启用 Sensu Go Backend 服务 ' sensu-backend '。

sudo systemctl start sensu-backend
sudo systemctl enable sensu-backend

现在 ' sensu-backend ' 应当处于运行并已启用状态。此外,该服务将在系统启动时自动运行。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

通过以下 systemctl 命令验证 'sensu-backend' 服务状态。

sudo systemctl is-enabled sensu-backend
sudo systemctl status sensu-backend

你将收到类似如下的输出 —— ' sensu-backend ' 服务已启用且当前正在运行。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

随着 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 '。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

现在打开 Web 浏览器,访问服务器 IP 地址加上 TCP 端口 3000(即:http://192.168.5.100:3000)。你应当会看到 Sensu 登录页面。

使用初始化过程中设置的用户名和密码登录,并点击 ' SIGN-IN '。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

此外,你也可以通过 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' 且无错误。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

安装并配置 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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

在 ' 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 键,你应当会看到该命令的选项列表。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

在 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 服务器。

在 Ubuntu 22.04 服务器上安装部署 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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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"

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

完成后保存文件并退出编辑器。

接下来,运行以下 systemctl 命令工具来启动并启用 ' sensu-agent' 服务。该服务现在应当处于运行并已启用状态,这意味着服务将在系统启动时自动启动。

sudo systemctl start sensu-agent
sudo systemctl enable sensu-agent

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

现在通过以下命令验证 'sensu-agent' 服务,以确保服务正在运行。

sudo systemctl is-enabled sensu-agent
sudo systemctl status sensu-agent

你将收到类似如下的输出 —— ' sensu-agent ' 服务已启用,当前状态为运行中。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

最后,回到 Sensu 服务器终端,运行以下 'sensuctl' 命令来验证目标机器 'machine1' 在 Sensu 服务器上是否可用。

sensuctl entity list --format tabular

你将收到类似如下的输出 —— 目标机器 ' machine1 ' 已通过 Sensu Agent 添加到 Sensu 服务器。

在 Ubuntu 22.04 服务器上安装部署 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 '。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

现在运行以下 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 '

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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

sensuctl asset list

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

在 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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

运行以下命令创建一个 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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

运行以下命令创建一个 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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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

sensuctl check list

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

现在回到 Web 浏览器并访问 Sensu 管理 dashboard。确保你处于 ' default ' 命名空间中,然后点击 ' Entities '。

你应当看到目标机器 ' machine1 ' 已添加,状态为 OK。

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

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

在 Ubuntu 22.04 服务器上安装部署 Sensu 监控系统教程

你现已在 Sensu 服务器上创建并配置用于系统监控的 assets 和 checks。

结论

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