Blog: MackerelのCPU・Memoryアラート発生時にそれぞれの高負荷なプロセスをSlackに通知するツールを作った
- 目的
- MackerelでCPU/Mem使用率のアラートが発生した場合にSlackにCPU/MEM使用率の高いプロセスリストをPostさせる
- 実装
mackerel-client-go
を利用してツールを作成- mackerel-agentのidをインスタンス内部で取得します。(今回はUbuntuのパスを指定)他のディストリビューションの場合は修正が必要です。
- systemdのtimerで1分に1回実行させる
- アラート発生から3分以内は毎分通知する。(アラートが発生し続けていると何度も通知しないようにするため)
- Mackerelのアラート一覧に自インスタンスのmackerel-idがあるかチェック
- 自インスタンスのアラートが存在する場合、アラートの種類が
CPU % / Memory &
で 管理画面の閾値設定値を超えている場合はSlackに以下のコマンド実行結果とホスト名、cpu使用率の内訳をPostするps aux --sort -%cpu | head -n 6
ps aux --sort -%mem | head -n 6
> $ main -slackurl=<SLACKURL>
MACKEREL_API_KEY
は systemdで実行するときに環境変数をセットする
CPUアラート時の通知結果
Memアラート時の通知結果