My Note

自己理解のためのブログ

MackerelのCPU・Memoryアラート発生時にそれぞれの高負荷なプロセスをSlackに通知するツールを作った

やったこと

以前に書いたブログの改良版。

yhidetoshi.hatenablog.com

前回は、CPUアラートが発生している場合にSlackに負荷の高いプロセスリストをSlackに投稿していた。今回は、メモリアラートが発生した場合にSlackに負荷の高いプロセスリストをSlackに投稿するように追加した。コードも一部改修しています。

ソースコード

github.com

ツールについて

  • 実装
    • mackerel-client-go を利用してツールを作成

github.com

  • 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通知) 例

f:id:yhidetoshi:20190621233032p:plain