Nagios XI双方向インテグレーションガイド

Project Description

本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。   日本語環境での動作を保証するわけではありません。   原文はこちらを参照してください。


Nagios XIは、Nagios Coreソフトウェアの機能を拡張し、重要なITシステムの詳細なホストとサービスの監視を提供します。

以下のガイドでは、簡単にインストールできるエージェントを使用して、Nagios XIインストールとPagerDutyをインテグレートする方法について説明します。 インストールを完了するには、 rootとしてログインする必要があります。 インテグレーションを完成するに問題がある場合、サポートチームまでお問い合わせください。

注意: CentOS 5でNagiosを実行している場合、 Nagios XIのPerlベースインテグレーションをご使用ください。

PagerDutyでの設定

    1. Configuration メニューからServices を選択します
    2. Serviceページから:インテグレーション用の新しいサービスを作成する場合は、+Add New Serviceをクリックします。既存のサービスにインテグレーションを追加する場合は、インテグレーションを追加するサービスの名前をクリックします。 その後、 Integrations タブをクリックし、+ New Integration ボタンをクリックします。

  1. Integration Typeメニューからアプリケーションを選択し、Integration Nameを入力します。インテグレーションのため新しいサービスを作成する場合は、一般設定で、新しいサービスのNameを入力します。 次に、IncidentSettingsで、新しいサービスのEscalation Policy(エスカレーションポリシー)、Notification Urgency(通知の緊急度)、Incident Behavior(インシデントの動作)を指定します。
  2. Add ServiceまたはAdd Integration ボタンをクリックして、新しいインテグレーションを保存します。 すると、サービスのインテグレーションページにリダイレクトされます。
  3. 新しいインテグレーションの Integration Key をコピーします。

