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

Pandora FMS

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

Pandora FMSは監視を可視化します。 これは、ファイヤウォールやルーターなど、さまざまなオペレーティングシステム、サーバー、アプリケーション、およびハードウェアシステムからのパラメータのステータスとパフォーマンスを表示します。監視の出力は、レポートやアラートでも使用できます。Pandora FMSのアラートシステムを使用すると、ユーザーはほぼ無限の数のアラートとトリガー動作を設定できます。アラートは、電子メール、SMSを送ったり、警告音を発生させたり、ログへ書き込んだりできますし、またはカスタムスクリプトを使えばやれることを全部を行うことができます。PagerDutyと組み合わせることで、システムのそれらの部分を設定および保守することなく、通知タスクをPagerDutyに任せられます。

この統合を設定すると、Pandora FMSアラートをPagerDutyインシデントに変換できます。 Pandora FMSアラートは、APIコールを介してPagerDutyインシデントを作成するPerlスクリプトを実行します。ユーザーは通常の方法で管理するように、PagerDutyインシデントを電子メール、SMS、電話、またはモバイルプッシュ通知を介してサービスを設定することができます。

インテグレーションの要件

Pandora FMS 5.0以上をインストールする必要があります。 要件の詳細リストは、http://wiki.pandorafms.com のオンラインドキュメントを参照してください。また、 Perlは次の依存関係とともにインストールする必要があります。

  • LWP :: UserAgent(APIへのPostコールを実行するために必要)
  • JSON(コール中にデータ構造を構築するために必要)
  • File :: Basename(スクリプトパスを見つけて一時ファイルを保存するために必要)
  • IO :: Socket :: SSL(HTTPSを使用してAPIコールを実行するために必要)

このインテグレーションはPagerDutyのAPIをコールすることで実行されるため、インターネット接続も必要です。Pandora FMS 5.0 SP3以降では、インテグレーションスクリプトとPagerDuty incidentというアラートコマンドが使用できます。以下の手順が完了したら、このガイドの「In Pandora FMS」の手順1と2をスキップしてください。

  • インテグレーションスクリプトのパスは、下記の通りです。[SERVER_INSTALLATION_PATH] /pandora_server/util/pagerduty/pandorafmsalert2pagerduty.pl
  • システムのAlertコマンドリストは、Pandora FMSコンソールのAdministration > Manage alerts > Commandsセクションで利用できます。

PagerDutyでの設定

  1. ConfigurationメニューからServicesを選択します。

  2. Serviceページで: インテグレーションのために新しいサービスを作成する場合は、 +Add New Service をクリックします。 既存のサービスにインテグレーションを追加する場合は、統合を追加するサービスの名前をクリックします。 その後、Integrations タブをクリックし、 + New Integration ボタンをクリックします。 RS-Add-New-Service-13

  3. Integration Typeメニューから追加したいアプリケーションを選択し、Integration Nameを入力します。新たにサービスを作成する場合は、General Settingsで、サービスのNameを入力します。次に、Incident Settingsで、新しいサービスのEscalation Policy (エスカレーションポリシー)、Notification Urgency(通知の緊急度)、Incident Behavior<(インシデントの動作)を指定します。

  4. Add ServiceまたはAdd Integrationボタンをクリックして、インテグレーションを保存します。するとサービスのIntegrationsページにリダイレクトされます。 RS-Integration-Settings-11

  5. 新しいインテグレーションのIntegration Keyをコピーします。 RS_Updates__API_Services-1024x146-8

