NagiosのアラートをLINEに即座に通知&スマートウオッチ連動する方法
nagiosのアラートをlineに通知する方法をまとめました。インフラの設計、および運用管理をしていると、かならず発生するのが、システム障害です。その障害は、寝ている時であろうと、ごはんを食べている時であろうと、はたまた休日であっても発生します。インフラエンジニアには休みはありません(汗)
しかしながら、外出時、もしくは寝ている時も、気づかない場合があります。まーその、、、人間だからしょうがない。。スマホでslack連携しているし、通知もするようにしているから大丈夫だよ!!というケースもあります、でもでも、スマホでも気づかないことって結構あります。まず、歩きスマホしながら外出しないので、きずいた時には、slackに大量のアラートがわらわらと。。。
このようなケースを可能なかぎり避けたい、障害に早く気づきたい!
そんな時に思いついたのが、nagios通知とスマートウォッチ連動です。これなら外出時、寝ている時にスマホを手に持っていなくてもスマートウォッチが通知してくれるので気づきやすいですよね!
というわけで、
の連携の話をちょっと書こうかな?って思います
Nagios統合監視[実践]リファレンス (Software Design plus)
- 作者: 株式会社エクストランス,佐藤省吾,Team-Nagios
- 出版社/メーカー: 技術評論社
- 発売日: 2011/03/25
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 37回
- この商品を含むブログ (8件) を見る
LINEモバイル エントリーパッケージ ソフトバンク・ドコモ対応SIMカード データ通信(SMS付き)/音声通話 [iPhone/Android共通] スマホ代 月300円キャンペーン実施中
- 出版社/メーカー: LINEモバイル
- 発売日: 2016/11/22
- メディア: エレクトロニクス
- この商品を含むブログを見る
この設定をしてから、世界が変わりました!良い意味でも悪い意味でもw
実は、lineはほとんど利用していないのですが、手持ちのxiaomi miband2がslackには対応しておらず、line対応なので、Slackでは、ぶるぶるしてくれないから利用する理由になります
miband2とは
nagiosの前にmiband2の話ですが、アクティブトラッカー(スマートウォッチ)になります。睡眠時間の計測、および、歩数を計測し、そのデータをスマホに転送してくれるリストバンドになります。安価は割には意外と高機能で、lineの通知にも対応し、他にはfacebook,sms、メール通知にも対応しているため、インフラ運用で結構活用できるんですよね。
障害が発生したら、リストバンドがぶるぶると震えます!これはわかりやすい!!
nagiosとlineの連動
nagiosとlineの連動にあたって、まずはlineの設定が必要になります
LINE Notify
Webサービスと連携すると、LINEが提供する公式アカウント"LINE Notify"から通知が届きます。 複数のサービスと連携でき、グループでも通知を受信することが可能です。
- ログイン
自身のアカウントでまずログインします
- マイページ
マイページを選択します
- アクセストークンの発行
アクセストークンを発行します
- 通知先の設定
通知先の設定をします。グループへの通知も可能ですが、今回は自身のみを選択しました
- トークン
無事トークンが発行されると以下のような画面が表示されます。こちらのトークンは、後のnagios通知にて利用しますので、忘れずにメモしておいてください。余談ですが、うっかりメモし忘れた場合、もう一回発行してください。
まずは、ここまででLINEの設定は完了しました
miband2
- アプリから設定
miband2の設定は、mi fitというアプリから設定します。 プロフィールタブから、対象のデバイスを選択します。
- アプリの通知をONにする
アプリ通知の箇所をタップしてください
- LINEの通知をONにする
LINEの通知をONにします
ここまでで、mibandの設定は完了です
nagiosの設定
いよいよ、nagiosの設定です
/etc/nagios/objects
- /etc/nagios/objects/contacts.cfg
既存で、slack通知と、メール通知が設定されている中で、notify-by-line という名前で新規に登録しました
define contact { contact_name slack_stats alias SendSlack_stats host_notification_period 24x7 ; 24H * ' DAY service_notification_period 24x7 host_notification_options d,u,r ; down,unknone,recovery service_notification_options w,c,r ; warn, critical , recovery host_notification_commands host-notify-by-slack-stats,notify-host-by-email,notify-by-line service_notification_commands notify-by-slack-stats,notify-service-by-email,notify-by-line email info@abcdef.drf }
- /etc/nagios/objects/commands.cfg
上記で、設定した notify-by-lineという名前で、設定しております。また、実行するコマンドは、/usr/local/shell/send_line.sh として作成しました。
define command{ command_name notify-by-line command_line /usr/local/shell/send_line.sh -s $SERVICESTATE$ '<http://stats.vibbidi.com/nagios/|***** Nagios *****>\n\nNotification Type: $NOTIFICATIONTYPE$ ($NOTIFICATIONNUMBER$)\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nHostgroup: $HOSTGROUPNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $SHORTDATETIME$\n\nExtend Info: $HOSTADDRESS$ \"$SHORTDATETIME$,,$HOSTALIAS$,$SERVICEDESC$\"\n\nNOTES: $SERVICENOTES$\n\nAdditional Info:\n\n$SERVICEOUTPUT$' }
- send_line.sh すこし、無駄な処理が入っていますが、以下のシェルを作成しました。TOKENの部分は、LINE Notifyで取得した、TOKENを設定してください。このTOKENを元に、LINE Notifyの APIを、curlで実行します。
#!/bin/bash API_URL="https://notify-api.line.me/api/notify" TOKEN="oL7rP7ioeRTJmIdhxxxxxxxxxxxxxxxxxxx" #State Check while getopts "s:" opts do case $opts in s) NAGIOS_SERVICESTATE=$OPTARG ;; esac done MESSAGES=$3 # Send message to Line curl -X POST -H "Authorization: Bearer ${TOKEN}" -F "message=[${NAGIOS_SERVICESTATE}]\n${MESSAGES}" ${API_URL}
- lineの実行テスト
とりあえず、shellの直接実行でline通知できるかテストします
# /usr/local/shell/send_line.sh -s OK ----------------------------------------- {"status":200,"message":"ok"}
もし、スマートウォッチの設定も済んでいるのであれば、通知がきたのが確認できたと思います。 もちろんLINEにも通知が飛んでいるはずです
- nagios文法チェック
設定。編集が終わりましたら、nagiosを再起動。。。する前に、文法チェックをかけましょう
# nagios -v /etc/nagios/nagios.cfg ---------------- Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check # /etc/init.d/nagios restart
いかがでしょうか?ここまでできれば、だいぶ社外(屋外)監視対応もスムーズになったきたのではないかと思っております。開発とか、デザイナーさんとかと違い、インフラやさんは、最悪、スマホとコンソールさえあれば、対応は可能です。また、近い将来ですが、ことインフラエンジニアは、社内にいる必要性ってあまりなくなるのではないかと予測しています。だって、24時間対応なんだもの。会社にいって障害対応するのと、会社外で障害対応するのと、対応の質は同じです。もちろんPCがあってゆっくり腰をすえて作業するというのは良いことではあるのですが、障害はかならずしも、社内にいて発生するものではないし笑、むしろ、社外での装備を万全にしておきたいと思うのは、僕だけでしょうか?笑