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

Nagios XI Perl

本記事は米国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ボタンをクリックします。 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. 必要な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をクリックします。 nagios-xi-01-1-300x236
  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 nagios-xi-02-1-300x167
  9. Add Newをクリックして別のコマンドを追加します。
  10. Command Name 、** Line** 、 Typeを次のように設定し、 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 nagios-xi-02-1-300x167
  11. 左メニューのContacts をクリックし、Add New をクリックします。 nagios-xi-03-1-300x119
  12. Alert Settings タブに移動して、次のホストオプションを設定し、Manage Host Notification Commands をクリックします。
    • Host Notifications Enabled:オン
    • Host Notifications Timeperiod: 24×7
    • Host Notification options: d、r nagios-xi-04-1-260x300
  13. notify-host-by-pagerduty コマンドを選択して、Add Selectedをクリックしてください。 notify-host-by-pagerdutyAssigned列に移動していることを確認してから、Closeをクリックします 。 nagios-xi-05-1-300x224
  14. Alert Settingsタブに戻って、次のサービスオプションを設定し、Manage Service Notification Commandsをクリックします。
    • Service Notifications Enabled: オン
    • Service Notifications Timeperiod: 24×7
    • Service Notification options: w、u、c、r nagios-xi-06-300x233
  15. notify-service-by-pagerduty コマンドを選択し、Add Selectedをクリックしてください。notify-service-by-pagerdutyAssigned列に移動していることを確認してから、Closeをクリックします 。 nagios-xi-07-300x225
  16. Misc Settings タブに移動し、 Manage Variable Definitions をクリックします。 nagios-xi-08-300x294
  17. Variable namepagerVariable valueをPagerDutyからコピーしたインテグレーションキーに設定し、Insertをクリックします。 変数が右の列に追加されていることを確認し、Close をクリックします 。 nagios-xi-09-300x79
  18. Common Settingsタブに移動して、Contact Namepagerduty 、複数の PagerDutyサー ビスと統合する場合は、 pagerduty_databasepagerduty_network などの pagerduty_database名前)を設定し、Manage Contact Groupsクリックします 。 nagios-xi-10-300x195
  19. Admins グループ、またはホストとサービスにも関連付けられる連絡先のグループを選択して、Add Selectedをクリックします。 admins(または代替グループ名)がAssigned 列に移動していることを確認し、Closeをクリックします 。 nagios-xi-11-300x223
  20. Saveをクリックして新しい連絡先を保存します。
  21. 左側のメニューでHost Templatesをクリックし、PagerDuty通知に使用するテンプレートを選択します。 このガイドでは、 generic-host を使用しています。これによって、通常、インテグレーションプロセスが完了するとすぐにすべてのホスト の通知を受け取ることができます。 nagios-xi-12-300x159
  22. Alert Settings タブに移動して、次のオプションを設定し、Manage Contactgroupsをクリックします 。
    • Notification period: 24×7
    • Notification options: d、u、r
    • Notification interval: 1分
    • Notification enabled: オン nagios-xi-13-300x150
  23. Adminsグループ(または手順15で選択した代替グループ)を選択し、Add Selected クリックします。 グループ名がAssigned 列に移動していることを確認し、Close をクリックします 。 nagios-xi-14-300x222
  24. Saveをクリックして、ホストテンプレートを保存します。
  25. Apply Configurationをクリックして、新しいコマンド、連絡先、およびホストテンプレートの変更を有効にします。 nagios-xi-15-300x148

よくある質問

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

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

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

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

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

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

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

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

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

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

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

  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

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

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

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

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

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