Pandora FMSでの設定

  1. Pandora FMSモジュールライブラリからpandorafmsalert2pagerduty.plというスクリプトをダウンロードします。

  2. サーバーが利用できるパスにスクリプトを配置します。 推奨されるパスは次の通りです。 [SERVER_INSTALLATION_PATH]/pandora_server/util/pagerduty/

  3. スクリプトの一般的な実行のための「Alert Command」を作成します。 これは2つの方法、つまり事前に定義されたSQLスクリプトを使用するか、Pandora FMSインターフェイスを使用して手動で行うか、どちらかの方法で実行できます。

    1. Pandora FMS(バージョン5以上)データベースでSQLスクリプトPagerDutyPandoraFMSCommand.sqlを自動的に実行します。 このスクリプトは Pandora FMSモジュールライブラリで見つけることができます。
    2. Administration > Manage alerts > Commandsの順に手動で進み、アラートが発生した時に実行するスクリプトへのコールを伴うアラートコマンドを作成します。 configure_pandora_alert このコマンドは、絶対パスを使用するインテグレーションスクリプトへのコールです。 /usr/share/pandora_server/util/pagerduty/pandorafmsalert2pagerduty.pl "_field8_" "_id_alert_" "_field9_" "_field10_" "_timestamp_" "_alert_text_severity_" "_agent_" "_module_" "_data_" カスタムフィールドは次のようになります。
      • field8:PagerDutyサービスから取得したService APIキー
      • field9:インシデントのタイプ。 取りうる値は次の通り:
        • trigger:インシデントを作成または更新するための標準コール。
        • resolve:インシデントを閉じる。 field10:インシデントの説明。 注:下のほうのフィールドを使う一般的なテンプレートおよびアクションとの互換性を保つために、上にあるフィールドが優先されます。
  4. PagerDutyサービスごとにAlert Action(アラートアクション)を作成します。Pandora FMSのアラートにはいくつかのアクションを設定できます。アクションは一般的なコマンドを使うことができ、必要なパラメーターを追加できます。 このインテグレーションでは、PagerDutyサービスごとにアクションを作成します。 これを行うには、** Administration** > Manage alerts> Actionsのメニューに移動し、新しいアラートアクションを作成します。 configure_pandora_alert_action1 アラート設定では、名前を入力し、先に作成したPagerDutyコマンドを選択します。 3つの設定フィールドが表示されます:

    • Service API key: PagerDutyサービスから得られるキーです。
    • Type:新しいインシデントを作成するには’Trigger’を使用し、終了するには’Resolve’を使用します。 Resolveは通常、リカバリーアラートパラメータで使用されます。
    • Description: PagerDutyインシデントに送信される説明。 一般的な例では、“Alert has been fired in Pandora FMS”(「アラートがPandora FMSで発生しました」)です。 設定フィールドを変更すると、インテグレーションスクリプトの実行例を示すようにコマンドプレビューが更新されます。
  5. アラートが回復したときにPagerDutyインシデントを閉じるようにアラートテンプレートを設定します。この手順は、Pandora FMSの回復済みアラートがPagerDutyで関連するインシデントを閉じるようにしたい場合などにのみ必要です。 Administration >Manage alerts >Templatesを選択して、目的のテンプレートを編集します。Pandora FMSがデフォルトで設定しているテンプレートの1つ、“Critical condition”を設定します。 ただし、この設定はどんなアラートテンプレートとも互換性があります。 edit_critical_alert_template テンプレートエディタで、 Step 3 > Recoveryに進みます。 configure_recovery_message PagerDutyとの総合に使用されるコマンドで設定されたフィールドは、8,9と10です。

    • Field 8: PagerDuty service API key。 このキーはアクションで設定されているため、空欄のままです。
    • Field 9: Type of the incident。先ほどPandora FMSアラートが発せられたときに、PagerDutyインシデントを作成するアクションでTriggerを選択しました。復旧時には、PagerDutyの事態を解決するために値を ” resolve “に上書きします。
    • Field 10: Description of the incident インシデントが終了したときに、そのインシデントに異なる説明を登録するように説明を変更します。別のオプションは、フィールドを空いたままにして、アクションフィールドを使用することです。 この場合、フィールドは回復時に接頭辞[RECOVER]を受け取ります。 アラートが回復する(例:ping応答に再び答えるようになる)と、PagerDutyへのインシデントは閉じられます(解決済みになります)。
  6. おめでとう! Pandora FMSシステムがPagerDutyと統合されました。

Pandora FMSがPagerDutyと通信していることを確認する

  • Create agent ボタンをクリックして、Administration> Manage monitoring> Manage agentsの中でサンプルエージェントを作成します。 configure_pandora_agent_manager
  • エージェントの内部で、簡単なネットワークモニタを作成します。Create a new network server moduleボタンをクリックします。 create_new_network_module
  • このモニターは、5分ごとに定義されたIPにpingを実行する ‘Host Alive’モニターになります。モジュールの設定が完了したら、Createボタンをクリックします。 configure_pandora_module1
  • このモジュールに関連づけて、テンプレート ‘Critical condition’を使用してアクション ‘New PageDuty incident’でアラートを作成します。 終了したら、 Add Alertボタンをクリックします。 agent_example
  • Criticalになる前にアラートが存在するかどうかを目視で確認します。 monitor_before_alert
  • このモニタがクリティカルな状態(ping失敗)になると、アラートが発せられます。 色が緑色から赤色に変わったことを確認します。 critical_monitor

