Sensu是一个开源的基础设施和应用监控系统,为容器和非容器监控以及多云基础设施而设计。
Sensu是一个可扩展的、安全的、集成的监控解决方案,适用于你的技术和服务器基础设施。它可以用来监控服务器、应用程序的健康状况和服务,并通过第三方集成向多个目标发送警报通知。
在本教程中,你将在Rocky Linux 9服务器上安装Sensu监控解决方案。除此之外,你还将安装和设置Sensuctl,它允许你通过命令行终端来管理Sensu。
通过本教程的结束,你还将在基于RHEL的发行版和基于Debian的发行版上安装Sensu Agent。然后,你将设置检查以通过Sensu Agent监控服务器。
至于目标监控服务器,这个例子使用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了。
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。
输入以下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管理员用户并验证安装。
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后端。
sudo dnf install sensu-go-cli
一旦Sensuctl安装完毕,运行下面的命令来验证Sensuctl的二进制路径和版本。
which sensuctl
sensuctl --version
Sensuctl的二进制路径在'/bin/sensuctl',安装的版本是v6.9.1。
接下来,运行下面的'sensuctl'命令来配置与你的Sensu后端服务器的连接。
sensuctl configure
现在会问你一些配置的问题:
完成后,运行下面的命令来验证细节连接。
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。
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后台。
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后端。
sensuctl entity list --format tabular
你应该收到两个实体'RPM-OS'和'DEB-OS'被添加到Sensu上并可用。
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
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两个服务器进行了检查。