AWSのEC2にmuninをインストールして、そこからチャットワークに通知するようにしました。
手順
- muninをインストールする
- Chatworkに送信するためのスクリプトを用意する
- munin.confにchatworkに送信する設定を行う
1. muninをインストールする
sudo yum install -y munin munin-node
sudo chkconfig munin-node on
munin-nodeは、muninのみを指定しても併せてインストールされますので省略しても問題ありません。
他のサーバも監視する場合、監視先のサーバではmunin自体は不要です。
2. chatworkに送信するためのスクリプトを用意する
場所はどこでも良いのですが、muninが配置されていた/var/lib/muninにインストールしました。
muninユーザーで実行できるように実行権限をつけるのを忘れない様にしましょう。
最初の方のROOM_ID、API_KEY、SEND_TOは適当に書き換えてください。
/var/lib/munin/chatwork_notify.rb
#!/usr/bin/ruby
require "net/http"
ROOM_ID = NNNNNNNNN
API_KEY = "XXXXXXXX"
SEND_TO = "[To:NNNNNN] zenpou"
url = "https://api.chatwork.com/v2/rooms/#{ROOM_ID}/messages"
uri = URI.parse (url)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
message = "[info][title]#{ARGV.join}[/title]#{SEND_TO}\n#{STDIN.read}[/info]"
request = Net::HTTP::Post.new (uri.request_uri)
request.add_field "X-ChatWorkToken", API_KEY
request.set_form_data :body => message
https.request(request)
3. munin.confにchatworkに送信する設定を行う
[localhost]などのサーバ毎の設定より前に送信するコマンドを設定します
contact.admin.command /var/lib/munin/chatwork_notify.rb "Munin Alert [${var:group}]:${var:host}"
contact.admin.max_messages 3
contact.admin.always_send warning critical
各サーバ毎に、アラートの基準も設定が必要です
[localhost]
address 127.0.0.1
use_node_name yes
df._dev_xvda1.warning 90
df._dev_xvda1.critical 95
load.warning 2
load.critical 4
試しにしきい値を物凄く低くして、warning状態にして以下のコマンドを実行して送信を試す事ができます。
su - munin --shell=/usr/bin/munin-cron