夜鶴(Nightingale)自癒腳本
告警腳本使用前提
首先需要夜鶴 v7.0.0-beta.2.0.1 以上的版本,之前的版本也有告警自癒的能力,但之前的版本需要額外安裝部署 ibex 模塊,從這個版本開始就不需要單獨的 ibex 模塊了。
修改夜鶴服務端的配置
在夜鶴的配置文件:etc/config.toml 中搜索 Ibex,把 Enable 設置為 true:

重啟夜鶴,讓配置生效。此時通過 ss 或 netstat 命令可以看到夜鶴服務端監聽了 20090 端口。這是 categraf 拉取腳本任務、上報腳本結果的端口。
修改 categraf 的配置
categraf 的配置文件是 conf/config.toml。在 conf/config.toml 中搜索 ibex,把 enable 設置為 true,並正確配置夜鶴服務端的地址和端口:

如果你的機器量比較大,比如超過 10000 台,建議把 interval 調整的稍微大一些,比如 2500ms,要不然容易給服務端造成太大壓力。servers 配置是個數組,配置所有的夜鶴服務端的地址,如果你有多個夜鶴服務端實例,categraf 啟動時會自動探測,連到那個網絡延遲最小的實例上,如果夜鶴服務端實例掛了,categraf 會自動切換到另外一個實例上,保證高可用。
改完配置之後重啟 categraf,讓配置生效。
配置腳本
下面是一個重啟 systemctl 守護進程服務的簡單 shell 腳本,通過 stdin 讀取進程名稱,最後執行啟動服務命令,這個腳本可以適配 systemctl 守的大部分服務。 Python ]參考這裡。

關聯告警規則
配置好腳本後,需要將回調腳本地址配置到告警規則中。

在告警規則回調地址中填寫告警自癒回調地址。

查看自癒腳本執行記錄
最後觸發進程告警後,會自動調取腳本執行恢復啟動進程命令。