アラートが発生した後に、API経由でPagerDutyでインシデントが作成されたことを確認します。モジュールが critical state (recovered)になると、PagerDuty内のインシデントを自動的に解決にします。

よくある質問

  1. Pandora FMSのアラートはPagerDutyのインシデントとどうに対応しますか?

    各々のPandora FMSアラートがPagerDutyの各インシデントと一致します。利用できない場合、インシデントが作成されます。新しいインシデントは、次の場合にPandora FMSのアラートによって作成されます。

    • アラートに関連付けられているPagerDutyインシデントが見つからない(例:アラートが以前に発生したことがないなど)。
    • アラートに関連するPagerDutyのインシデントが終了したとき(ステータス:Resolved)。 このステータスは次のように変更できます。
      • ユーザー:インシデントはクローズとマークされていますが、まだ発生しているため、新しいインシデントが作成され、アラートに関連付けられます。
      • Pandora FMS:Pandora FMSアラートは、回復したときにインシデントを閉じるように設定されています。再度アラートが発せられると、新しいインシデントが作成され、アラートに関連付けられます。
  2. perlスクリプトはどう動作しますか?

    このスクリプトはpandorafmsalert2pagerduty.plと呼ばれ、次の構文が使えます:

    /pandorafmsalert2pagerduty.pl [service_api_key] [id_alert] [event_type] [description] [fired_timestamp*] [severity*] [agent_name*] [module_name*] [module_data*]

    • service_api_key: インシデントが作成されるPagerDutyサービスのAPIキー
    • id_alert: Pandora FMSのアラートの識別番号
    • event_type: PagerDuty内のインシデントタイプ。インシデントを作成するための’Trigger’とそれを閉じるための’Resolve’があります
    • description: PagerDutyインシデントに格納されている説明
    • fired_timestamp: ‘yy-mm-dd hh:mm:ss’という形式のタイムスタンプ。 Pandora FMSで警告が発せられた時
    • severity:アラートの深刻​​度(Maintenance, Informational, Normal, Minor, Warning, Major, Critical
    • agent_name:アラートを発生させたPandora FMSエージェントの名前
    • module_name:アラートを発生させたPandora FMSモニターの名前
    • module_data: Pandora FMSでアラートを発生させた監視データ

    トラブルシューティング Pandora FMSアラートが発生しても、PagerDutyには何も作成されません ありうる原因:

    • 誤設定:上記の全手順を実行した後、Pandora FMSコマンド、アクション、およびテンプレートが正しく設定されていることを確認してください。
    • SSLの依存関係の問題:インテグレーションスクリプトはHTTPSを使用してPagerDuty APIを呼び出します。 これを行うには、まずIO :: Socket :: SSLのPerl依存関係をインストールする必要があります。
  3. PagerDutyでインシデントがトリガーされたが、リカバリしても解決になりません

    考えられる原因:

    • 誤設定:Pandora FMSアラートは、上記で説明したように、リカバリが有効になっていてfield9が ‘resolve’ で設定されているテンプレートで設定する必要があります。
    • 外部ファイルの作成中にエラーが発生ました:インシデントスクリプトは、Pandora FMSとPagerDutyのIDを照合してマッチしたもののリストを保持します。これらの隠しファイルは、デフォルトでスクリプトと同じパス内に作成されます。 権限の問題で、このパスが書き込み可能ではない可能性があります。
    • 変数:インテグレーションスクリプトを編集し、変数$ matchup_dirの書き込み可能なパスをファイルの先頭に設定します。
  4. スクリプトの実行をデバッグしたいんですが

    Pandora FMSサーバーでのアラート実行のデバッグは、冗長性レベルが8に設定されています。システムのpandora_server.conf(/ etc / pandora /にあります)のverbosityトークンで少なくともこのレベルを設定して、デバッグするためにサーバーを再起動(/ etc / pandora_server restart)する必要があります。 これで、pandora_server.logファイル(/ var / logにあります)で実行コマンドを読み取れるようになります。その後に、サーバーのシェルのコマンドラインで手動でテストを行えば、実行結果からより多くのフィードバックを取得できます。

    その他のご質問は、 サポートまでご連絡ください。