DOCS
インテグレーションガイド / Check_MK Perl
![Check_MK Perl](https://strapi-admin.pagerduty.digitalstacks.net/uploads/check_mk_logo_706603c82f.png)
本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。
Check_MKは、Nagiosの上に構築されています。Nagiosは、オープンソースおよびエンタープライズクラスのITインフラストラクチャ監視ツールの主要プロバイダーの1つです。Nagiosは世界中の何十万人ものユーザーが使用しており、ITインフラ全体を監視し、問題が発生する前に発見し、セキュリティ違反を検出し、ITアップグレードの計画/予算を立てられるようにします。 既存のCheck_MK監視ソリューションにPagerDutyを統合することで、PagerDutyのスケジュールでオンコール中の担当者に直接電話で呼び出せます。
このマニュアルでは、Check_MK 1.2.xをPagerDutyと単独で、またはOpen Monitoring Distribution(OMD)の一部として、単純なPerlベースのプラグインを使って統合する方法を説明します。 インストールを完了するには、 root
としてログインする必要があります。 正確なLinuxディストリビューションとCheck_MKの設定とバージョンに合わせて、パスなどを少し変更する必要があるかもしれません。 統合を完了する際に問題が発生した場合は、サポートチームにお問い合わせください。
注意:このガイドは古いもので、最新のインテグレーションは PagerDutyエージェントを使うCheck_MK 統合ガイドをご覧ください。 新しい統合ガイドの手順を最初に実行してみて、PagerDutyエージェントをインストールできないシステムがある場合にのみ、この手順を使用してください。
PagerDutyでの設定
- Configuration メニューからServices を選択します。
- Servicesページで:
インテグレーションのために新しいサービスを作成する場合は、 +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をコピーします。
Check_MKサーバーでの設定
このガイドには、DebianベースのLinuxディストリビューション(つまりUbuntu)とRHELベースのLinuxディストリビューション(すなわちCentOS、Fedora)と、CheckMKのスタンドアロンバージョンとOMDバージョンのためのステップが含まれています。 このガイドの全コマンドを実行する必要はなく、システムのタイプにあったコマンドだけを実行する必要があります。使用するCheck_MKのバージョンに応じて、使用するパスを調整する必要があります。 提供されるすべてのコマンドは、 root
ユーザーとして実行されることを前提としています。
-
必要なPerl依存関係をインストールします。 Debianベースのシステムの場合:
apt-get install libwww-perl libcrypt-ssleay-perl
RHELベースのシステムの場合:yum install perl-libwww-perl perl-Crypt-SSLeay
-
GitHubから
pagerduty_nagios.pl
をダウンロードし、/usr/local/bin
にコピーして、Nagiosによってファイルが実行可能であることを確認します。wget https://raw.github.com/PagerDuty/pagerduty-nagios-pl/master/pagerduty_nagios.pl
cp pagerduty_nagios.pl /usr/local/bin
chmod 755 /usr/local/bin/pagerduty_nagios.pl
-
Check_MKのスタンドアロン版を使用している場合は、
nagios
ユーザのcronテーブルを編集します。crontab -u nagios -e
Check_MKのOMDバージョンを使用している場合は、su
を使用してOMDサイトのユーザーになります。su - {site-name-here}
-
スタンドアロンバージョンのCheck_MKを使用している場合は、ファイルに次の行を追加します。
* * * * * /usr/local/bin/pagerduty_nagios.pl flush
Check_MKのOMDバージョンを使用している場合は、サイトのcron.d
ディレクトリ(通常は/omd/sites/{site-name-here}/etc/cron.d
)にファイルを作成し、次の行をファイルに追加します:* * * * * /usr/local/bin/pagerduty_nagios.pl flush
ファイルを
pagerduty
として保存し、変更を有効にするために次のpagerdutyを実行してから、root
に戻ります。omd reload crontab
exit
-
GitHubから
pagerduty-perl
をダウンロードして実行可能にします:wget https://gist.githubusercontent.com/jcurreee/b8f4472659d7c2e402a6/raw/5f7fff04b45a62538eda458e287b2b3e0c61156e/pagerduty-perl
chmod +x pagerduty-perl
-
通知用スクリプトを所定の場所に移動します。Check_MKのスタンドアロンバージョンの場合、これは通常
/usr/share/check_mk/notifications
です。mv pagerduty-perl /usr/share/check_mk/notifications
Check_MKのOMDバージョンでは、通常/omd/sites/ {site-name-here}/local/share/check_mk/notificationsです。mv pagerduty-perl /omd/sites/{site-name-here} /local/share/check_mk/notifications
-
Check_MK Webインターフェースにログインし、Users ( WATO Configurationボックスにあります)に移動し、New Userをクリックします 。
-
PagerDutyユーザーのUsernameと、Full name(オプションです)を入力します。 将来の複数のPagerDutyサービスにアラートできるようにするために、Check_MKホストとサービスを設定する場合は、作成したPagerDutyサービスの名前と全く同じフルネームを設定すると便利です。 このユーザーのパスワードを入力しないでください。その代わりに、disable the login to this accountになっていることを確認する必要があります。このアカウントはPagerDuty Perlスクリプトに通知を送信するためだけに存在するからです。 ユーザーの役割をNormal monitoring user、あるいは通知を送信する権限だけを与えて作ったカスタムロールに設定し、アラートを受信するホスト/サービスの一部であるContact Groups ユーザーを追加します。 完了したら Save をクリックします 。
-
作成したユーザーの横の Notificationアイコン(放送塔のアイコン)をクリックします。 Check_MK 1.2.4以前を使用している場合は、 Edit アイコン(鉛筆のアイコン)をクリックしてください。
-
New Ruleクリックします。 Check_MK 1.2.4以前を使用している場合は、Notificationsボックスまでスクロールしてください。
-
新しい通知方法のDescription を入力し、Notification Methodを**PagerDuty (Perl)**に設定します。 PagerDutyエージェントを選択した後に表示されるテキストボックスに、PagerDutyからコピーしたインテグレーションキーを貼り付け、PagerDutyに送信されるアラートを制限する条件を選択します。完了したら Saveをクリックします 。
Check_MK 1.2.4以前を使用している場合は、enable notificationsをチェックし、Notification Method をFlexible Custom Notificationsに設定します。 Add notificationをクリックし、 Notification Pluginを PagerDuty (Perl)に設定します。 PagerDutyエージェントを選択した後に表示される最初のPlugin Argumentsテ キストボックスにPagerDutyからコピーしたインテグレーション キーを貼り付け、Notification Method(注:Notification Optionsではありません)のHost Events とService Eventsのの下にあるStart or end of flapping stateとStart or end of scheduled downtimeのチェックボックス(訳注:つまり全部で4箇所あります)からチェックを外します。 完了したらSave をクリックします 。
12. Usersリストに戻り、 # Changesをクリックし、Activate Changesをクリックします。
13. おめでとうございます! 設定が正常に有効になったことが確認できたら、完了です! Check_MKはPagerDutyでインシデントをトリガー、確認、解決できるようになり、cronジョブは最初の試行で正常に送信されなかった場合(つまり接続の問題がある場合など)にイベントを送信し直します。
次のステップ
すべての機能が正常に動作することを確認するには、Check_MKインターフェースでホストまたはサービスに行き、 Executeアイコン(ハンマーのアイコン)をクリックします。 Fake check resultsボックスで、Critical(サービスの場合)またはDown (ホストの場合)をクリックし、Yes をクリックします。 あなたが偽のアラートを送信したいことを確認する表示が出ます。 一時的にPagerDutyで作成された新しいインシデントが表示されるはずですが、このテストインシデントはすぐ解決されるはずであることに注意してください。偽のチェック結果が次回のチェックで実際のチェック結果に置き換えられるためです。
よくある質問
複数のPagerDutyサービスで動作するようにCheck_MKを設定するにはどうすればよいですか?
PagerDutyのCheck_MKサービスがCheck_MKのユーザに直接マッピングされるため、これは、現在の統合では簡単です。 複数のサービスを設定するには、Check_MKに複数のユーザーを作成するだけです(例:
pagerduty_database
、pagerduty_network
など)。 次に、対応するインテグレーションキーをPagerDutyからコピーし、Notification Method パラメータ/ Plugin Argumentsフィールドに貼り付けます。 設定を有効にするために変更を有効にすることを忘れないでください。ネットワークがダウンしているときにCheck_MKイベントが発生するとどうなりますか?
何らかの理由でPagerDutyサーバーにアクセスできない場合、イベントはディスク上のキューに保存されます。 cronジョブは毎分1回イベントを再送信しようとします。
Check_MKはPagerDutyに失敗のレポートを送るために外部インターネット接続が必要ですが、サイトが外部接続できなくなった場合、どうすれば通知を受け取れますか?
StatusCakeやNodePingなどの外部pingチェックサービスを設定して、サイトの外部接続を監視する必要があります。 もちろん、PagerDutyを使ってこれらのサービスからアラートを受け取ることもできます。
インテグレーションが機能していないようです。 どうしてですか?
まず、
syslogでpagerduty_nagios
を含むメッセージを確認します。Debianベースのシステムの場合:
grep pagerduty_nagios /var/log/syslog
RHELベースのシステムの場合:
grep pagerduty_nagios /var/log/messages
PagerDutyはCheck_MKの統合に関してどのようなNagiosメッセージを理解していますか?
PagerDutyは、
PROBLEM
、ACKNOWLEDGEMENT
、およびRECOVERY
メッセージを処理できます。FLAPPINGSTART
とFLAPPINGSTOP
を含む他の全メッセージ、またはカスタムメッセージは無視されます。