チャットツールのSlackと、システム監視ソフトのNagiosを連携させる方法です。
Nagiosでアラートを検知した時に、Slackに通知します。
こんなイメージです。
SlackのNagiosサービスを有効にする
https://<グループID>.slack.com/services/new/nagios
を開く。
ページの下の [Add Integration] をクリック。
" New integration added! " と出たらOKです。
設定のためのチュートリアルが表示されます。基本的にこのまま従っていけばOKです。
トークンをメモっておきましょう。チュートリアルと、左側に表示されています。
---
TOKEN
The token for this integration is:
XXXXXXXXXXXXXXX <- これがトークンです。
---
---
my $opt_token = "XXXXXXXXXXXXXXX"; <- これがトークンです。
---
Slackに、naigosチャンネルを作っておきます。
Slackに、naigosチャンネルを作っておきます。
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と、トークンを設定
# emacs /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"
こんな感じで出てきたでしょうか?
Nagiosの設定ファイルを編集する
通知先のメンバーにslackを追加。
# emacs /etc/nagios/objects/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
}
define contactgroup {
contactgroup_name admins
alias Nagios Administrators
members root, slack
}
---
通知コマンドを追加。slack_channel=<チャンネル名>を便宜設定します。
# emacs /etc/nagios/objects/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/sbin/nagios -v /etc/nagios/nagios.cfg
問題なかったらNagiosをリスタート
# /etc/init.d/nagios restart
テスト的にアラートを投げてみましょう。
こんな感じで色分けしてSlackに通知してくれます。
簡単ですね!