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

本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。
Network Performance Monitor(NPM)やServer&Application Monitor(SAM)などのSolarWinds Orionプラットフォーム製品は、マルチベンダーネットワーク、LinuxおよびWindows Serverシステムや、Apache HTTP Server、Microsoft Exchange、Oracle Databaseなどの200を超えるアプリケーションの詳細なアプリケーションパフォーマンス監視メトリックのネットワーク、パフォーマンス、可用性、およびサーバーの監視を提供します。 NPMとSAMの両方で、PagerDutyでインシデントをトリガー&解決できるカスタム・スレッショルド(しきい値)に基づいてアラートをトリガー&リセットできます。
このインテグレーションは、SolarWinds Orionのアラートを、 Events API用にフォーマットされたJSONを含むファイルにログすることによって機能します 。あるVBScriptが、アラートが書き込まれるキューディレクトリ内のすべてのファイルを繰り返し処理し、JSONをPagerDutyに送信し、アラートファイルがサーバーによって受け入れられた後に削除します。
互換性について
このガイドとVBScriptは、SolarWinds Orionプラットフォーム2015.1および2016.1を使い、Windows Server 2012 R2で作成およびテストされました。もっと古いバージョンのNPMをお使いの場合は、 「Legacy SolarWinds NPM Integration Guide 」を参照してください。 Orionプラットフォームを使用していない以前のバージョンのSAM / APMおよびSolarWinds製品は、代わりにEメールインテグレーションを使用してPagerDutyにアラートを送信するように設定できます。
PagerDutyでの設定
-
ConfigurationメニューからServicesを選択します 。
-
Servicesのページで次の操作を行います。
-
インテグレーションのために新しいサービスを作成する場合は、Add New Serviceをクリックします。
-
既存のサービスに統合を追加する場合は、統合を追加するサービスの名前をクリックします。 次に、 Integrations タブをクリックし、 New Integrationボタンをクリックします。

-
-
Integration Type メニューから追加したいアプリを選択して、 Integration Nameを入力してください。 インテグレーションのために新しいサービスを作成する場合は、General Settingsで新しいサービスのNameを 入力します。 次に、Incident settingsで、新しいサービスの Escalation Notification Urgency 、および Incident Behavior を指定します。
-
Add Service または Add Integration ボタンをクリックして、新しいインテグレーションを保存します。 すると、サービスのIntegrationsページに回送されます。
-
新しいインテグレーションの Integration Key をコピーします。

SolarWindsサーバーでの設定
-
SolarWindsサーバーの
C:ドライブに以下のディレクトリを作成します。-
C:\PagerDuty/code -
C:\PagerDuty\Queue
-
-
次のVBScriptとサンプルアラートをダウンロードして、VBScriptをSolarWindsサーバーの
C:\PagerDutyに保存し、ワークステーションまたはSolarWindsサーバー上のサンプルアラートをどこかに保存します。
ワークステーションまたはSolarWindsサーバー(つまり、デスクトップ、 Downloadsフォルダ、またはC:\PagerDuty\Sample Alerts )でSample Alerts.zipを抽出します。
-
管理者としてSolarWindsにログインし、Settings メニューに行き、All Settingsを選択します(古いバージョンのSolarWindsを使用している場合は、ページの右上にあるSettingsをクリックします)。次にNode & Group Management セクションの下にあるManage Custom Propertiesクリックします 。

-
Add Custom Propertyクリックします。

-
Nodesを選択し、 Nextをクリックします。

-
Property Nameを
PDIntegrationKeyに設定し、必要に応じて「PagerDuty Service Integration Key」などのDescriptionを設定し、Nextをクリックします。
-
Select Nodesをクリックし、PagerDutyでアラートを受信させたいAvailable Nodes列のすべてのノードをチェックし、 AddをクリックしてノードをSelected Nodes列に移動し、 Select Nodesをクリックします。

-
以前にコピーしたインテグレーションキーを、Assign value for “PDIntegrationKey” to selected Nodes下のボックスに貼り付け、SUBMITをクリックします。

-
SettingsメニューからAll Settingsを選択するか、古いバージョンのSolarWindsを使用している場合は、ページの右上にあるSettingsをクリックしてMain Settings & Administrationぺージに戻ります。Alerts & Reports セクションのManage Alerts をクリックします。

-
SolarWindsで、当社がそのためにテンプレートを作成した最も一般的なアラートのいくつかを、Export/Importをインポートします。 Import Alertをクリックして、SolarWindsにインポートしたいるアラート定義を、以前に
Sample Alerts.zipファイルを解凍した場所(デスクトップ、Downloadsフォルダ、またはC:\PagerDuty\Sample Alerts)から選択します。 NPMとSAMの両方で使用できる共通のアラートは、メインのSample Alertsフォルダにあり、SAM用のアラートは、Sample Alerts\SAMます。 一度にインポートできるアラートは1つだけです。
-
Windowsのタスクスケジューラを開き、アクションサイドバーの Create Task をクリックします。 タスクにPagerDutyのようなNameとRun whether user is logged in or notを選択します 。

-
Triggersタブに切り替えて New….をクリックし、Begin the taskのドロップダウンリストで「At startup」をクリックして選択します。Repeat task everyというラベルのチェックボックスをオンにし、「1 minue」と入力します(このオプションはリストにありません。手動で入力する必要があります)。その後、duration を「Indefinitely」に変更してOKをクリックします。 これらの手順を繰り返し、2回目は「At task creation/modification」のみを選択します。

