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

Icinga

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

このガイドでは、単純なPerlベースのプラグインを使用して Icinga ht​tp://w​ww.icinga.org/ のインストールと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ボタンをクリックします。 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

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
    

よくある質問

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

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

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

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

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

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

    grep pagerduty_icinga /var/log/syslog
    

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

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

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

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

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