告警自愈脚本

夜莺( Nightingale )告警自愈脚本

告警脚本使用前提

首先需要夜莺 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

常见问题

Q1:自愈脚本和工作流里的 脚本执行(processor-script) 是什么关系?

A:

  • 自愈脚本:独立的脚本模板,可被告警规则在"自愈"区域选择,下发到目标机器执行;
  • 脚本执行处理器:工作流里的一个节点,对事件做转换 / 计算;脚本在 n9e Server 本机跑,不下发。

自愈脚本下发到目标机器,是远程执行;processor-script 在 Server 本机跑,是事件转换。

Q2:脚本执行需要目标机器装什么?

A:目标机器只要有 Categraf(ent 版)即可。Categraf 接收 n9e 下发的执行任务,调用本地 Shell 执行脚本。

Q3:可以传参数给脚本吗?

A:可以。在自愈脚本绑定到告警规则时配置参数 — 这些参数会作为环境变量传给脚本。脚本里 echo "$ALERT_RULE_NAME" 即可读取。

Q4:执行结果在哪看?

A:历史任务 页面查看每次执行的:

  • 目标机器列表 + 各机器执行状态;
  • 每台的 stdout / stderr 输出;
  • 退出码(0 成功 / 非 0 失败);
  • 执行耗时。

参考资料

更新时间 2025-03-13

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云