帮助中心
如何在Rocky Linux 9上安装Sensu监控解决方案



Sensu是一个开源的基础设施和应用监控系统,为容器和非容器监控以及多云基础设施而设计。

Sensu是一个可扩展的、安全的、集成的监控解决方案,适用于你的技术和服务器基础设施。它可以用来监控服务器、应用程序的健康状况和服务,并通过第三方集成向多个目标发送警报通知。

在本教程中,你将在Rocky Linux 9服务器上安装Sensu监控解决方案。除此之外,你还将安装和设置Sensuctl,它允许你通过命令行终端来管理Sensu。

通过本教程的结束,你还将在基于RHEL的发行版和基于Debian的发行版上安装Sensu Agent。然后,你将设置检查以通过Sensu Agent监控服务器。

前提条件


要学习本教程,你将需要以下条件:

  • 一台装有Rocky Linux 9的Linux服务器。
  • 一个具有sudo/root管理员权限的非root用户。
  • 一个在允许模式下运行的SELinux。

至于目标监控服务器,这个例子使用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 Package 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版本库,你将使用稳定分支的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后端


Sensu是一个完整的大规模监控解决方案,可用于监控传统的服务器、容器、应用程序和/或云应用程序。在安装Sensu之前,你必须知道Sensu上有三个组件,下面是列表:

  • Sensu后端 - Sensu的主要组件,由嵌入式传输和etcd数据存储提供动力。Sensu后端暴露了WebSocket,它将用于与Sensu代理通信,HTTP API将用于与sensuctl通信。此外,它还提供了一个Web UI仪表板,你可以通过浏览器访问。
  • Sensu Agent - 这是一个轻量级的客户端,将被安装并运行在目标服务器上。AN代理将在目标服务器上生成状态和指标,并通过WebSocket将结果发送到Sensu后台。
  • Sensu工作站 - 这是本地计算机,你可以在上面安装Sensuctl,或者你可以从浏览器访问Sensu仪表板。

输入以下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后端就应该运行了,并在系统启动时自动启动。

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后端将在系统启动时自动启动。输出'active (running)'确认Sensu后端目前正在运行。



现在你已经安装了Sensu后端,并且它正在运行和启用。接下来,你将初始化Sensu管理员用户并验证安装。

配置Sensu Go后端


在这一部分,你将初始化Sensu后台的管理员用户名和密码,通过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后端管理用户就被创建了。

sensu-backend init



接下来,运行下面的命令来安装'jq'包,用于将输出解析为json。然后,运行curl命令来验证Sensu后端状态。Sensu后端的HTTP API运行在默认的8080端口上。

sudo dnf install jq
curl -s http://127.0.0.1:8080/health | jq .

输出'Healthy: true'证实了Sensu后端正在运行,没有错误。



在访问Sensu仪表板之前,你必须在firewalld上打开端口。

输入以下firewall-cmd命令,为Sensu后台的一些端口置顶。然后,重新加载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



