アラタナエンジニアブログ

aratana Engineer's Blog

NagiosとSlackの連携

こんにちは、アラタナの月岡です。

f:id:ststyle:20141205125439p:plain

アラタナの良心、宮崎さんがグループチャットツールのSlackネタのスシbot天使を投稿していたので、
僕もそれに便乗してSlackネタのNagios天使ネタを書いてみたいと思います。

普段サーバ管理でNagiosを利用されている方がいらっしゃいますと思いますが
サーバアラート時の通知にメールを利用している方も多いかと思います。
"僕のメールボックスNagiosからの通知メールでいっぱいっ!!"って方もいるかと。。
そんな方はサーバ監視通知のメールを早速Slackに変更してみてはいかがでしょうか。

全体像としては以下の様なイメージですね。
f:id:ststyle:20141205124300p:plain


まずはSlackにログイン後、Nagiosのサービスを追加します。
左上のメニューからIntegrationを選択します。

f:id:ststyle:20141205112730p:plain
「slack」 より

右ペインにいろいろな各拡張サービス中からNagiosさんを探します。

f:id:ststyle:20141205112835p:plain
「slack」 より


Nagiosさんを発見したら
迷わず"Add"ボタンを押してください。
f:id:ststyle:20141205112943p:plain
「slack」 より

続いて"Add Nagios Integration"をポチります。
f:id:ststyle:20141205113223p:plain
「slack」 より

すると下図のような画面に遷移しますので
NagiosがSlackにAPI連携するためのTokenが発行されますので
お控えください。(この後のNaigosの設定で必要になります。)
また、"expand"ボタンを押下すると環境設定手順が表示されます。
基本的にdebian系の手順が表示されているのでcentosな方とかyumなどでご準備ください。
slack用の連携PGはperlで書かれておりますのでperlの環境手順が記載されています。
f:id:ststyle:20141205114018p:plain
「slack」 より

また、通知時の名前やアイコン設定なども行えます。
f:id:ststyle:20141205120928p:plain
「slack」 より


さて、"expand"ボタンをポチると環境の手順が表示されます。
f:id:ststyle:20141205114517p:plain
「slack」 より

centosな方は以下の手順で。

yum -y install  perl-libwww-perl perl-Crypt-SSLeay


続いてslack連携用のプログラムの本体を取得します。
実行権限を付与して適時サーバ環境に見合ったディレクトリに配置してください。

cd /tmp
wget --no-check-certificate -O slack_nagios.pl https://raw.github.com/tinyspeck/services-examples/master/nagios.pl
chmod 755 slack_nagios.pl
mv slack_nagios.pl /usr/local/nagios/libexec/slack_nagios.pl


次にslackの自分のドメイン設定と先に控えていたTokenを変数に設定します。

vim /usr/local/nagios/libexec/slack_nagios.pl

 66 my $opt_domain = "XXXXXXXXX.slack.com"; # Your team's domain
 67 my $opt_token = "XXXXXXXXXXXXXXXXXXX"; # The token from your Nagios services page


それと #nagios などチャネルを作っておいてください
f:id:ststyle:20141205120639p:plain
「slack」 より


よし、ここまで設定できれば、ひとまず直接コマンドを叩いてテスト通知を行なってみましょう。

/usr/local/nagios/libexec/slack_nagios.pl -field slack_channel=#nagios -field HOSTALIAS="ホスト名" -field SERVICEDESC="サービス名" -field SERVICESTATE="ステータス" -field SERVICEOUTPUT="結果" -field NOTIFICATIONTYPE="NOTIFICATIONTYPE"


Notificationがぷりんっと飛んできたかと思います。
もし届かない場合には今一度、ドメインとTokenの設定を見なおしてみてください。
f:id:ststyle:20141205115828p:plain
「slack」 より


ブラウザーで確認してもきちんと通知されていますね。
f:id:ststyle:20141205120140p:plain
「slack」 より


それでは通知できることは確認できましたのでNagiosの設定に進みましょう。

主にnagiosの3ファイルを設定します。

1. コンタクト設定のコンフィグファイルに以下を追記します。
(※設定ファイルのパスは各自の環境に合わせてください。)

vim /usr/local/nagios/etc/contacts.cfg

define contact {
        contact_name                    slack
        alias                           Slack
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-slack
        host_notification_commands      notify-host-by-slack
}


2.コマンドコンフィグ設定ファイルに以下を追記します。

vim /usr/local/nagios/etc/commands.cfg

define contact {
        contact_name                    slack
        alias                           Slack
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-slack
        host_notification_commands      notify-host-by-slack
}


最後にコンタクトグループコンフィグを編集します。
membersの箇所にカンマに続けてslackを追加してください。

vim /usr/local/nagios/etc/contactgroups.cfg

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagios-admin,slack
        }

お疲れ様でした。
それでは設定反映の為にNagiosをリスタートしますが
その前に設定ファイルにシンタックスエラーなどの不備がないかを確認して下さい。

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

不備がなければNagiosさんのリスタート!!

# /etc/init.d/nagios restart
Running configuration check...done.
Stopping nagios: .done.
Starting nagios: done.

しばらくすればslackさんから通知が来ることでしょう!!
OK,WARINING,CRITICALの監視ステータスに応じて色分けもされますので
非常に見やすいですね。
f:id:ststyle:20141205122335p:plain
「slack」 より

ひととうりのNagiosとSlackの動作確認に問題がなければ
Nagiosのメール通知を外します。
Slackにはiphoneアプリもありますのでプッシュ通知もきちんと受けれます。
これであなたのメールボックスはもうスッキリですね。

それでは!
f:id:ststyle:20141205122511p:plain
「slack」 より