Nagios XIインテグレーションガイド – エージェントレス

Project Description

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


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

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

Note:このガイドは、 PagerDutyエージェントを使用するNagios XI双方向統合ガイド置き換えられています。新しいインテグレーションガイドの手順を最初に実行してみて、PagerDutyエージェントをインストールできないシステムがある場合にのみ、この手順を使用してください。 新しいインテグレーションガイドの双方向インテグレーションスクリプトは、そのままのPerlベースのインテグレーションでは使えないことにも注意してください。 双方向インテグレーションは、新しいインテグレーションを使用する場合にのみサポートされます。

PagerDutyでの設定

  1. Configuration メニューから Services を選択します。
  2. Service ページで:

インテグレーションのために新しいサービスを作成する場合は、+Add New Service をクリックします。既存のサービスに追加する場合は、追加するサービスの名前をクリックします。 その後、Integrations タブをクリックし、+ New Integrationボタンをクリックします。

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

  1. 新しいインテグレーション合のIntegration Keyをコピーします。

 

Nagios XIサーバでの設定

  1. 必要なPerl依存関係をインストールします。
    yum install perl-libwww-perl perl-Crypt-SSLeay
  2. GitHubからpagerduty_nagios.plをダウンロードし、 /usr/local/binにコピーします。
    wget https://raw.github.com/PagerDuty/pagerduty-nagios-pl/master/pagerduty_nagios.pl 
    cp pagerduty_nagios.pl /usr/local/bin
  3. ファイルがNagiosによって実行可能であることを確認してください:
    chmod 755 /usr/local/bin/pagerduty_nagios.pl
  4. nagios.cfg (Nagios Enterprisesが提供する仮想マシンイメージを使用している場合は、 /usr/local/nagios/etc)で環境変数マクロを有効にします。
    enable_environment_macros=1

    このステップは必須です。 環境マクロが有効になっていない場合、インテグレーションも実行できません

  5. nagiosユーザのcronテーブルを編集します:
    crontab -u nagios -e
  6. ファイルに次の行を追加します。
    * * * * * /usr/local/bin/pagerduty_nagios.pl flush
  7. Nagios XI Webインターフェイスにnagiosadminとしてログインし、 Configureメニューに移動してCore Config Managerを選択します。 左メニューの Commandsをクリックし、Add Newをクリックします。

  8. Command NameLineTypeを次のように設定し、 Saveをクリックします 。
    • Command Name:
      notify-service-by-pagerduty
    • Command Line
      /usr/local/bin/pagerduty_nagios.pl enqueue -f pd_nagios_object=service -f CONTACTPAGER="$CONTACTPAGER$" -f NOTIFICATIONTYPE="$NOTIFICATIONTYPE$" -f HOSTNAME="$HOSTNAME$" -f SERVICEDESC="$SERVICEDESC$" -f SERVICESTATE="$SERVICESTATE$"
    • Command Type
      misc command

  9. Add Newをクリックして別のコマンドを追加します。
  10. Command NameLineTypeを次のように設定し、 Saveをクリックします。
    • Command Name:
      notify-host-by-pagerduty
    • Command Line
      /usr/local/bin/pagerduty_nagios.pl enqueue -f pd_nagios_object=host -f CONTACTPAGER="$CONTACTPAGER$" -f NOTIFICATIONTYPE="$NOTIFICATIONTYPE$" -f HOSTNAME="$HOSTNAME$" -f HOSTSTATE="$HOSTSTATE$"
    • Command Type
      misc command

  11. 左メニューのContacts をクリックし、Add New をクリックします。

  12. Alert Settings タブに移動して、次のホストオプションを設定し、Manage Host Notification Commands をクリックします。
    • Host Notifications Enabled:オン
    • Host Notifications Timeperiod: 24×7
    • Host Notification options: d、r

  13. notify-host-by-pagerdutyコマンドを選択して、Add Selectedをクリックしてください。 notify-host-by-pagerdutyAssigned列に移動していることを確認してから、Closeをクリックします 。

  14. Alert Settingsタブに戻って、次のサービスオプションを設定し、Manage Service Notification Commandsをクリックします。
    • Service Notifications Enabled:オン
    • Service Notifications Timeperiod: 24×7
    • Service Notification options: w、u、c、r

  15. notify-service-by-pagerdutyコマンドを選択して、Add Selectedをクリックしてください。 notify-service-by-pagerdutyAssigned列に移動していることを確認してから、Closeをクリックします 。

  16. Misc Settingsタブに移動し、Manage Variable Definitionsをクリックします。

  17. Variable namepagerVariable valueにPagerDutyからコピーしたインテグレーションキーを設定し、Insertをクリックしてください。 変数が右の列に追加されていることを確認し、Closeをクリックします 。

  18. Common Settings タブに移動してContact Namepagerduty 、複数のPagerDutyサービスとインテグレートする場合は、pagerduty_ databasepagerduty_networkなどのpagerduty_database名前)をpagerduty_networkにし、Manage Contact Groups.をクリックします 。

  19. Adminsグループ、またはホストとサービスにも関連付けられる連絡先のグループを選択して、Add Selected をクリックします。 admins (または代替グループ名)がAssigned 列に移動していることを確認し、Close をクリックします。

  20. Saveをクリックして新しい連絡先を保存します。
  21. 左側のメニューでHost Templatesをクリックし、PagerDuty通知に使用するテンプレートを選択します。 このガイドでは、 generic-hostを使用しています。これによって、通常、インテグレーションプロセスが完了するとすぐにすべてのホストの通知を受け取ることができます。

  22. Alert Settingsタブに移動して、次のオプションを設定し、Manage Contactgroupsクリックします 。
    • Notification period 24×7
    • Notification options d、u、r
    • Notification interval 1分
    • Notification enabledオン

  23. Adminsグループ(または手順15で選択した代替グループ)を選択して、Add Selectedをクリックします。 グループ名がAssigned列に移動していることを確認し、Closeをクリックします。

  24. Saveをクリックして、ホストテンプレートを保存します。
  25. Apply Configurationをクリックして、新しいコマンド、連絡先、およびホストテンプレートの変更を有効にします。

 

