DOCS
インテグレーションガイド / Nagios XI

Nagios XI

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

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

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

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

PagerDutyでの設定

  1. ConfigurationメニューからServicesを選択します。

  2. Servicesページで新しいサービスを作成する場合はServiceページで**+Add New Serviceをクリックします。既存のサービスに追加する場合は、サービスの名前をクリックします。その後Integrations** タブをクリックし、+New Integrationボタンをクリックします。 RS-Add-New-Service-13-300x113

  3. Integration Typeメニューから追加したいアプリケーションを選択し、Integration Nameを入力します。新たにサービスを作成する場合は、General Settingsで、サービスのNameを入力します。次に、Incident Settingsで、新しいサービスのEscalation Policy (エスカレーションポリシー)、Notification Urgency(通知の緊急度)、Incident Behavior<(インシデントの動作)を指定します。

  4. Add ServiceまたはAdd Integrationボタンをクリックして、インテグレーションを保存します。するとサービスのIntegrationsページにリダイレクトされます。 RS-Integration-Settings-11-300x109

  5. 新しいインテグレーションのIntegration Keyをコピーします。 RS_Updates__API_Services-1024x146-8-300x43

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

よくある質問

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

    双方向のインテグレーションでは、PagerDutyからWebhookコールを受信するために、インターネット経由でNagiosサーバにアクセスさせる必要があります。 あなたのNagios Webサーバーへのアクセスを特定のIPに制限したい場合は、PagerDutyのWebhook IPをナレッジベース

  2. ホワイトリストとファイアウォールの目的でのPagerDutyのIPとは何ですか?(ホワイトリストやファイアウォールに指定できるPagerDutyのIPは何ですか?)

    を見てください。あるいは、ngrokのようなサービスを使うと、Webhook用に使えるパブリックなURLを使用して、Nagiosサーバーへの安全なトンネルを作成することができます。

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

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

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

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

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

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

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

    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トラブルシューティングガイドを参照してください。

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

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

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

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