注意: 夜莺v7版本已内置故障自愈, 只需要更给n9e下的config.yaml 文件有关ibex配置即可
所谓的告警自愈,典型手段是在告警触发时自动回调某个 webhook 地址,在这个 webhook 里写告警自愈的逻辑,夜莺默认支持这种方式。另外,夜莺还可以更进一步,配合 ibex 这个模块,在告警触发的时候,自动去告警的机器执行某个脚本,这种机制可以大幅简化构建运维自愈链路的工作量,毕竟,不是所有的运维人员都擅长写 http server,但所有的运维人员,都擅长写脚本。这种方式是典型的物理机时代的产物,希望各位朋友用不到这个工具(说明贵司的IT技术已经走得非常靠前了)
ibex 包括 server 和 agentd 两个模块,agentd 周期性调用 server 的 rpc 接口,询问有哪些任务要执行,如果有分配给自己的任务,就从 server 拿到任务脚本信息,在本地 fork 一个进程运行,然后将结果上报给服务端。为了简化部署,server 和 agentd 融合成了一个二进制,就是 ibex,通过传入不同的参数来启动不同的角色。ibex 架构图如下
项目地址
- Repo:https://github.com/flashcatcloud/ibex
- Linux-amd64 有编译好的二进制,在这里
2.1 夜莺服务端
1.初始化SQL
# 如果解压压缩包后没有存在SQL,则去Github上自己拉取
# https://github.com/flashcatcloud/ibex/blob/master/sql/ibex.sql
mysql -uroot -ppassword < sql/ibex.sql
2.创建一个 ibex 用户(可以创建相关用户)
CREATE USER 'ibex'@'%' IDENTIFIED BY 'ibex@1234';
GRANT ALL PRIVILEGES ON ibex.* TO 'ibex'@'%';
flush privileges;
3.部署ibex_server
为了方便管理,我们 Ibex 服务端与 n9e 服务端推荐部署在同一节点(Host)上
项目地址:
https://github.com/flashcatcloud/ibex/releases
# 下载源码包后解压
vim ../ibex/etc/server.conf
# 将里面的MySQL数据库用户名/密码更改成本机数据库的用户名/密码
使用systemctl 管理 ibex.service
[Unit]
Description="ibex.service"
After=network.target[Service]
Type=simple
ExecStart=/data/ibex/ibex server
WorkingDirectory=/data/ibex
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=ibex.service
[Install]
WantedBy=multi-user.target
4.ibex_agent
为了简化部署,server 和 agentd 融合成了一个二进制,就是 ibex,通过传入不同的参数来启动不同的角色.也就是说我们下载的 ibex 二进制包中只有一个可执行文件,即 ibex:
- 如果你要启动服务端,运行:./ibex server
- 如果你要启动客户端,运行:./ibex agentd
但是这里你会想到:是不是我所有的目标主机都得安装 Ibex agent 端呢?答案是显然的,但是官方为了方便,已经将客户端集成到了 Categraf 采集插件中了,也就是说你无需再在目标主机再次下载 ibex 安装包并执行 ./ibex agentd 安装客户端了,但前提是你的目标主机要有 Categraf 采集客户端
2.2 夜莺客户端
如果你是边缘式下沉混杂部署,且中心与边缘是不同的 VPC,那需要填写 Ibex Server 的公网 IP 地址
编辑categraf客户端配置文件
vim /opt/categraf/conf/config.toml
---参数介绍:
1.enable = ture # 启动ibex
2.interval = "1000ms" # ibex 执行间隔
3.servers = ["219.169.218.219:20090"] # ibex_Server 的地址信息
4.meta_dir = "./meta" # 临时脚本目录systemctl restart categraf.service # 重启夜莺采集器
2.3 夜莺Web端
1.n9e 上配置告警自愈
因为 n9e 发出的告警要与 Ibex 自愈服务有“联系”
,才能实现告警自愈,说白了就是设置 n9e 触发告警后的回调地址
Address:ibex-server 端的监听地址
BasicAuthUser:ibex-server 鉴权用户
BasicAuthPass:ibex-server 鉴权密码
Timeout:超时时间(s)
2.创建自愈脚本
在对应的业务组中创建自愈脚本
注意,上图中的 Host 机器列表,要对应实际生产中存在的机器
保存退出后,注意其ID号,在回调地址中有用
3.告警规则配置回调地址
找到对应的告警规则,点击进去后配置回调地址
回调地址说明:
${ibex}/3
,其中 ${ibex}
表示获取 ibex 变量,其实就是要执行与 ibex 自愈的相关调用,3
表示要调用并执行 ID 为 3 的自愈脚本