DOCS
インテグレーションガイド / Whatsup Gold
本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。
WhatsUp Goldは、異機種混在の環境やベンダーを網羅して統一されたビューを提供するため、ネットワーク上のあらゆることを見ることができます。 実用的な統一ダッシュボードからあらゆることを監視・分析することで、ネットワークのパフォーマンスを向上させ、今日の多様なネットワーク全体の稼働時間を改善します。
この統合は、PagerDutyのEvents API用にJSON形式でフォーマットされたファイルにWhatsUp Goldアラートを記録することによって機能します。あるVBScriptが、アラートが書き込まれるキューディレクトリ内の全ファイルを繰り返し処理して、JSONをPagerDutyに送信し、アラートファイルがサーバーによって受け入れられた後に削除します。
互換性に関する注記
このガイドとVBScriptはWindows Server 2012 R2でWhatsUp Gold 2017を使って作成し、テストされたものです。アラートをファイルに記録する機能をサポートしていないWhatsUp Goldの以前のバージョンの場合は、 電子メールインテグレーションを使用してPagerDutyにアラートを送信するように設定できます。
PagerDutyでの設定
-
Configuration メニューから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をコピーします。
WhatsUp Gold Serverでの設定
-
WhatsUp Goldサーバの
C:
ドライブに以下のディレクトリを作成します。-
C:\PagerDuty
-
C:\PagerDuty\Queue
-
-
次のVBScriptをダウンロードし、WhatsUp Goldサーバーの
C:\PagerDuty
に保存します。 -
WhatsUp Gold Webインターフェースに管理者としてログインし、Settings → Actions & Alerts → Actions and Policiesの順番で移動します。
-
ライブラリに新しいLog To Text Fileアクション を作成します。
-
新しいアクションに”Log Alert to PagerDuty Queue”などの名前を付け、Log Fileパスを
C:\PagerDuty\Queue\%Device.HostName_Down.txt
に設定し、Log file write modeをOverwriteに変更してから、 Log Messageフィールドに次のように入力します。{ "service_key": "YOUR-INTEGRATION-KEY-HERE", "incident_key": "%Device.Address Monitors Down", "event_type": "trigger", "description": "%Device.ActiveMonitorDownNames %Device.State on %Device.HostName", "details": { "Monitors that are down": "%Device.ActiveMonitorDownNames", "Monitors that are up": "%Device.ActiveMonitorUpNames", "Host Name": "%Device.HostName", "IP Address": "%Device.Address" } }
YOUR-INTEGRATION-KEY-HEREを、先ほど作成したPagerDutyインテグレーションキーと置き換えるのを忘れないでください。
-
アクションライブラリに別の新しいLog To Text Fileアクションを作成します。 この新しいアクションに”Log Recovery to PagerDuty Queue”などのNameを付け、 Logファイルのパスを
C:\PagerDuty\Queue\%Device.HostName_Up.txt
に設定し、 Log file write mode を Overwriteに変更してから、Log Messageフィールドに次のように入力します。{ "service_key": "YOUR-INTEGRATION-KEY-HERE", "incident_key": "%Device.Address Monitors Down", "event_type": "resolve", "description": "%Device.ActiveMonitorDownNames %Device.State on %Device.HostName" }
YOUR-INTEGRATION-KEY-HERE
を先ほど作成したPagerDutyインテグレーションキーで置き換えるのをお忘れなく。 -
新しいProgram Actionを作成し、新しいアクションに Execute PagerDuty VBScriptなどのNameを付け 、 Program file nameを
C:\Windows\System32\cscript.exe
、 Workig pathをC:\PagerDuty
、Program arguments//B "C:\PagerDuty\PagerDuty.vbs"
に設定します。 -
新しいアクションポリシーを作成し、”PagerDuty”などのNameを付けます(または、PagerDutyでアラートをトリガーさせたいデバイスによってすでに使用されている既存のポリシーを編集します)。次に、 UPとDown(ダウン)状態の両方のために実行させたいPagerDutyアクションを追加します。Log AlertアクションはDown状態で実行する必要があり、Log ActionはUp状態で実行する必要がありますが、Program Action(VBScript実行)は両方の状態で実行する必要がありますが、Log AlertまたはLog Recoveryアクションの後に実施されます。
-
このアクションポリシーを使用するようにデバイスを設定するには、MY NETWORKに移動してデバイスを選択し、Monitor setup をクリックします 。 Actions and Action Policiesタブに移動し、Apply the following Action Policyを選択し、前の手順で作成または更新したアクションポリシーを選択します。
-
Windowsのタスク スケジューラを開き、ActionsサイドバーのCreate Taskをクリックします 。 タスクにPagerDutyのようなNameを付け、Run whether user is logged in or notを選択します。
-
Triggersタブに切り替えてNew…ボタンをクリックし、Begin the task:のドロップダウンリストをクリックして、 At startup を選択します。 Repeat task everyというラベルのチェックボックスをオンにし、1 minuteと入力します(このオプションはリストにありません。手動で入力する必要があります)。次に、duration (訳注 for a duration of:)をindefinitely (無期限)に変更してOKをクリックします。 これらの手順を繰り返しますが、2回目は At Task creation/modification を選択するだけでOKです。
-
Actionタブを選択し、 New…をクリックします。Program/script:を
C:\Windows\System32\cscript.exe
に設定し、 Add arguments (optional):を//B "C:\PagerDuty\PagerDuty.vbs"
に設定してから 、OK をクリックします。 -
OKをクリックします。
-
おめでとう! WhatsUp GoldはPagerDutyでインシデントをトリガーしたり解決したりできるようになりました。最初の試行で(接続の問題などで)正常に送信されなかった場合にはスケジュールされたタスクがイベントを再送信します。
アラートのカスタマイズ
Log To Text FileアクションのLog Messageを変更することにより、PagerDutyに送信されるアラートデータをカスタマイズできます。ファイルは、C:\PagerDuty\Queue
に拡張子.txt
で記録する必要があります。コンテンツは、当社の Events API用にフォーマットされたJSONである必要があります 。
特殊文字:引用符などの、JSON出力に影響する文字を使うアラートがある場合は、それらの文字をバックスラッシュでエスケープするか、またはVBScriptを変更してそれらを処理させる必要があります。 たとえば、アラートに引用符を追加する場合は、 Log To Text Fileアクションでバックスラッシュ( \
)を\"
というように追加します。必要に応じて、VBScriptを変更してReplace Methodを使用して他の特殊文字をエスケープできるように設定できます。バックスラッシュはエスケープ文字としてJSONので特別な意味を持っていますが、Windowsパスを含むアラートでも使用されています。そこでスクリプトで他の特殊文字をエスケープに使えるようにするのです。
最後に、 CScript.exe
インタプリタを使用して"C:\PagerDuty\PagerDuty.vbs"
を実行する、Program Actionが設定されていることを確認する必要があります。 これにより、スケジュールされたタスクが送信されるまで待つ必要はなく、WhatsUp GoldがPagerDutyにアラートをただちに送信することができます。
よくある質問
複数のPagerDutyサービスでインシデントをトリガーできますか?
はい。 Log To Text Fileアクションを複製し、異なるPagerDutyインテグレーションキーを使用するように変更します。それから、これらの新しいアクションを使用する新しいアクションポリシーを作成して、この代替アクションポリシーを使用するように目的のデバイスを設定します。
PagerDutyでアラートを受け取れません。 どうすればエラーをチェックできますか?
このVBScriptは、PagerDutyに送信されないアラートの問題を解決できるように、Windowsアプリケーションイベントログにエラーを記録します。コマンドプロンプトで
CScript.exe "C:\PagerDuty\PagerDuty.vbs"
と打って、VBScriptを手動で実行して、アラートファイルに何が起こっているかをステップバイステップで確認することもできます。`C:\PagerDuty`以外の場所にVBScriptを置いたりアラートファイルを書き込めますか?
VBScriptやアラートキューのディレクトリを
C:\PagerDuty
以外の場所に配置する場合は、VBScriptの中でQueuePath
変数をC:\PagerDuty\Queue
からアラートキューを置きたい場所に変更する必要があります。(複数のWhatsUp Goldサーバーで共用する)共有フォルダーまたはマップされたネットワークドライブにアラートを書き込んだり、VBScriptを実行したりすることはできますか?
VBScriptは共有フォルダまたはマップされたネットワークドライブから実行できますが、スクリプトを置いたホストが使用できなくなった場合に備えて、各システムでローカルコピーとアラートキューを使用することをお勧めします。
例えば、WhatsUp Goldがファイルサーバー上のキューにアラートを書き込んで、そのサーバーでホストされているVBScriptを実行し、何らかの理由でサーバーがダウンすると、WhatsUp Goldはアラートファイルを書き込むことも、VBScriptを実行することもできません。ファイルサーバーが再び利用可能になるまで、WhatsUp GoldアラートのPagerDutyにインシデントをトリガーします。
ネットワークがダウンしている時にWhatsUp Goldアラートが発生されるとどうなりますか?
何らかの理由でPagerDutyにアクセスできない場合、イベントは
C:\PagerDuty\Queue
保存されます。 VBScriptを実行するスケジュールタスクは、1分間隔でイベントを再送しようとするため、そのタイミングでWhatsUp GoldサーバーはPagerDutyにインシデントを送信し、インターネットに再びアクセスできるようになります。