DOCS
インテグレーションガイド / Icinga
本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。
このガイドでは、単純なPerlベースのプラグインを使用して Icinga http://www.icinga.org/ のインストールとPagerDutyにインテグレートする方法について説明します。IcingaはNagiosのフォークであるため、IcingaにもNagios用のPagerDuty’s bulit in supportを使用します。インストールするにはrootでログインする必要があります。Linuxディストリビューションの種類やIcingaの設定によっては、以下の手順を少し変更する必要があります。インストールが失敗した場合は当社までご連絡ください。
※Icinga 2の場合はこちらをクリック
はじめに
PagerDutyにIcingaサービスがない場合は作成する必要があります。
PagerDutyでの設定
-
ConfigurationメニューからServicesを選択します。
-
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をコピーします
Icingaでの設定
- 必要なPerlモジュールをインストールします。Debian、Ubuntu、その他Debian系Linuxの場合は、
RHEL、Fedora、CentOS、その他RedHat系の場合はaptitude install libwww-perl libcrypt-ssleay-perl
yum install perl-libwww-perl perl-Crypt-SSLeay
- GitHubからpagerduty_icinga.cfgをダウンロードします。
wget https://raw.github.com/PagerDuty/pagerduty-icinga-pl/master/pagerduty_icinga.cfg
- エディタでファイルを開きます。
- Nagios/Icingaサービスに対応するインテグレーションキーをPagerDutyのフィールドに入力します。インテグレーションキーは、サービスの詳細ページにある32文字の文字列です。
- Icingaの設定ファイルを以下のディレクトリにコピーしてオーナーを変更します。
cp pagerduty_icinga.cfg /usr/local/icinga/etc/objects chown icinga:icinga /usr/local/icinga/etc/objects/pagerduty_icinga.cfg
- コンタクト「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. }
- 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
- PerlスクリプトをIcingaで実行できるように属性を変更します。
chmod 755 /usr/local/bin/pagerduty_icinga.pl
- /usr/local/icinga/icinga.cfgで環境変数マクロを有効にします(有効になっていない場合)。
enable_environment_macros=1
- Icingaユーザーのcrontabを編集します。
crontab -u icinga -e
- crontabに次の行を追加します。
* * * * * /usr/local/bin/pagerduty_icinga.pl flush
- 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への通知を送信し、アラートステータスを維持、同期することができます。詳細はこちらをご覧ください。