Icingaインテグレーションガイド

Project Description

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


このガイドでは、単純なPerlベースのプラグインを使用して、IcingaのインストールとPagerDutyにインテグレートする方法について説明します。IcingaはNagiosのフォークであるため、IcingaにもNagios用のPagerDuty’s bulit in supportを使用します。インストールするにはrootでログインする必要があります。Linuxディストリビューションの種類やIcingaの設定によっては、以下の手順を少し変更する必要があります。インストールが失敗した場合は当社までご連絡ください。

※Icinga 2の場合はこちらをクリック

 

はじめに

PagerDutyにIcingaサービスがない場合は作成する必要があります。

PagerDutyでの設定

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

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

     

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

     

Icingaでの設定

  1. 必要なPerlモジュールをインストールします。Debian、Ubuntu、その他Debian系Linuxの場合は、
    aptitude install libwww-perl libcrypt-ssleay-perl

    RHEL、Fedora、CentOS、その他RedHat系の場合は、

    yum install perl-libwww-perl perl-Crypt-SSLeay
  2. GitHubからpagerduty_icinga.cfgをダウンロードします。
    wget https://raw.github.com/PagerDuty/pagerduty-icinga-pl/master/pagerduty_icinga.cfg
  3. エディタでファイルを開きます。
  4. Nagios/Icingaサービスに対応するインテグレーションキーをPagerDutyのフィールドに入力します。インテグレーションキーは、サービスの詳細ページにある32文字の文字列です。
  5. Icingaの設定ファイルを以下のディレクトリにコピーしてオーナーを変更します。
    cp pagerduty_icinga.cfg /usr/local/icinga/etc/objects
    chown icinga:icinga /usr/local/icinga/etc/objects/pagerduty_icinga.cfg
  6. コンタクト「pagerduty」をIcinga設定のメインコンタクトグループに追加します。デフォルト設定を使用している場合は、/usr/local/icinga/etc/objects/contacts.cfgを開き「admins」コンタクトグループを探します。その後は、コンタクトで「pagerduty」を追加するだけです。
    define contactgroup{
         contactgroup_name admins
         alias Icinga Administrators
         members icingaadmin,pagerduty ; <-- Add 'pagerduty' here. 
    }
  7. pagerduty_icinga.plをGitHubからダウンロードし、/usr/local/binにコピーします。
    wget https://raw.github.com/PagerDuty/pagerduty-icinga-pl/master/pagerduty_icinga.pl
    cp pagerduty_icinga.pl /usr/local/bin
  8. PerlスクリプトをIcingaで実行できるように属性を変更します。
    chmod 755 /usr/local/bin/pagerduty_icinga.pl
  9. /usr/local/icinga/icinga.cfgで環境変数マクロを有効にします(有効になっていない場合)。
    enable_environment_macros=1
  10. Icingaユーザーのcrontabを編集します。
    crontab -u icinga -e
  11. crontabに次の行を追加します。
    * * * * * /usr/local/bin/pagerduty_icinga.pl flush
  12. Icingaをリスタートしします。
    /etc/init.d/icinga restart

よくある質問

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

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

IcingaはPagerDutyに障害レポートを送信するためにインターネット接続が必要ですが、サイトが外部接続を失った場合、どうすれば通信ダウンの通知を受け取れますか?

Pingdomのような外部のpingチェックサービスを設定して、サイトの外部接続を監視する必要があります。 もちろん、PagerDutyを使ってこれらのサービスから通知を転送することもできます。

うまく動作していないようです。どうしたのでしょうか?

syslogでpagerduty_icingaのメッセージを確認してください。ほとんどのシステムでは次のようにします。

grep pagerduty_icinga /var/log/syslog

まだ解決できない場合は当社までご連絡ください。

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

PagerDutyは、PROBLEM、ACKNOWLEDGMENT、RECOVERYメッセージを処理できます。FLAPPINGSTARTおよびFLAPPINGSTOPを含む他のすべてのメッセージは無視されます。PagerDutyに追加でIcingaメッセージを処理させたい場合はお知らせください。

IcingaとPagerDutyの双方向インテグレーションとは?

Nagios/IcingaとPagerDutyの双方向インテグレーションパッケージで、PagerDutyの一般的なインテグレーションAPIとwebhookを利用し、Nagios/IcingaからPagerDutyへの通知を送信し、アラートステータスを維持、同期することができます。詳細はこちらをご覧ください。

Project Details