DOCS
インテグレーションガイド / Nagios XI Perl
本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。
Nagios XIは、Nagios Coreソフトウェアの機能を拡張し、重要なITシステムの詳細なホストとサービスの監視を提供します。
以下のガイドでは、単純なPerlベースのプラグインを使用してNagios XIインストールをPagerDutyにインテグレートする方法について説明します。インストールを完了するには、root
としてログインする必要があります。 インテグレーションを完成させる際に問題がある場合、サポートチームまでお問い合わせください。
Note:このガイドは、 PagerDutyエージェントを使用する Nagios XI双方向統合ガイドに置き換えられています。新しいインテグレーションガイドの手順を最初に実行してみて、PagerDutyエージェントをインストールできないシステムがある場合にのみ、この手順を使用してください。 新しいインテグレーションガイドの双方向インテグレーションスクリプトは、そのままのPerlベースのインテグレーションでは使えないことにも注意してください。 双方向インテグレーションは、新しいインテグレーションを使用する場合にのみサポートされます。
PagerDutyでの設定
-
ConfigurationメニューからServicesを選択します。
-
Service ページで: インテグレーションのために新しいサービスを作成する場合は、+Add New Service をクリックします。既存のサービスに追加する場合は、追加するサービスの名前をクリックします。 その後、Integrations タブをクリックし、+ New Integrationボタンをクリックします。
-
Integration Typeメニューから追加したいアプリケーションを選択し、Integration Nameを入力します。新たにサービスを作成する場合は、General Settingsで、サービスのNameを入力します。次に、Incident Settingsで、新しいサービスのEscalation Policy (エスカレーションポリシー)、Notification Urgency(通知の緊急度)、Incident Behavior<(インシデントの動作)を指定します。
-
Add ServiceまたはAdd Integrationボタンをクリックして、インテグレーションを保存します。するとサービスのIntegrationsページにリダイレクトされます。
-
新しいインテグレーションのIntegration Keyをコピーします。
Nagios XIサーバでの設定
- 必要なPerl依存関係をインストールします。
yum install perl-libwww-perl perl-Crypt-SSLeay
- 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
- ファイルがNagiosによって実行可能であることを確認してください:
chmod 755 /usr/local/bin/pagerduty_nagios.pl
- nagios.cfg (
Nagios Enterprises
が提供する仮想マシンイメージを使用している場合は、/usr/local/nagios/etc
)で環境変数マクロを有効にします。enable_environment_macros=1
このステップは必須です。 環境マクロが有効になっていない場合、インテグレーションも実行できません。 nagios
ユーザのcronテーブルを編集します:crontab -u nagios -e
- ファイルに次の行を追加します。
* * * * * /usr/local/bin/pagerduty_nagios.pl flush
- Nagios XI Webインターフェイスに
nagiosadmin
としてログインし、 Configureメニューに移動してCore Config Managerを選択します。 左メニューの Commandsをクリックし、Add Newをクリックします。 - Command Name 、Line 、Typeを次のように設定し、 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
- Command Name:
- Add Newをクリックして別のコマンドを追加します。
- 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
- Command Name:
- 左メニューのContacts をクリックし、Add New をクリックします。
- Alert Settings タブに移動して、次のホストオプションを設定し、Manage Host Notification Commands をクリックします。
- Host Notifications Enabled:オン
- Host Notifications Timeperiod: 24×7
- Host Notification options: d、r
notify-host-by-pagerduty
コマンドを選択して、Add Selectedをクリックしてください。notify-host-by-pagerduty
がAssigned列に移動していることを確認してから、Closeをクリックします 。- Alert Settingsタブに戻って、次のサービスオプションを設定し、Manage Service Notification Commandsをクリックします。
- Service Notifications Enabled: オン
- Service Notifications Timeperiod: 24×7
- Service Notification options: w、u、c、r
notify-service-by-pagerduty
コマンドを選択し、Add Selectedをクリックしてください。notify-service-by-pagerduty
がAssigned列に移動していることを確認してから、Closeをクリックします 。- Misc Settings タブに移動し、 Manage Variable Definitions をクリックします。
- Variable nameを
pager
、 Variable valueをPagerDutyからコピーしたインテグレーションキーに設定し、Insertをクリックします。 変数が右の列に追加されていることを確認し、Close をクリックします 。 - Common Settingsタブに移動して、Contact Name (
pagerduty
、複数の PagerDutyサー ビスと統合する場合は、pagerduty_database
、pagerduty_network
などの pagerduty_database名前)を設定し、Manage Contact Groupsクリックします 。 Admins
グループ、またはホストとサービスにも関連付けられる連絡先のグループを選択して、Add Selectedをクリックします。admins
(または代替グループ名)がAssigned 列に移動していることを確認し、Closeをクリックします 。- Saveをクリックして新しい連絡先を保存します。
- 左側のメニューでHost Templatesをクリックし、PagerDuty通知に使用するテンプレートを選択します。 このガイドでは、
generic-host
を使用しています。これによって、通常、インテグレーションプロセスが完了するとすぐにすべてのホスト の通知を受け取ることができます。 - Alert Settings タブに移動して、次のオプションを設定し、Manage Contactgroupsをクリックします 。
- Notification period: 24×7
- Notification options: d、u、r
- Notification interval: 1分
- Notification enabled: オン
Admins
グループ(または手順15で選択した代替グループ)を選択し、Add Selected クリックします。 グループ名がAssigned 列に移動していることを確認し、Close をクリックします 。- Saveをクリックして、ホストテンプレートを保存します。
- 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_database
、pagerduty_network
など)を作成し、対応するインテグレーションキーをPagerDutyからコピーしてpager
変数定義フィールドに貼り付け、希望するサービスの通知を受け取る連絡先グループのパートを作成します。 連絡先を保存した後に変更内容を適用して有効にすることを忘れないでください。ネットワークがダウンしているときにNagiosイベントが発生した場合はどうなりますか?
何らかの理由でPagerDutyサーバにアクセスできない場合、イベントはディスク上のキューに保存されます。 cronジョブは毎分に1回イベントを再送信しようとします。
NagiosはPagerDutyに失敗報告を送るため外部インターネット接続を必要としますが、私たちのサイトが外部接続を失った場合、私はどのように通知を受け取りますか?
StatusCakeやNodePingなどの外部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
その他のトラブルシューティングのヒントについては、 Nagiosトラブルシューティングガイドを参照してください 。
PagerDutyはどのようなNagiosメッセージを理解できますか?
PagerDutyは、
PROBLEM
、ACKNOWLEDGEMENT
、およびRECOVERY
メッセージを処理できます。FLAPPINGSTART
およびFLAPPINGSTOP
を含む他のすべてのメッセージは無視されます。Nagiosアラートをカスタマイズするにはどうしたらいいですか?
NagiosからPagerDutyに送信された通知をカスタマイズするためのガイドが用意されています。