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

一、部署ibex:
1、首先下载ibex,下载地址如下:
https://github.com/flashcatcloud/ibex/releases
2、创建执行目录,并解压缩文件,如下:
mkdir -p /usr/local/ibex
tar xf ibex-1.0.0.tar.gz -C /usr/local/ibex/
3、初始化sql,执行命令如下:
cd /usr/local/ibex/sql
mysql -u root -p < ibex.sql
4、修改etc目录下的server.conf,修改mysql地址和密码,如图:

修改agentd.conf配置文件,修改内容如下:

- Host字段的值一定要与本机安装的telegraf的hostname设置的一直,IP或者主机名都可,不一致执行命令会报错
- Servers:通过rpc服务连接到server服务,拉取要执行的任务
- 如果机器数量大于1000台,可适当调大Interval为2000或3000,可以减轻服务端压力
5、修改service下的服务启动文件,修改二进制文件目录,如图:

注:agent和server都要修改
cp /usr/local/ibex/etc/service/ibex-* /lib/systemd/system
6、执行命令启动,并设置开机自启,如下:
systemctl enable ibex-server --now
systemctl enable ibex-agentd --now
监听端口如下:

- server端口:10090
- server rpc端口:20090
- agentd端口:2090
二、配置告警自愈:
1、首先点击主界面的自愈脚本–创建,输入脚本内容后提交,可以看到脚本编号,如图:

2、创建完成后,在页面中可以看到脚本ID,如图:

3、在告警策略里的回调地址位置(最下面),配置如下:

注:回调地址后面的3,对应的就是脚本ID
4、手动将nginx停止后,观察自愈脚本执行历史如下:

再次查看Nginx进程,已经实现自愈
问题一:为什么ibex agentd中的Host的值要与telegraf中配置的hostname一致?
解答:ibex agentd与telegraf并无关系,但是在配置告警自愈脚本的时候,需要填写一个Host,也就是要执行的机器列表,此机器列表表示的就是要在哪个机器上执行,根据填写的IP或者hostname寻找到对应的ibex agentd机器来执行,这个位置可填写的内容有IP地址或者主机名,而此IP地址或者主机名恰恰是通过telegraf采集后上报过来的,在监控列表中可以看到对应的标识,因此,如果telegraf采集的是hostname,并且上报到服务端,那么自愈脚本中也要填写hostname的值,那么ibex agentd中也要填写对应的hostname,否则在执行脚本的时候会出现找不到机器,从而出现timeout的情况,一般情况下建议填写IP地址,可以更准确的知道是哪个机器的指标
问题二:多个机器都要执行自愈脚本怎么办?
解答:只需要在多台机器上部署ibex agentd即可,通过rpc统一通过一个服务端拉取任务
问题三:ibex server是否可以部署多个?
解答:可以部署多个,如高可用集群部署了多个n9e-server和n9e-webapi,那么可以对应多个ibex server,在agentd配置文件中,可以这样写:



