My Note

自己理解のためのブログ

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通知の結果

  • 例なので、閾値以下の結果を出力させています。

f:id:yhidetoshi:20190618225044p:plain
mackerel-client-go

まとめ

SDKmackerel-client-goを利用してMackerelのツールを作成した。Goの学習にもなるので、他のツール等も作成していきたい。