よくある質問

このインテグレーションはどのように機能し、新しいインテグレーションとはどのように異なるのでしょうか?

このインテグレーションは、新しいエージェントベースのインテグレーションより古いLinuxディストリビューションと互換性のあるPerlスクリプトを使用しますが、新しいインテグレーションの双方向(通知)機能はありません。エージェントベースのインテグレーションから双方向スクリプトをそのままPerlスクリプトと併用することはできません。 双方向インテグレーションは、新しいインテグレーションを使用する場合にのみサポートされます。 このため、エージェントが対応していないシステム(CentOS 5など)を使用している場合を除き、エージェントベースのインテグレーションを使用することをお勧めします。

Perlスクリプトは、Nagiosから受け取ったイベントを/tmp/pagerduty_nagiosキューに追加することによって動作します。スクリプトは、Nagiosから受信した直後に、キューをフラッシュ(PagerDutyにイベントを送信)しようとします。スクリプトが何らかの理由でPagerDutyに到達できない場合(接続の問題などにより)、イベントはキューに保持されます。送信されていないものがあれば、キューのフラッシュを再試行するcronジョブが存在します。

スクリプトには、実行時に設定できるオプションがいくつかあります。たとえば、キュ​​ーに使用するディレクトリを変更する機能やプロキシを設定する機能などです。 オプションはスクリプトに記載されています 。 Nagiosの設定とcronジョブで定義された両方のコマンドにオプションを設定する必要があることに注意してください。

ヒント:インテグレーションに関する問題を実行し、PagerDutyに送信したくないいくつかのイベントをキューに蓄積する場合は、 /tmp/pagerduty_nagios内のイベントファイルを削除して、スクリプトが可能なときにイベントファイルが送信されないようにしてくださいPagerDutyにアラートを正常に送信します。

 

Nagios XIを複数のPagerDutyサービスで動作させるように設定方法を教えてください?

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

 

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

何らかの理由でPagerDutyサーバにアクセスできない場合、イベントはディスク上のキューに保存されます。 cronジョブは毎分に1回イベントを再送信しようとします。

 

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

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

 

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

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

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

 

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

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

 

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

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

Project Details