MackerelCPUAlertToolを作った
目的
- MackerelでCPU使用率のアラートが発生した場合にSlackにCPU使用率の高いプロセスリスト、ホスト名、CPU使用率の内訳をPostさせる
実装
mackerel-client-go
を利用してツールを作成
- mackerel-agentのidをインスタンス内部で取得します。(今回はUbuntuのパスを指定)他のディストリビューションの場合は修正が必要です。
- systemdのtimerで1分に1回実行させる
- Mackerelのアラート一覧に自インスタンスのmackerel-idがあるかチェック
- 自インスタンスのアラートが存在する場合、アラートの種類が
CPU %
で 管理画面の閾値設定超過の場合はSlackに以下のコマンド実行結果とホスト名、cpu使用率の内訳をPostするps aux --sort -%cpu | head -n 5
GitHub (ソースコード)
Usage
> $ main -slackurl=<SLACKURL>
■ 実行結果(ターミナル) 例なので、閾値以下の結果を出力させています
HOSTNAME: test-server Threshold: 80.0000 UnixTime: 1553408909 to 1553409089 cpu.user.percentage: 1.3416875034728009 cpu.system.percentage: 0.5833472245374229 cpu.iowait.percentage: 0.04166805578707562 cpu.steal.percentage: 0.15000555648163583 cpu.irq.percentage: 0 cpu.softirq.percentage: 0 cpu.nice.percentage: 0 cpu.guest.percentage: 0 TotalCPUUsage: 2.1 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND (ps aux --sort -%cpu | head -n 5) の結果が出力される
Slack通知の結果
- 例なので、閾値以下の結果を出力させています。
まとめ
SDKのmackerel-client-go
を利用してMackerelのツールを作成した。Goの学習にもなるので、他のツール等も作成していきたい。