SlackをNagiosに連携させる方法

· 2 min read
SlackをNagiosに連携させる方法

NagiosからのアラートをSlackチャンネルに通知する方法、自分用まとめ。


・前提
Slackへの登録は済ませておく。下記サイトを参照。

【登録編入門】slack使い方【世界一丁寧な解説初心者用】

 

1.SlackのNagiosサービスを有効にする

https://<グループID>.slack.com/services/new/nagios
を開く。
ページの下の [Add Nagios integration] をクリック。

” New integration added! ” と出たらOK。
設定のためのチュートリアルが表示されます。基本的にこのまま従っていくスタイル

下のほうにTokenがあるのでメモっておく

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