Zabbix や munin のアラートを Pushover 経由でスマートフォンにプッシュ通知する
はじめに
この記事は昨年書いた「Zabbix のメディアタイプに Growl を指定し、手元のマシンの Growl で障害情報を受け取る方法」の焼き直しです。
こんにちは yosida95 です。 Pushover はスマートフォンにプッシュ通知を送ることに特化したサービスで、スマートフォンにレシーバーとなるアプリをインストールしておき、 REST API に通知内容を POST することで手軽にプッシュ通知を送れます。 類似サービスとしては im.kayac.com なんかが挙げられます。 IFTTT と連携させると最高便利です。
そんな Pushover を使って Zabbix や munin のアラートを手持ちのスマートフォンに通知してみようという試みです。
Zabbix
pushover_zabbix.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import urllib2
from urllib import urlencode
APPTOKEN = YOUR_APPLICATION_TOKEN
def main():
usertoken = sys.argv[1].strip()
params = dict(
token=APPTOKEN,
user=usertoken,
title=sys.argv[2],
message=sys.argv[3])
request = urllib2.Request(url='https://api.pushover.net/1/messages.json',
data=urlencode(params))
urllib2.urlopen(request)
return 0
if __name__ == u'__main__':
sys.exit(main())
- zabbix_server.conf の AlertScriptsPath で指定したディレクトリに置く
- chmod で実行権限を与える
- Zabbix の Web コントロール画面からメディアタイプに指定する
- Pushover を使って通知を受け取りたい Zabbix ユーザーに、上記で追加したPushover メディアタイプを追加する
- この時、送信先として Pushover のユーザートークンを指定する
より詳細な設定手順はZabbix のメディアタイプに Growl を指定し、手元のマシンの Growl で障害情報を受け取る方法を参照してください。
munin
contacts pushover contact.pushover.command /path/to/pushover_munin.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import urllib2
from urllib import urlencode
APPTOKEN = YOUR_APPLICATION_TOKEN
USERTOKEN = YOUR_USER_TOKEN
def main():
message = sys.stdin.read()
params = dict(
token=APPTOKEN,
user=USERTOKEN,
message=message)
request = urllib2.Request(url='https://api.pushover.net/1/messages.json',
data=urlencode(params))
urllib2.urlopen(request)
return 0
if __name__ == u'__main__':
sys.exit(main())
- pushover_mnin.py を munin がアクセスできるパスに munin がアクセスできる権限で設置する
- pushover_munin.py に実行権限を与える
- munin.conf に上記 2 行を追記する