MackerelのCPU・Memoryアラート発生時にそれぞれの高負荷なプロセスをSlackに通知するツールを作った
やったこと
以前に書いたブログの改良版。
前回は、CPUアラートが発生している場合にSlackに負荷の高いプロセスリストをSlackに投稿していた。今回は、メモリアラートが発生した場合にSlackに負荷の高いプロセスリストをSlackに投稿するように追加した。コードも一部改修しています。
ソースコード
ツールについて
- 実装
mackerel-client-go
を利用してツールを作成
- mackerel-agentのidをインスタンス内部で取得します。(今回はUbuntuのパスを指定)他のディストリビューションの場合は修正が必要です。
- systemdのtimerで1分に1回実行させる
- Mackerelのアラート一覧に自インスタンスのmackerel-idがあるかチェック
- 自インスタンスのアラートが存在する場合、アラートの種類が
CPU % / Memory &
で 管理画面の閾値設定値を超えてアラートが発生している場合はSlackに以下のコマンド実行結果とホスト名、cpu使用率の内訳をPostするps aux --sort -%cpu | head -n 6
ps aux --sort -%mem | head -n 6
Usage
> $ main -slackurl=<SLACKURL> -mkrkey=<MACKEREL_API_KEY>
MACKEREL_API_KEY
は readonly
実行は、mackerel-agentが動いている(監視しているインスタンス)に1分に1回実行させている。
■ 実行結果(Slack通知) 例