仕事で使うにはメールのほうが便利ですが、自分で使うとなるとメールよりTwitterに通知してくれたほうが便利です。 (わたしが張り付きすぎているだけ?)
幸いなことにnagiosではそこら辺も柔軟に変えられるのでPythonでスクリプトをつくってみました。
コードとしては以下です。コンシューマキーなどは適宜書き換えてください。
また、外部のライブラリとしてtweepyをつかっているのでそちらも各自導入してください。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import tweepy
from tweepy import Stream, TweepError
import logging
import urllib
import datetime
import locale
nowTime = datetime.datetime.today()
CONSUMER_KEY = '*************'
CONSUMER_SECRET = '*************'
ACCESS_TOKEN = '*************'
ACCESS_TOKEN_SECRET = '*************'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth_handler=auth, api_root='/1.1', secure=True)
api.pdate_status(sys.argv[1] + nowTime.strftime("%x %X"))
sys.exit(0)
なぜ時間を追加しているのかというと、
Twitterの仕様上同じツイートを短期間にツイートできないようなのでその対策です。
それ以外は基本的にふつーなTwitter投稿スクリプトですね。
さて次にこのスクリプトをサーバに配置します。
わたしは/usr/local/nagios/libexecに配置しました。
パーミションを755にするのを忘れずに。
つぎにnagiosのコマンドを定義しているファイルに通知コマンドを定義していきます。
適当にメール通知のを参考にして以下のような感じのを書きます。
define command{
command_name host-notify-by-twitter
command_line /home/admin/tweet.py "$contactemail $host $hoststate$ alert for $hostname$!"
}
define command{
command_name notify-by-twitter
command_line $USER1$/tweet.py "@$CONTACTEMAIL$ ** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$ **"
}
あとはコンタクトの定義に以下を設定してあげればTwitterに通知が飛ぶようになります。
あとはemailのところを通知したいユーザIDにしてください
service_notification_commands notify-by-twitter
host_notification_commands host-notify-by-twitter
今回はTwitterでしたが設定を見てわかるように任意のプログラムを設定できるので、チャットに飛ばすとかそんなふうにしてみるのもありかもしれません。