-
Actions タブを選択し、**New….**をクリックします 。 Program/script を
C:\Windows\System32\cscript.exeに設定し、Add argumentsに//B "C:\PagerDuty\PagerDuty.vbs"を設定し、OK をクリックします。
-
OKをクリックします。

-
おめでとう! SolarWindsはPagerDutyでインシデントをトリガー&解決できるようになり、スケジュールされたタスクは最初の試行で(つまり接続の問題などにより)正常に送信されなかった場合にイベントの再送信を試みます。
独自のアラートを作成するには
PagerDutyに追加のアラートを送信するには、使用するアラートを選択してTrigger Actionsに進み、 Log the Alert to a Fileオプションを使用してアクションを追加します。 ファイルは、 .txtという拡張子付きでC:\PagerDuty\Queueに記録する必要があります。さらにその内容は、 Event API用にフォーマットされたJSONである必要があります 。 PagerDutyに送信されるアラートを作成する方法の例については、アラート定義を参照してください。
Special Charactersの制限:アラートテンプレートに引用符(”)を含めないでください。これを使うと出力中に文字列が終了したことになり、JSON構文が無効になり、Event APIに送信できなくなります。 テンプレートの中に引用符を含める必要がある場合は、通常の引用符“ ではなく、“ ” を使用することを強くお勧めします。
最後に、 Execute an External VB Scriptを実行するアクションを追加し、 CScript.exeインタープリタを使用して"C:\PagerDuty\PagerDuty.vbs"を呼び出すことをお勧めします。 これにより、SolarWindsはスケジュールされたタスクが実行されるのを待たずに、即座にPagerDutyにアラートを送信することができます。
よくある質問
複数のPagerDutyサービスでインシデントをトリガーできますか?
はい! それには別々のPagerDutyサービスにインシデントをトリガーさせたノードの詳細ページに移動して、Custom Propertiesまでスクロールダウンしてから、Edit Custom Property Values をクリックして、そのノードの
PDIntegrationKeyに異なる値を設定します(カスタムアラート用の統合キーをハードコードしていない限り)アラートを変更する必要はありません。ここで提供するテンプレートはSQLクエリーを使用して各ノードのカスタムプロパティからインテグレーションキーを取得します。
PagerDutyでアラートを受け取れません。 どうすればエラーをチェックできますか?
まず、
WScript.exeインタプリタではなくCScript.exeを使用してVBScriptを実行していること、およびスケジュールされたタスクとSolarWindsトリガーの両方でスクリプトファイル名が引用符で囲まれていることを確認します。このスクリプトはWindowsアプリケーションイベントログにエラーを記録します。このログが、PagerDutyに送信されないアラートの問題を解決する助けになります。別の方法として、手動でコマンドプロンプトで
CScript.exe "C:\PagerDuty\PagerDuty.vbs"と入力してVBScriptを実行させてみて、キュー内のファイルに何が起こっているかを段階的に確認することもできます。ステータス400(Invalid Request)エラーが表示された場合は、問題のファイルの内容を調べてください。 次の情報が表示された場合は、アラートが発生したノードまたはホストにPDIntegrationKeyというカスタムフィールドが設定されているかどうかを確認します。
"service_key": "",`C:\PagerDuty`以外の場所にVBScriptを置いてアラートファイルを書き込めますか?
VBScriptおよびアラートキューディレクトリを
C:\PagerDuty以外の場所に配置する場合は、XMLアラート定義ファイルをインポートしてから、そのパスを目的の場所に変更してから処理を進める必要があります。 残念ながら、SolarWindsは現在、%SystemDrive%などのWindows環境変数を使用したVBScriptの実行や、警告ファイルをディレクトリに書き込む処理をサポートしていないため、このパスをアラート定義にハードコードする必要があります。VBScriptの
QueuePath変数をC:\PagerDuty\Queueから変更して、アラートキューを配置する場所を指すようにする必要があります。共有フォルダーまたはマップされたネットワークドライブ(つまり、複数のSolarWindsサーバーで使用する)からVBScriptにアラートを書き込み、実行することはできますか?
SolarWindsは共有フォルダまたはマップされたネットワークドライブからVBScriptを実行できますが、スクリプトを持つホストが使用できなくなる場合に備えて、各システムでローカルコピーとアラートキューを使用することをお勧めします。 これは、SolarWindsのナレッジベースでも推奨されています 。Tips for executing external scripts and batch files with alerts.
たとえば、SolarWindsがファイルサーバーのキューにアラートを書き込んで、そのサーバーでホストされているVBScriptを実行している場合、何らかの理由でサーバーがダウンすると、SolarWindsはファイルサーバーが再び利用可能になるまで、VBScriptを実行してアラートファイルを書き込むことも、PagerDuty内にSolarWindsアラートに対するインシデントをトリガーすることもできません。
ネットワークがダウンしているときにSolarWindsアラートが生成されたらどうなりますか?
何らかの理由でPagerDutyにアクセスできない場合、イベントは
C:\PagerDuty\Queueに保存されます。 VBScriptを実行するスケジュールされたタスクは、イベントを1分間隔で再送信しようとするため、SolarWindsサーバーはPagerDutyにインシデントを送信し、インターネットに再びアクセスできるようになります。ネットワークが稼働して、Queueフォルダが過去に送信されたアラートの.txtファイルでいっぱいになっている場合はどうなりますか?
これが起こっている場合は、ファイルのアクセス許可を確認してください。 この場合は、SolarWindsがスケジュールされたタスクがそれらを読めるけれども削除できないような権限を持つファイルを作成している可能性があります。

