自愈脚本

告警脚本使用前提

首先需要夜莺 v7.0.0-beta.2.0.1 以上的版本,之前的版本也有告警自愈的能力,但之前的版本需要额外安装部署 ibex 模块,从这个版本开始就不需要单独的 ibex 模块了。

修改夜莺服务端的配置

在夜莺的配置文件:etc/config.toml 中搜索 Ibex,把 Enable 设置为 true:

脚本001

重启夜莺,让配置生效。此时通过 ss 或 netstat 命令可以看到夜莺服务端监听了 20090 端口。这是 categraf 拉取脚本任务、上报脚本结果的端口。

修改 categraf 的配置

categraf 的配置文件是 conf/config.toml。在 conf/config.toml 中搜索 ibex,把 enable 设置为 true,并正确配置夜莺服务端的地址和端口:

脚本002

如果你的机器量比较大,比如超过 10000 台,建议把 interval 调整的稍微大一些,比如 2500ms,要不然容易给服务端造成太大压力。servers 配置是个数组,配置所有的夜莺服务端的地址,如果你有多个夜莺服务端实例,categraf 启动的时候会自动探测,连到那个网络延迟最小的实例上,如果夜莺服务端实例挂了,categraf 会自动切换到另外一个实例上,保证高可用。

改完配置之后重启 categraf,让配置生效。

配置脚本

下面是一个重启 systemctl 守护进程服务的简单 shell 脚本,通过 stdin 读取进程名称,最后执行启动服务命令,这个脚本可以适配 systemctl 守护的大部分服务。 Python ]参考这里

脚本003

关联告警规则

配置好脚本后,需要将回调脚本地址配置到告警规则中。

脚本004

在告警规则回调地址中填写告警自愈回调地址

脚本005

查看自愈脚本执行记录

最后触发进程告警后,会自动调取脚本执行恢复启动进程命令。

脚本006