Nagios XIサーバでの設定

  1. PagerDutyエージェントをインストールします。 エージェントはNagios XIからイベントを受信し、キューを使用してPagerDutyに送信して、問題のトラブルシューティングに役立つログを提供します。それから、接続に失敗した場合(Nagios XIサーバが一時的に接続を失った場合)にアラートを自動的に再試行します。
    Note:エージェントはCentOS 5以降では動作しません。CentOS 5に含まれているバージョンよりも新しいバージョンのPythonが必要です。古いオペレーティングシステムのためには、Nagios XIのPerlベースインテグレーションを使用してください。
  2. Nagios XI Webインターフェイスにnagiosadminとしてログインし、 Configureメニューに移動してCore Config Managerを選択します。 左メニューのCommandsを クリックし、Add Newをクリックします。
  3. Command NameLineTypeを次のように設定し、 Saveをクリックします 。
      • Command Name:
  4. notify-service-by-pagerduty
      • Command Line:
    /usr/share/pdagent-integrations/bin/pd-nagios -n service -k $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$" -f SERVICEDESC="$SERVICEDESC$" -f SERVICESTATE="$SERVICESTATE$" -f HOSTNAME="$HOSTNAME$" -f SERVICEOUTPUT="$SERVICEOUTPUT$"
      • Command Type:
    misc command

  5. Add Newをクリックして別のコマンドを追加します。
  6. Command NameLineTypeを次のように設定し、 Saveをクリックします。
      • Command Name:
  7. notify-host-by-pagerduty
      • Command Line:
    /usr/share/pdagent-integrations/bin/pd-nagios -n host -k $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$" -f HOSTNAME="$HOSTNAME$" -f HOSTSTATE="$HOSTSTATE$"
      • Command Type:
    misc command

  8. 左メニューの Contactsをクリックし、Add New をクリックします。
  9. Alert Settings タブに移動して、次のホストオプションを設定し、Manage Host Notification Commandsをクリックします。
      • Host Notifications Enabled:オン
      • Host Notifications Timeperiod: 24×7
      • Host Notification options: d、r
  10. notify-host-by-pagerdutyコマンドを選択して、Add Selectedをクリックしてください。 notify-host-by-pagerdutyAssigned列に移動していることを確認してから、Closeをクリックしま す 。
  11. Alert Settingsタブに戻って、次のサービスオプションを設定し、Manage Service Notification Commands をクリックします。
      • Service Notification Commandsをクリックします。
      • Service Notifications Enabled:オン
      • Service Notifications Timeperiod: 24×7
      • Service Notification options: w、u、c、r
  12. notify-service-by-pagerdutyコマンドを選択し、Add Selectedをクリックしてください。notify-service-by-pagerdutyAssigned列に移動していることを確認してから、Closeをクリックします 。
  13. Misc Settings タブに移動し、 Manage Variable Definitions をクリックします。
  14. Variable namepagerVariable valueをPagerDutyからコピーしたインテグレーションキーに設定し、Insertをクリックします。 変数が右の列に追加されていることを確認し、Close をクリックします 。
  15. Common Settingsタブに移動して、Contact Namepagerduty 、複数の PagerDutyサー ビスと統合する場合は、 pagerduty_databasepagerduty_networkなどの pagerduty_database名前)を設定し、Manage Contact Groupsクリックします 。
  16. Adminsグループ、またはホストとサービスにも関連付けられる連絡先のグループを選択して、Add Selectedをクリックします。 admins(または代替グループ名)がAssigned 列に移動していることを確認し、Closeをクリックします 。
  17. Saveをクリックして新しい連絡先を保存します。
  18. 左側のメニューでHost Templatesをクリックし、PagerDuty通知に使用するテンプレートを選択します。 このガイドでは、 generic-hostを使用しています。これによって、通常、インテグレーションプロセスが完了するとすぐにすべてのホスト の通知を受け取ることができます。
  19. Alert Settings タブに移動して、次のオプションを設定し、Manage Contactgroupsをクリックします 。
      • Notification period: 24×7
      • Notification options: d、u、r
      • Notification interval: 1分
      • Notification enabled:オン
  20. Adminsグループ(または手順15で選択した代替グループ)を選択し、Add Selected クリックします。 グループ名がAssigned 列に移動していることを確認し、Close をクリックします 。
  21. Saveをクリックして、ホストテンプレートを保存します。
  22. Apply Configurationをクリックして、新しいコマンド、連絡先、およびホストテンプレートの変更を有効にします。
  23. 双方向のインテグレーションのためにpagerduty.cgiをダウンロードしてください。  
  24. wget https://raw.githubusercontent.com/mdcollins05/pd-nag-connector/master/pagerduty.cgi
  25. pagerduty.cgiファイルを編集して、 command_file変数がNagiosコマンドファイルを指すようなります。 パスは、 nagios.cfg存在するディレクトリのgrep "^command_file" nagios.cfgコマンド(Nagios Enterprisesが提供する仮想マシンイメージを使用している場合は/usr/local/nagios/etcコマン)を実行すると見つかります。情報が返さない場合は、 command_file変数のコメントが解除されていることを確認します( #始まらないこと)。
  26. pagerduty.cgiをNagios Core cgi-bin(Nagios XI  PHPユーザインタフェースディレクトリではありません)に移動してください。 pagerduty.cgi Enterprisesが提供する仮想マシンイメージの場合、これは
  27. mv pagerduty.cgi /usr/local/nagios/sbin
  28. pagerduty.cgiを実行可能にしてください。Nagios Enterprisesが提供する仮想マシンイメージの場合:
  29. chmod +x /usr/local/nagios/sbin/pagerduty.cgi
  30. スクリプトが動作するために必要なPerlライブラリをインストールしてください。
  31. yum install perl-CGI perl-JSON perl-libwww-perl
  32. PagerDutyで、Nagios XIサービスのIntegrationsタブに行き、 Add an extensionをクリックします。
  33. Extension TypeGeneric Webhookを選択して、webhookのためのName(Nagios XI)を記入してください。 それから、URLに貼り付けてSaveをクリックします。URLは次のようになります:http:// user : password @ ip-or-domain /nagios3/cgi-bin/pagerduty.cgi
  34. Note:あなたがそれを無効にしていない限り、Nagios Core Webインターフェイスはユーザ名とパスワードを必要とします。Webhookでのみ使用されるNagiosコマンドを実行できるユーザを設定することを強くお勧めします。

    ブラウザでこのURLにアクセスすると、400 Requests must be POSTsが表示されます。表示されない場合は、このURLをアクセスしたときに何が起きたか、その詳細を調べるため、Webサーバーのログを確認してください。

  35. これでやるべき設定は終わりました。テストためには、インシデントを生成するようなイシューをNagios内で発行する必要があります。インシデントが確認されると、インシデントが「Acknowledged by PagerDuty」というコメントが追加されるはずです。
  36. よくある質問

    インストールしたNagiosをインターネットからアクセスできない状態にしたままで、双方向のインテグレーションができますか?

    双方向のインテグレーションでは、PagerDutyからWebhookコールを受信するために、インターネット経由でNagiosサーバにアクセスさせる必要があります。 あなたのNagios Webサーバーへのアクセスを特定のIPに制限したい場合は、PagerDutyのWebhook IPをナレッジベースWhat are PagerDuty’s IPs for whitelisting and firewall purposes?(ホワイトリストやファイアウォールに指定できるPagerDutyのIPは何ですか?)を見てください。
    あるいは、ngrokのようなサービスを使うと、Webhook用に使えるパブリックなURLを使用して、Nagiosサーバーへの安全なトンネルを作成することができます。

    Nagios XIを複数のPagerDutyサービスと動作するように設定できますか?

    PagerDutyのNagios XIサービスはNagiosの “contact”に直接マッピングされているため、現在のインテグレーションではこれは簡単です。複数のサービスを設定するには、Nagios XIの別の連絡先(例: pagerduty_databasepagerduty_networkなど)を作成し、対応するインテグレーションキーをPagerDutyからコピーしてpager変数定義フィールドに貼り付け、希望するサービスの通知を受け取る連絡先グループを作成してください。 連絡先を保存した後に変更内容を適用して有効にすることを忘れないでください。

    ネットワークがダウンしているときにNagiosイベントが発生したらどうなりますか?

    何らかの理由でPagerDutyサーバにアクセスできない場合、イベントはディスク上のキューに保存されます。PagerDutyエージェントは、接続が復元されたときにイベントを再送信しようとします。

    NagiosがPagerDutyに失敗の報告を送るためには外部インターネット接続が必要ですが、私のサイトが外部接続を失った場合、どうすれば通知を受け取れますか?

    StatusCakeNodePingなどの外部pingチェックサービスを設定して、サイトの外部接続を監視する必要があります。 もちろん、PagerDutyを使ってこれらのサービスからアラートを受け取ることもできます。

    インテグレーションが動いていないようです。なぜですか?

    まず、 PagerDutyエージェントをインストールしていることと、PagerDutyエージェントをインストールしようとするときにパッケージマネージャからエラーがないことを確認してください。インテグレーションが動かない原因として、インストールできないディストリビューション(CentOS 5などのような互換性のないディストリビューション)を使っていることがよくあります。

    pagerduty連絡先がsyslogにHOSTまたはSERVICE NOTIFICATIONS取得していることを確認してください。 syslogをgrepして、 pagerduty連絡先が通知されているかどうかを確認することができます。 ここに例があります:

    grep NOTIFICATION /var/log/messages
    May 28 18:20:57 ip-10-11-139-249 nagios3: SERVICE NOTIFICATION: pagerduty;localhost;Current Users;CRITICAL;notify-service-by-pagerduty;USERS CRITICAL - 3 users currently logged in

    ご覧の通り、pagerduty連絡先にはこのSERVICE NOTIFICATION通知が通知されました。 pagerduty連絡先が決して表示されない場合は、 pagerduty連絡先が問題のホスト/サービスの通知に関連付けられていないことを意味します。 デフォルトの設定を使用している場合は、 pagerduty連絡先がpagerduty連絡先グループのメンバーであることを確認してpagerduty 。 pagerduty連絡先に通知がpagerdutyいる場合は、エージェントのログを/var/log/pdagent/pdagentd.logで確認してください。

    その他のトラブルシューティングのヒントについては、Nagiosトラブルシューティングガイドを参照してください。

    PagerDutyはどのようなNagiosメッセージを理解できますか?

    PagerDutyは、 PROBLEMACKNOWLEDGEMENT 、およびRECOVERYメッセージを処理できます。 FLAPPINGSTARTおよびFLAPPINGSTOPを含む他のすべてのメッセージは無視されます。

    Nagiosアラートをカスタマイズするにはどうしたらいいですか?

    NagiosからPagerDutyに送信された通知をカスタマイズするためのガイドが用意されています。

Project Details