Nightingale 夜莺监控系统 - 自愈篇(4)

Nightingale

Author:rab

官方文档:https://flashcat.cloud/docs/content/flashcat-monitor/nightingale/install/ibex/



前言

夜莺通过 ibex 模块做告警自愈脚本的下发执行,Ibex 是告警自愈功能依赖的模块,提供一个批量执行命令的通道,可以做到在告警的时候自动去目标机器执行脚本。与 n9e 一样,ibex 采用 C/S 架构,因此,ibex 包括 server 和 agentd 两个模块,agentd 周期性调用 server 的 rpc 接口,询问有哪些任务要执行,如果有分配给自己的任务,就从 server 拿到任务脚本信息,在本地 fork 一个进程运行,然后将结果上报给服务端。为了简化部署,server 和 agentd 融合成了一个二进制,就是 ibex,通过传入不同的参数来启动不同的角色。ibex 架构图如下:

install-ibex

官方说,这是物理机时代的产物,我认为并不一定,这得看你的实际业务场景,即便你是云场景,脚本自愈有时候也是必须的。

注意的是,ibex 并没有 Web UI,它只提供了 API 接口。服务端依赖于 MySQL,因此我们也需要部署其后端存储(MySQL)。

接下来,将演示通过自愈脚本实现 nginx 服务宕机后的重启功能。

一、部署

1.1 MySQL

1、MySQL 安装

注意:MySQL 我们就不需要再次安装了,沿用我们前面 n9e 的 MySQL 实例即可。

2、初始化 SQL

初始化 SQL 去其官方的 Github 去找:https://github.com/flashcatcloud/ibex

image-20240114172052985

上传 SQL 文件至服务器相关目录并执行 SQL 初始化:

mysql> source /opt/tools/ibex.sql

image-20240114172528110

3、验证

image-20240114172718636

4、创建一个 ibex 用户

CREATE USER 'ibex'@'%' IDENTIFIED BY '67by5DV7vK3fiygm';
GRANT ALL PRIVILEGES ON ibex.* TO 'ibex'@'%';
flush privileges;

1.2 Ibex Server

为了方便管理,我们 Ibex 服务端与 n9e 服务端推荐部署在同一节点(Host)上。

1、二进制包下载

地址:https://github.com/flashcatcloud/ibex/releases

image-20240114171341871

2、解压

tar xzf ibex-v1.2.0-linux-amd64.tar.gz -C /data/

3、配置

vim /data/ibex-v1.2.0-linux-amd64/etc/server.conf

# 20090是RPC远程过渡调用协议的端口,即agentd周期性调用server接口的端口

image-20240114173143292

数据库配置:

image-20240114173731756

4、启动

cat <<EOF >/etc/systemd/system/ibex-server.service
[Unit]
Description="ibex-server"
After=network.target

[Service]
Type=simple

ExecStart=/data/ibex-v1.2.0-linux-amd64/ibex server
WorkingDirectory=/data/ibex-v1.2.0-linux-amd64

Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=ibex-server

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start ibex-server.service
systemctl enable ibex-server.service
systemctl status ibex-server.service

image-20240114175835009

1.3 Ibex Agent

官方文档说了:为了简化部署,server 和 agentd 融合成了一个二进制,就是 ibex,通过传入不同的参数来启动不同的角色。

也就是说我们下载的 ibex 二进制包中只有一个可执行文件,即 ibex:

  • 如果你要启动服务端,运行:./ibex server
  • 如果你要启动客户端,运行:./ibex agentd

但是这里你会想到:是不是我所有的目标主机都得安装 Ibex agent 端呢?答案是显然的,但是官方为了方便,已经将客户端集成到了 Categraf 采集插件中了,也就是说你无需再在目标主机再次下载 ibex 安装包并执行 ./ibex agentd 安装客户端了,但前提是你的目标主机要有 Categraf 采集客户端。

20230524191231

接下来就是在 Categraf 中配置 Ibex。

vim /data/categraf-v0.3.45-linux-amd64/conf/config.toml

image-20240114175126110

如果你是边缘式下沉混杂部署,且中心与边缘是不同的 VPC,那需要填写 Ibex Server 的公网 IP 地址。

二、验证

2.1 n9e 上配置告警自愈

因为 n9e 发出的告警要与 Ibex 自愈服务有“联系”,才能实现告警自愈,说白了就是设置 n9e 触发告警后的回调地址。

Address:ibex-server 端的监听地址

BasicAuthUser:ibex-server 鉴权用户

BasicAuthPass:ibex-server 鉴权密码

Timeout:超时时间(s)

image-20240114180636607

2.2 创建自愈脚本

在对应的业务组中创建自愈脚本。

image-20240114180935146

image-20240114181447493

注意,上图中的 Host 机器列表,要对应下面的机器列表(也就是说你的机器要存在):

image-20240114181557154

OK,如下就是我们配置好的自愈脚本,注意其 ID,在回调地址中有用

image-20240114184057795

2.3 告警规则配置回调地址

1、找到对应的告警规则

image-20240114183752278

2、点击进去后配置回调地址

image-20240114183849345

回调地址说明:

${ibex}/1,其中 ${ibex} 表示获取 ibex 变量,其实就是要执行与 ibex 自愈的相关调用,1 表示要调用并执行 ID 为 1 的自愈脚本。

2.4 模拟 Nginx 故障

停掉 Nginx:

systemctl stop nginx.service

因为这个告警规则接入了钉钉,此时我的钉钉已经收到告警消息:

如下图,共有两条告警,说明触发告警后,执行了自愈脚本。

image-20240115102859978

我们来看看是否在告警后执行自愈脚本:

image-20240115103411515

点击进去:

可看到状态是 SUCCESS

image-20240115103442744

继续点击 stdout:

因为我的脚本中是一个启动命令,并没有标准输出,所以这里只显示了主机名

image-20240115103604445

总结

  • ibex 与 n9e 类似,是一个 C/S 架构,但是只提供 API 调用,没有 Web UI。
  • 告警自愈涉及三个模块:n9e(创建任务),ibex(ibex-sever,收集任务)和 categraf(ibex-agent,执行任务)。
  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值