NagiosからのアラートをSlackチャンネルに通知する方法、自分用まとめ。
・前提
Slackへの登録は済ませておく。下記サイトを参照。
1.SlackのNagiosサービスを有効にする
https://<グループID>.slack.com/services/new/nagios
を開く。
ページの下の [Add Nagios integration] をクリック。
” New integration added! ” と出たらOK。
設定のためのチュートリアルが表示されます。基本的にこのまま従っていくスタイル
Slackに、naigosチャンネルを作っておく
2.Slack通知スクリプトを用意する
Perlモジュールをインストール
# yum install perl-libwww-perl perl-Crypt-SSLeay
公式スクリプトを取得&設置
# wget https://raw.github.com/tinyspeck/services-examples/master/nagios.pl --no-check-certificate # cp nagios.pl /usr/local/bin/slack_nagios.pl # chmod 755 /usr/local/bin/slack_nagios.pl
slack_nagios.plを編集して、グループIDと、トークンを設定
# vi /usr/local/bin/slack_nagios.pl --- my $opt_domain = "<グループID>.slack.com"; # Your team's domain my $opt_token = "<トークン>"; # The token from your Nagios services page ---
ここまで出来たらテスト投稿をしてみる。
# /usr/local/bin/slack_nagios.pl -field slack_channel=#nagios -field HOSTALIAS="HOSTNAME" -field SERVICEDESC="SERVICEDESC" -field SERVICESTATE="SERVICESTATE" -field SERVICEOUTPUT="SERVICEOUTPUT" -field NOTIFICATIONTYPE="NOTIFICATIONTYPE"
OKっぽい
3.Nagiosの設定ファイルを編集する
通知先のメンバーにslackを追加。
# vi /usr/local/nagios/etc/services.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 } define contactgroup { contactgroup_name admins alias Nagios Administrators members root, slack } ---
通知コマンドを追加。slack_channel=<チャンネル名>を便宜設定します。
# vi /usr/local/nagios/etc/commands.cfg --- define command { command_name notify-service-by-slack command_line /usr/local/bin/slack_nagios.pl -field slack_channel=#nagios -field HOSTALIAS="$HOSTNAME$" -field SERVICEDESC="$SERVICEDESC$" -field SERVICESTATE="$SERVICESTATE$" -field SERVICEOUTPUT="$SERVICEOUTPUT$" -field NOTIFICATIONTYPE="$NOTIFICATIONTYPE$" } define command { command_name notify-host-by-slack command_line /usr/local/bin/slack_nagios.pl -field slack_channel=#nagios -field HOSTALIAS="$HOSTNAME$" -field HOSTSTATE="$HOSTSTATE$" -field HOSTOUTPUT="$HOSTOUTPUT$" -field NOTIFICATIONTYPE="$NOTIFICATIONTYPE$" } ---
Nagiosの設定チェック
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
問題なかったらNagiosをreload
# /etc/init.d/nagios reload