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

Project Description

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


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

 

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

 

PagerDutyでの設定

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

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

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

Icinga 2 Serverでの設定

  1. 必要なPerlモジュールをインストールします。 Debian、Ubuntu、その他Debian系のディストリビューションの場合は、
apt-get install libwww-perl libcrypt-ssleay-perl libsys-syslog-perl

RHEL、Fedora、CentOS、その他RedHatベースのディストリビューションの場合、

yum install perl-libwww-perl perl-Crypt-SSLeay perl-Sys-Syslog
  1. CentOS 7ユーザーの場合、追加のモジュールをインストールする必要があります。
yum install perl-LWP-Protocol-https
  1. GitHubからpagerduty-icinga2.cfgをダウンロードします。
wget https://raw.githubusercontent.com/mdcollins05/PagerDuty-Icinga2/master/pagerduty-icinga2.conf
  1. テキストエディタ(nano、vim、Emacsなど)でファイルを開き、Icinga 2サービスに対応するインテグレーションキーをPager Dutyのフィールドに入力します。インテグレーションキーは、インテグレーションの詳細ページにある32文字の文字列です。
  2. 設定ファイルpagerduty-icinga2.cfgを所定のディレクトリに移動します。
mv pagerduty-icinga2.conf /etc/icinga2/conf.d/
  1. カスタム属性use_pagerdutyを設定ファイルのホストおよびサービス設定オブジェクトに追加します。
vars.enable_pagerduty = true # Add this line to hosts/services that will send events to PagerDuty

これを行う最も簡単な方法は、すべての設定オブジェクトで使用されるテンプレートに追加することです。たとえば、Debian系のシステムでは、デフォルト設定にgeneric-hostテンプレートを使用するホストオブジェクトと、generic-serviceテンプレートを使用するサービスオブジェクトがあります。テンプレートは/etc/icinga2/conf.d/templates.confで定義されており、以下のように変更することができます。

template Host "generic-host" {
 max_check_attempts = 5
 check_interval = 1m
 retry_interval = 30s

 check_command = "hostalive"

 vars.enable_pagerduty = true # Add this line
}
template Service "generic-service" {
 max_check_attempts = 3
 check_interval = 1m
 retry_interval = 30s

 vars.enable_pagerduty = true # Add this line
}
  1. 手順6でテンプレートにカスタム属性を追加した場合は、そのテンプレートがホストオブジェクトとサービスオブジェクトで使用されていることを確認してください。たとえば、generic-hostテンプレートとgeneric-serviceテンプレートに追加した場合、オブジェクトには次のいずれかの行があります。
import "generic-host" # All host objects should have this line in them
import "generic-service" # All service objects should have this line in them
  1. 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
  1. PerlスクリプトがIcingaによって実行可能なように属性を変更します。
chmod 755 /usr/local/bin/pagerduty_icinga.pl
  1. Icingaユーザーのcrontabを編集します(一部のシステムでは、IcingaはNagiosユーザーとして動作することがあります)。
crontab -u icinga -e
  1. Crontabに次の行を追加します。
* * * * * /usr/local/bin/pagerduty_icinga.pl flush
  1. Icinga 2をリスタートします。
/etc/init.d/icinga2 restart

 

よくある質問

 

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

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

 

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

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

 

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

syslogで「pagerduty」のメッセージを確認してください。ほとんどのシステムでは、

grep -i pagerduty /var/log/icinga2/icinga2.log

他にチェックが必要なログは、「Icinga event」のメッセージを含むsyslogです。

grep "Icinga event" /var/log/syslog

それでも解決できない場合はご連絡ください。

 

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

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

 

Project Details