Nagios

VagrantでNagiosサーバーを構築して、自身のブログを監視してみる #5 (Slackへアラート通知設定)

環境

  • macOS Catalina 10.15.5
  • CentOS 7.8.2003
  • Apache 2.4.6
  • PHP 7.2.31
  • MariaDB 5.5.65
  • Nagios 4.4.3

前提

  • 上記のLAMP環境構築済み
  • スーパーユーザー特権を持つ非rootユーザーを使用
  • Firewall 設定済み
  • selinux disabled

前回まで

アラート通知 設定

  • https://<グループID>.slack.com/services/new/nagios にアクセス
  • Slack の Nagios プラグインをインストールして、実行環境に移したあとにパーミッションを変更する
$ cd ~
$ sudo yum -y install perl-libwww-perl perl-Crypt-SSLeay perl-Sys-Syslog

# CentOS 7ユーザーの場合、追加のモジュールをインストールする必要がある

$ sudo yum -y install perl-LWP-Protocol-https
$ sudo yum -y install wget
$ sudo wget https://raw.github.com/tinyspeck/services-examples/master/nagios.pl
$ cp nagios.pl /usr/local/nagios/libexec/slack_nagios.pl
$ chmod 755 /usr/local/nagios/libexec/slack_nagios.pl

Nagiosチャンネルの作成

  • Slackに、naigosチャンネルを作っておく
  • /usr/local/nagios/libexec/slack_nagios.pl を編集し、$opt_domain と $opt_token 変数を https://<グループID>.slack.com/services/new/nagios で作成した通知先の Slack に応じて設定する
$opt_domain = "YourDomain.slack.com"; # チームドメイン
$opt_token = "NagiosServiceToken"; # Nagios サービスページのトークン
  • テスト投稿して、通るかどうか確かめる
$ sudo /usr/local/nagios/libexec/slack_nagios.pl -field slack_channel="#nagios" -field HOSTALIAS="HOSTNAME" -field SERVICEDESC="SERVICEDESC" -field SERVICESTATE="SERVICESTATE" -field SERVICEOUTPUT="SERVICEOUTPUT" -field NOTIFICATIONTYPE="NOTIFICATIONTYPE"

Nagios の各設定ファイルにSlackの設定を追加していく

  • 通知先の設定 usr/local/nagios/etc/objects/contacts.cfg にSlackの設定を追加する
$ sudo vi /usr/local/nagios/etc/objects/contacts.cfg

define contact {

    contact_name            nagiosadmin             ; Short name of user
    use                     generic-contact         ; Inherit default values from generic-contact template (defined above)
    alias                   Nagios Admin            ; Full name of user
    email                   nagios@localhost ; <<***** (自身のメールアドレス) ******
}

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
}
  • 次にコマンド設定ファイル /usr/local/nagios/etc/objects/commands.cfg に通知コマンドを追加する
$ sudo vi /usr/local/nagios/etc/objects/commands.cfg

define command { 
    command_name        notify-service-by-slack 
    command_line        /usr/local/nagios/libexec/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/nagios/libexec/slack_nagios.pl -field slack_channel="#nagios" -field HOSTALIAS="$HOSTNAME$" -field HOSTSTATE="$HOSTSTATE$" -field HOSTOUTPUT="$HOSTOUTPUT$" -field NOTIFICATIONTYPE="$NOTIFICATIONTYPE$"
}
  • 設定に誤りがないかを検証する
$ sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  • 問題がなければ、Nagios をリスタート
$ sudo systemctl restart nagios.service
  • 監視対象のサーバを落として、アラートを出してみる
タイトルとURLをコピーしました