现在,打开你的网络浏览器,访问服务器的IP地址,然后是3000端口(即:http://192.168.5.45:3000/)。你应该得到Sensu后台的登录页面。

用你的用户名和密码登录,然后点击 "SIGN-IN"。



成功后,你应该会得到Sensu的管理仪表板。



这样,你现在已经安装了Sensu后台,配置了管理用户和密码,也成功地从浏览器登录到Sensu仪表板。在下一步,你将安装Sensuctl,然后通过Sensuctl连接到Sensu后端。

安装Sensuctl命令行


运行下面的dnf命令来安装Sensuctl命令。当出现提示时,输入y确认并按回车键继续。

sudo dnf install sensu-go-cli



一旦Sensuctl安装完毕,运行下面的命令来验证Sensuctl的二进制路径和版本。

which sensuctl
sensuctl --version

Sensuctl的二进制路径在'/bin/sensuctl',安装的版本是v6.9.1。



接下来,运行下面的'sensuctl'命令来配置与你的Sensu后端服务器的连接。

sensuctl configure

现在会问你一些配置的问题:

  • 认证方式? 用户名/密码
  • Sensu Backend API URL? Sensu API默认运行在http://127.0.0.1:8080。
  • 命名空间? 默认
  • 偏好的输出格式?选择你想要的输出格式--这个例子是json。
  • 用户名? Sensu的管理用户
  • 密码? Sensu管理用户的密码



完成后,运行下面的命令来验证细节连接。

sensuctl config view

你会收到类似这样的输出 - Sensuctl通过HTTP API连接到Sensu后端,默认运行在'http://127.0.0.1:8080'。



配置完Sensuctl后,你现在要启用Sensuctl命令行的自动完成功能。

运行下面的dnf命令来安装 "bash-completion "包。

sudo dnf install bash-completion -y

当'bash-completion'被安装后,使用下面的nano编辑器命令打开'~/.bashrc'文件。

sudo nano ~/.bashrc

在该文件中添加以下几行。这将为根用户启用 "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后端服务器,并且还配置了它的自动完成功能。接下来,你将在Rocky Linux和Debian服务器上设置Sensu Agent。

安装Sensu Agent


在这一部分,你将在两个不同的节点上安装和设置Sensu Agent。你将在基于RHEL的发行版和基于Debian的发行版上安装Sensu Agent。然后,设置Sensu Agent通过WebSocket连接到你所安装的Sensu后端服务器。

现在,让我们开始吧。

基于RHEL的发行版上的Sensu Agent

这个例子使用的是Rocky Linux 9机器,它是基于RHEL或CentOS 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 命令将 "sens-go-agent "软件包安装到你的系统中。当出现提示时,输入 y 确认,然后按 ENTER 键继续。

sudo dnf install sensu-go-agent

输出:



接下来,运行以下命令,将Sensu代理的配置文件下载到'/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后台服务器的WebSockt IP地址。

在这个例子中,系统主机名是'RPM-OS',Sensu后端服务器的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代理在'RPM-OS'机器上运行时,代理将通过WebSocket在8081端口连接到Sensu后台。

在基于Debian的发行版上的Sensu代理

现在你将在基于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

输出 "规则更新 "确认新的规则已添加到防火墙中。

接下来,运行以下命令,启动并启用ufw防火墙。当出现提示时,输入 "y "确认,然后按ENTER键继续。

sudo ufw enable



通过输入以下命令验证ufw上已启用的端口和应用程序列表。

sudo ufw status

你应该收到类似这样的输出:



现在你准备安装Sensu代理包。

运行下面的apt命令,在你的系统上安装基本的依赖项。输入y来确认,然后按回车键继续安装。

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并按回车键。

sudo apt install sensu-go-agent



接下来,运行以下命令,将Sensu代理的配置文件下载到'/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后台服务器的WebSockt 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代理在'DEB-OS'机器上运行时,代理将通过WebSocket在8081端口连接到Sensu后端。

通过Sensu Go后端和Sensuctl验证代理


在这一点上,你已经通过Sensu代理将两个服务器'RPM-OS'和'DEB-OS'添加到Sensu监控解决方案中。在这一节中,你将从Sensu后台仪表板和通过终端的Sensuctl命令来验证这两个服务器。

回到Sensu仪表板,你应该看到Sensu上有三个实体。



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



接下来,回到Sensu后台的终端服务器,运行下面的sensuctl命令来验证Sensu上可用的实体列表。

sensuctl entity list --format tabular

你应该收到两个实体'RPM-OS'和'DEB-OS'被添加到Sensu上并可用。



创建系统监控的检查


在Sensu上,检查是你定义你要监控的东西的地方。检查的例子是监控CPU的使用,内存的使用,磁盘的使用,以及更多。检查是资产的一部分,它是可共享和可重用的动态运行时间。

在这一节中,你将创建新的检查来监控CPU的使用,内存的使用,以及磁盘的使用。这些检查将被用于监控 "RPM-OS "和 "DEB-OS "服务器。

在Sensu上创建检查的过程是通过添加Sensu资产,然后根据你的需要定义检查。而这些过程都可以通过Sensuctl命令完成。

运行下面的命令,添加一个资产来检查CPU的使用率。

sensuctl asset add sensu/check-cpu-usage



现在运行下面的命令,创建一个检查 "check_cpu",订阅为 "system",并使用运行时授权 "sensu/check-cpu-usage"。你可以在 "命令 "选项中调整设置。

sensuctl check create check_cpu \
--command 'check-cpu-usage -w 75 -c 90' \
--interval 60 \
--subscriptions system \
--runtime-assets sensu/check-cpu-usage



接下来,使用下面的命令添加一个新的资产来检查内存使用情况。

sensuctl asset add sensu/check-memory-usage



运行下面的命令来创建一个检查 "check_mem",订阅者为 "system",并使用运行时授权 "sensu/check-memory-usage"。你可以在'命令'选项中调整设置。

sensuctl check create check_mem \
--command 'check-memory-usage -w 80 -c 90' \
--interval 60 \
--subscriptions system \
--runtime-assets sensu/check-memory-usage



运行下面的命令来添加新的资产来检查磁盘的使用。

sensuctl asset add sensu/check-disk-usage



然后,用下面的命令创建一个新的检查磁盘使用情况的检查。这将创建一个检查 "check_disk",订阅者为 "system",并使用运行时授权 "sensu/check-disk-usage"。你可以在 "命令 "选项中调整设置。

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后台的可用资产列表。你应该看到有多个资产可以用来为多个系统架构创建检查。

sensuctl asset list --format tabular



现在通过输入以下命令来验证你所创建的检查列表。你应该看到三个检查'check_cpu', 'check_mem', 和'check_disk'.

sensuctl check list --format tabular




将系统检查应用于监控代理/主机


现在你已经在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'实体。实体类别应该是'agent',然后添加订阅'system'。输出'Update'确认实体被修改。

sensuctl entity update RPM-OS
sensuctl entity update DEB-OS

输出:



现在回到Sensu仪表板,然后选择'默认'命名空间。点击实体菜单,你应该看到DEB-OS和RPM-OS中都添加了'系统'订阅。



点击'DEB-OS'以获得细节监控。你应该看到所有关于'system'订阅的检查都被应用了。



点击 "RPM-OS "来获得详细的监控。你应该看到所有关于 "系统 "订阅的检查都被应用了。



这样,你现在已经对RPM-OS和DEB-OS两个服务器进行了检查。

总结


在本教程中,你已经在Rocky Linux 9服务器上安装了Sensu监控方案。你已经安装并初始化了Sensu后台管理员用户,还安装并配置了用于管理Sensu后台的Sensuctl命令行。

除此之外,你还通过Sensu代理添加了两个主机(Rocky Linux和Debian Server)到Sensu。另外,你还为监控系统添加了资产,创建了Sensu检查,还将检查应用于目标主机监控。

考虑到这一点,你现在可以通过Sensu Agent添加新的更多主机。同时,你可以定义和创建新的检查,添加新的Sensu资产,然后将检查应用到你的主机和应用程序。现在你可以从Sensu的官方文档中了解更多关于Sensi的信息。

文章相关标签: Sensu Linux
购物车
业务咨询:
售后服务: