2. OASE管理

2.1. はじめに

本書では、OASE管理の機能および操作方法について説明します。

2.2. メニュー構成

本章では、OASE管理で利用するメニュー構成について説明します。

2.2.1. メニュー/画面一覧

OASE管理のメニュー一覧を以下に記述します。
表 2.92 OASE管理 メニュー/画面一覧

No

メニューグループ

メニュー・画面

説明

1

OASE管理

イベント収集

イベント収集対象の情報を管理します。

2

通知テンプレート(共通)

OASEの通知で使用する情報を管理します。

2.3. エージェント概要

本章では、エージェント(Exastro OASE Agent)について説明します。

2.3.1. エージェントについて

エージェントは、Exastro IT Automation(以下、ITA)とは独立しており、ITA OASEと外部サービスの仲介役として機能します。
エージェントは、対象とする外部サービスのイベント収集設定をITAから取得し、その設定を用いて外部サービスからイベントを取得します。このプロセスを経て、取得したイベントをITAに送信します。
OASEエージェント概要

2.4. エージェント利用手順

本章では、エージェント(Exastro OASE Agent)の利用手順について説明します。

2.4.1. 作業フロー

エージェントを利用するための作業を含めた、OASEの作業フローは以下のとおりです。
エージェント利用のための作業の詳細は次項に記載しています。
OASE作業フロー
  • 作業フロー詳細と参照先

    1. イベント収集設定
      OASE管理のイベント収集メニュー画面から、イベント収集対象サービスに関する設定を登録します。
      詳細は イベント収集 を参照してください。
    2. ラベル設定
      OASEのラベル作成/ラベル付与メニュー画面から、ラベルを付与するための設定を行います。
      詳細は ラベル作成 および ラベル付与 を参照してください。
    3. エージェントのインストール・起動
      エージェントを起動し、イベント収集を開始します。
      詳細は インストールガイド(Docker Compose) を参照してください。
      詳細は インストールガイド(Kubernetes) を参照してください。

2.5. 通知テンプレート(共通)概要

OASEの通知機能の概要図を以下に示します。
通知テンプレート(共通)概要

図 2.71 通知テンプレート(共通)概要

OASEの通知機能の通知テンプレートのイベント種別を以下に示します。
通知テンプレートのイベント種別

図 2.72 通知テンプレートのイベント種別

2.6. 通知テンプレート(共通)利用手順

OASEの通知機能を利用するために必要な作業フローは以下のとおりです。
各作業の詳細は次項に記載しています。
通知テンプレート(共通)作業フロー

図 2.73 通知テンプレート(共通)作業フロー

  • 作業フロー詳細と参照先

    1. 通知テンプレート(共通)のメンテナンス(閲覧/更新)
      OASE管理の通知テンプレート(共通)メニュー画面から、OASEの通知で使用するテンプレートをメンテナンス(閲覧/更新)できます。
      詳細は 通知テンプレート(共通) を参照してください。
    2. 通知先設定の登録
      Exastro システムにオーガナイゼーション管理者でログインし、メニューより 通知管理 から登録します。
      詳細は 通知先設定の登録 を参照してください。
    3. (通知先がメールの方のみ)メール送信サーバの設定
      Exastro システムにオーガナイゼーション管理者でログインし、メニューより メール送信サーバ設定 から登録します。
      詳細は メール送信サーバーの設定 を参照してください。

注釈

通知テンプレート(共通)は、変更しなくても利用可能です。

2.7. 機能メニュー操作説明

本章では、OASE管理機能のメニュー操作説明について説明します。

2.7.1. メニューについて

本節では、OASE管理をインストールした状態で表示されるメニューの操作について記載します。

2.7.2. イベント収集

  1. OASE管理 ▶ イベント収集 では、(エージェントに設定する)イベント収集対象の、接続方式・認証方式・TTL等をメンテナンス(閲覧/登録/更新/廃止)できます。
サブメニュー画面(イベント収集)

図 2.74 サブメニュー画面(イベント収集)

  1. イベント収集※1 画面の入力項目は以下のとおりです。
    表 2.93 イベント収集画面 入力項目一覧

    項目

    説明

    入力必須

    入力方法

    制約事項

    イベント収集設定名

    任意のイベント収集設定名を入力します。

    自動入力

    最大長255バイト

    接続方式

    イベント収集対象への接続方法を選択します。

    ・Bearer認証

    ・パスワード認証

    ・任意の認証

    ・IMAP パスワード認証

    ・エージェント不使用

    リスト選択

    ※2

    リクエストメソッド

    イベント収集対象へのリクエストメソッドを選択します。

    ・接続方式がBearer認証、パスワード認証、任意の認証の場合

     - GET

     - POST

    ・接続方式がIMAP パスワード認証の場合

     - IMAP: Plaintext

    リスト選択

    ※2

    接続先

    イベント収集対象の接続先を入力します。

    ・メールサーバの場合はホスト名を入力します。

    ・APIの場合はURLを入力します。

    ・Jinja2形式で予約変数を使用できます。

     使用可能な予約変数の詳細は利用可能な予約変数一覧 を参照してください。

    手動入力

    最大長1024バイト

    ポート

    イベント収集対象のポートを入力します。

    手動入力

    0~65535

    認証情報

    リクエストヘッダー

    リクエストヘッダーを入力します。

    ・JSON形式で入力します。

    ・Jinja2形式で予約変数を使用できます。

     使用可能な予約変数の詳細は利用可能な予約変数一覧 を参照してください。

    手動入力

    最大長4000バイト

    プロキシ

    イベント収集対象のプロキシURIを入力します。

    手動入力

    最大長255バイト

    認証トークン

    Bearer認証の認証トークンを入力します。

    手動入力

    最大長1024バイト

    ユーザー名

    イベント収集対象へログインするユーザー名を入力します。

    手動入力

    最大長255バイト

    パスワード

    イベント収集対象へログインするユーザーのパスワードを入力します。

    手動入力

    最大長4000バイト

    メールボックス名

    イベント収集対象のメールボックス名を入力します。

    デフォルトでINBOXを参照します。

    手動入力

    最大長255バイト

    パラメータ

    ・JSON形式で入力します。

    ・Jinja2形式で予約変数を使用できます。

    ・リクエストメソッドがGETの場合、クエリパラメータ(接続先に追加される、"?"以降の値)として使用されます。

    ・リクエストメソッドがPOSTの場、リクエストのペイロードとして使用されます。

    ・使用可能な予約変数の詳細は利用可能な予約変数一覧 を参照してください。

    手動入力

    最大長255バイト

    レスポンスキー

    レスポンスのペイロードから、OASEのイベントとして受け取るプロパティの、親となるキーを指定します。

    レスポンスのペイロードの階層をJSONのクエリ言語(JMESPath)で指定します。

    手動入力

    最大長255バイト ※3

    レスポンスリストフラグ

    レスポンスキーで取得した値が配列かどうかを選択します。

    ・Trueの場合、レスポンスキーで取得した値を配列に分割し、その単位をイベントとして処理します。

    リスト選択

    ※3

    イベントIDキー

    受け取ったイベントをユニークに判別するIDとなるキーがある場合に入力します。

    ・レスポンスのペイロードの階層をJSONのクエリ言語(JMESPath)で指定します。

    ・レスポンスキーの指定やレスポンスリストフラグの指定を考慮した、それ以下の階層を指定します。

    手動入力

    最大長255バイト ※3

    TTL

    TTL(Time To Live)とは、エージェンが取得したイベントが、ルールの評価対象として扱われる期間(秒)のことです。

    手動入力

    最小値10(秒)

    最大値2147483647(秒)

    デフォルトの値:3600(秒)

    備考

    自由記述欄です。

    手動入力

    最大長4000バイト

※1 イベント収集対象への設定です。
※2 接続方式・認証情報・リクエストメソッドについて、必要な組み合わせは以下のとおりです。

接続方式

リクエストメソッド

認証情報

IMAP パスワード認証

・IMAP: Plaintext

・ユーザー名
・パスワード

Bearer認証

・GET
・POST

・認証トークン

パスワード認証

・GET
・POST
・ユーザー名
・パスワード

任意の認証

・GET
・POST

・パラメータに記述

※3 レスポンスキー、レスポンスリストフラグ 、イベントIDキーについては、 レスポンスキーとイベントIDキー を参照してください。

警告

収集先がメールの場合、文字コードの種類によりデコードできない文字を省いて収集イベントを保存する場合があります。
詳細は エージェントのデコード処理について を参照してください。

2.7.3. 通知テンプレート(共通)

  1. OASE管理 ▶ 通知テンプレート(共通) では、OASEの通知機能で使用するテンプレートをメンテナンス(閲覧/登録/更新/廃止)できます。

Tip

通知テンプレートの変更について
デフォルトの通知テンプレートは、利用する通知方法( 通知先設定の登録手順 )に応じて内容を変更、または項目を追加してください。
メール以外の通知方法を利用する場合、通知のテンプレートのフォーマット調整が必須です。
サブメニュー画面(通知テンプレート(共通))

図 2.75 サブメニュー画面(通知テンプレート(共通))

  1. 通知テンプレート(共通)画面の入力項目は以下のとおりです。

項目

説明

入力必須

入力方法

制約事項

イベント種別

テンプレートを使用するイベント種別を選択します。
・1.新規イベント(受信時)
・2.新規イベント(統合時)
・3.新規イベント(判定前)
・4.既知イベント(判定時)
・5.既知イベント(TTL有効期限切れ)
・6.未知イベント(判定時)

リスト選択

テンプレート

通知で使用するテンプレートを編集できます。
下記6種類はデフォルトで使用するテンプレートになります。
・New(received).j2
・New(consolidated).j2
・New.j2
・Known(evaluated).j2
・Known(timeout).j2
・Undetected.j2

手動入力

最大サイズ2MB

通知先

テンプレートを使用する通知先を選択します。
デフォルトのテンプレートには通知先を設定することはできません。
デフォルト以外のテンプレートでは、イベント種別内でユニークな通知先を選択する必要があります。

リスト選択

デフォルト

イベント種別に対して、レコードにない通知先に送信する場合にはデフォルトのテンプレートが使用されます。

備考

自由記述欄です。

手動入力

最大長4000バイト

Tip

デフォルトのテンプレートは、テンプレート・備考のみ更新することができ、その他の項目は更新することはできません。
また、デフォルトのテンプレートはレコードを廃止することもできません。
テンプレートの初期設定値は下記のとおりです。
リスト 2.49 New(received).j2
 1 [TITLE]
 2 Event Received;
 3
 4 [BODY]
 5 Event Received;
 6 Detailed information
 7   Event Factor             : {% if exastro_edit_count == 1 %}Primary Event{% else %}Consolidated Event{% endif %} ({{ exastro_edit_count }})
 8   Event collection settings: {{ labels._exastro_event_collection_settings_id }}
 9   Event fetch time         : {{ labels._exastro_fetched_time }}
10   Event end time           : {{ labels._exastro_end_time }}
11   Event type               : {{ labels._exastro_type }}
12
13   Re-evaluation
14     Event                  : {{ exastro_events }}
15
16   Label:
17     {% for key, value in labels.items() %}
18     ・{{ key }}: {{ value }}
19     {% endfor %}
20
21   Agent:
22     {% for key, value in exastro_agents.items() %}
23     ・{{ key }}: {{ value }}
24     {% endfor %}
リスト 2.50 New(consolidated).j2
 1 [TITLE]
 2 Event Consolidated by Deduplication {% if labels._exastro_timeout == 1 %} (ttl expired) {% endif %};
 3
 4 [BODY]
 5 Event Consolidated by Deduplication {% if labels._exastro_timeout == 1 %} (ttl expired) {% endif %};
 6 Detailed information
 7   Event Factor             : {% if exastro_edit_count == 1 %}Primary Event{% else %}Consolidated Event{% endif %} ({{ exastro_edit_count }})
 8   Event collection settings: {{ labels._exastro_event_collection_settings_id }}
 9   Event fetch time         : {{ labels._exastro_fetched_time }}
10   Event end time           : {{ labels._exastro_end_time }}
11   Event type               : {{ labels._exastro_type }}
12
13   Re-evaluation
14     Event                  : {{ exastro_events }}
15
16   Label:
17     {% for key, value in labels.items() %}
18     ・{{ key }}: {{ value }}
19     {% endfor %}
20
21   Agent:
22     {% for key, value in exastro_agents.items() %}
23     ・{{ key }}: {{ value }}
24     {% endfor %}
リスト 2.51 New.j2
 1 [TITLE]
 2 A new event has occured.
 3
 4 [BODY]
 5 Detailed information
 6   Event ID                 : {{ _id }}
 7   Event collection settings: {{ labels._exastro_event_collection_settings_id }}
 8   Event fetch time         : {{ labels._exastro_fetched_time }}
 9   Event end time           : {{ labels._exastro_end_time }}
10   Event type               : {{ labels._exastro_type }}
11
12   Re-evaluation
13     Evaluation rule name   : {{ labels._exastro_rule_name }}
14     Event                  : {{ exastro_events }}
15
16   Label:
17     {% for key, value in labels.items() %}
18     ・{{ key }}: {{ value }}
19     {% endfor %}
リスト 2.52 Known(evaluated).j2
 1 [TITLE]
 2 A known(evaluated) event has occured.
 3
 4 [BODY]
 5 Detailed information
 6   Event ID                 : {{ _id }}
 7   Event collection settings: {{ labels._exastro_event_collection_settings_id }}
 8   Event fetch time         : {{ labels._exastro_fetched_time }}
 9   Event end time           : {{ labels._exastro_end_time }}
10   Event type               : {{ labels._exastro_type }}
11
12   Re-evaluation
13     Evaluation rule name   : {{ labels._exastro_rule_name }}
14     Event                  : {{ exastro_events }}
15
16   Label:
17     {% for key, value in labels.items() %}
18     ・{{ key }}: {{ value }}
19     {% endfor %}
リスト 2.53 Known(timeout).j2
 1 [TITLE]
 2 A known(timeout) event has occured.
 3
 4 [BODY]
 5 Detailed information
 6   Event ID                 : {{ _id }}
 7   Event collection settings: {{ labels._exastro_event_collection_settings_id }}
 8   Event fetch time         : {{ labels._exastro_fetched_time }}
 9   Event end time           : {{ labels._exastro_end_time }}
10   Event type               : {{ labels._exastro_type }}
11
12   Re-evaluation
13     Evaluation rule name   : {{ labels._exastro_rule_name }}
14     Event                  : {{ exastro_events }}
15
16   Label:
17     {% for key, value in labels.items() %}
18     ・{{ key }}: {{ value }}
19     {% endfor %}
リスト 2.54 Undetected.j2
 1 [TITLE]
 2 An unknown event has occured.
 3
 4 [BODY]
 5 Detailed information
 6   Event ID                 : {{ _id }}
 7   Event collection settings: {{ labels._exastro_event_collection_settings_id }}
 8   Event fetch time         : {{ labels._exastro_fetched_time }}
 9   Event end time           : {{ labels._exastro_end_time }}
10   Event type               : {{ labels._exastro_type }}
11
12   Re-evaluation
13     Evaluation rule name   : {{ labels._exastro_rule_name }}
14     Event                  : {{ exastro_events }}
15
16   Label:
17     {% for key, value in labels.items() %}
18     ・{{ key }}: {{ value }}
19     {% endfor %}

Tip

Jinja2テンプレート利用の注意点

Jinja2テンプレートを用いて通知設定を行う際は、以下の点にご注意ください。

  • 必須要素の定義: テンプレートには、通知のタイトルと本文を定義する [TITLE] および [BODY] 要素が 必須 です。

  • 構文不足による通知失敗: 必須要素([TITLE]または[BODY])が不足している場合や、要素の記述に誤りがある場合、通知の実行は 失敗します

  • 編集箇所: 出力内容を変更する場合は、 [TITLE] および [BODY] の要素内部のみ を編集してください。これらの要素自体を削除したり変更したりしないでください。

  • Jinja2構文の参照: テンプレート内で使用する変数や制御構文の詳細については、Jinja2の公式ドキュメントを参照してください。

2.8. 付録

2.8.1. OASE Agentの処理フローと.envの設定値

本項では、以下について示します。
- OASE Agentの処理フロー
- OASE Agentのインストール時、.envに設定した、一部の設定値について
OASE Agent フロー図

図 2.76 OASE Agent処理フロー図

パラメータ

説明

AGENT_NAME

起動する OASEエージェントの名前および、内部データベースのファイル名として使用されます。

EXASTRO_URL

ITAに対してAPIリクエストをする際に、リクエスト先として使用されます。

EXASTRO_ORGANIZATION_ID

ITAに対してAPIリクエストをする際に、Organizationを識別するために使用されます。

EXASTRO_WORKSPACE_ID

ITAに対してAPIリクエストをする際に、ワークスペースを識別するために使用されます。
EXASTRO_ORGANIZATION_IDで設定したオーガナイゼーションと紐づいたワークスペースである必要があります。

EXASTRO_REFRESH_TOKEN

ITAに対してAPIリクエストをする際に、Bearer認証の認証トークンとして使用されます。
※ユーザーのロールが、OASE - イベント - イベント履歴メニューをメンテナンス可能である必要があります。

EXASTRO_USERNAME

ITAに対してAPIリクエストをする際に、Basic認証のユーザー名として使用されます。
※ユーザーのロールが、OASE - イベント - イベント履歴メニューをメンテナンス可能である必要があります。
※EXASTRO_REFRESH_TOKENを使わない場合(非推奨)

EXASTRO_PASSWORD

ITAに対してAPIリクエストをする際に、Basic認証のパスワードとして使用されます。
※EXASTRO_REFRESH_TOKENを使わない場合(非推奨)

EVENT_COLLECTION_SETTINGS_NAMES

このパラメータで設定されている値から、イベント収集設定をITAから取得し、設定ファイルを生成します。

ITERATION

上記フロー図にて緑色の矢印で示されているループ処理を、このパラメータで設定している数だけ行います。

EXECUTE_INTERVAL

上記フロー図にて緑色の矢印で示されているループ処理の実行間隔です。

2.8.2. イベント収集設定の即時反映について

本項では、イベント収集設定を変更した際に、OASE Agentに即時反映させる方法について説明します。
  1. OASE Agentのbashシェルを開始します。
    docker exec -it <OASE Agentのコンテナ名> bash
    
  2. 設定ファイル「event_collection_settings.json」を削除します。
    rm /tmp/<EXASTRO_ORGANIZATION_ID>/<EXASTRO_WORKSPACE_ID>/<AGENT_NAME>/event_collection_settings.json
    

Tip

OASE Agentでは、設定ファイル「event_collection_settings.json」が存在しない場合、ITAからイベント収集設定を取得し、設定ファイルを作成します。
設定ファイルを削除することで最新の設定を反映させることができます。
※この操作を行わない場合、前項 で示した「ITERATION」の数だけループする処理が終了するまで、変更後の設定が反映されません。

2.8.3. エージェントのデコード処理について

収集先がメールの場合の、収集イベントに対するエージェントのデコード処理に関しては以下のとおりです。

動作確認済み文字コード

表 2.94 動作確認済み文字コード

送信方法

メールのHeader

形式

言語

Content-Transfer-Encoding

Content-Type

plaintext

英語

7bit

text/plain; charset=US-ASCII

plaintext

日本語

8bit

text/plain; charset=UTF-8

plaintext

英語

8bit

text/plain; charset="ANSI_X3.4-1968"

html

英語

・plaintext: 7bit

・html: quoted-printable

multipart/alternative

・plaintext: text/plain; charset=US-ASCII

・html: text/html; charset=UTF-8

html

日本語

・plaintext: 8bit

・html: quoted-printable

multipart/alternative

・plaintext: text/plain; charset=UTF-8

・html: text/html; charset=UTF-8

デコードできない文字を省いて収集イベントを保存する場合の処理の例に関しては、以下のとおりです。
送信するメール
形式:plaintext
Content-Transfer-Encoding:8bit
Content-Type:text/plain; charset="ANSI_X3.4-1968"
件名:障害
内容:障害:Server01\r\n
ITAの画面で見た場合
件名:障害
内容:Server01\r\n
デコードできない文字を省いて収集イベントを行う例・結果(イベントフロー)

図 2.77 デコードできない文字を省いて収集イベントを行う例・結果(イベントフロー)

2.8.4. レスポンスキーとイベントIDキー

本項では、 下記について説明します。
レスポンスキー
JMESPath
レスポンスリストフラグ
イベントIDキー

レスポンスキー

レスポンスのペイロードから、イベントを抽出すためのキーを レスポンスキー といいます。

注釈

・監視ソフトは、監視対象マシンで発出されたアラートやメトリックス(状態)をHTTP APIで取得できる機能があり、
・エージェントは、そのHTTP APIを利用して、アラートやメトリックスを取得します。
・但し、監視ソフトが返却するレスポンスのぺーロードが、JSON形式のみ、エージェントは処理対象とします。
レスポンスキー として指定できる項目は、
 ・レスポンスのペイロードで、イベントとして取り扱う項目を、子要素に格納していること。
 ・イベントとして取り扱う項目が、複数ある場合、子要素を配列で、格納していること。
レスポンスキー は、 JMESPath形式 で指定します。
JMESPath形式 については、次項を参照してください。

JMESPath

JMESPath は、JSONを対象としたクエリ言語です。
JSONから、指定した JMESPath に該当する値を抽出します。
書式は、JSONキーを、"."ドットで結合したパスで指定します。
また、JSONキーの値が配列の場合、"[]"をJSONキーの後ろに付けます。
 例) parent の値が配列で、配列の子要素のキー children の値を抽出する場合、
parent[].children
 と指定します。
JMESPathの指定方法について、
Azure RESET-API Get Metric for data のSample Responseの一部を利用して説明します。
 1{
 2  "cost": 598,
 3  "timespan": "2021-04-20T09:00:00Z/2021-04-20T14:00:00Z",
 4  "interval": "PT1H",
 5  "value": [
 6    {
 7      "id": "/subscriptions/1f3・・・c38/・・・/metrics/BlobCount",
 8      "type": "Microsoft.Insights/metrics",
 9      "name": {
10        "value": "BlobCount",
11        "localizedValue": "Blob Count"
12      },
13      "displayDescription": "The number of blob objects stored in the storage account.",
14      "unit": "Count",
15      "timeseries": [
16        {
17          "metadatavalues": [
18            {
19              "name": {
20                "value": "tier",
21                "localizedValue": "tier"
22              },
23              "value": "Hot"
24            }
25          ]
26        },
27        {
28          "metadatavalues": [
29            {
30              "name": {
31                "value": "tier",
32                "localizedValue": "tier"
33              },
34              "value": "Standard"
35            }
36          ]
37        },
38        {
39          "metadatavalues": [
40            {
41              "name": {
42                "value": "tier",
43                "localizedValue": "tier"
44              },
45              "value": "Cool"
46            }
47          ]
48        }
49      ],
50      "errorCode": "Success"
51    }
52  ],
53  "namespace": "microsoft.storage/storageaccounts/blobservices",
54  "resourceregion": "westus2"
55}

注釈

JMESPath の詳細については、JMESPath Tutorial https://JMESPath.org/tutorial.html を参照してください。
また、上記JSONを、 JMESPath を試すことのできる、JMESPath Try it Out! https://JMESPath.org/ で試してください。
  1. 配列の値を取得するJMESPath
上記JSONで、5行目の value の値(配列)を取得する JMESPath を、
value
と指定すると、下記の結果が取得できます。
(コード中の "//" : "・・・Sample Responseの14行~49行まで省略・・・" はコメントです。実際の結果には含まれません。)
[
  {
    "id": "/subscriptions/1f3・・・c38/・・・/metrics/BlobCount",
    "type": "Microsoft.Insights/metrics",
    "name": {
      "value": "BlobCount",
      "localizedValue": "Blob Count"
    },
    "displayDescription": "The number of blob objects stored in the storage account.",
    "//" : "・・・Sample Responseの14行~49行まで省略・・・",
    "errorCode": "Success"
  }
]
  1. オブジェクトを取得するJMESPath
上記JSONで、9行目の value (配列) の name の値を取得する JMESPath を、
value[].name
と指定すると、下記の結果が取得できます。
[
  {
    "value": "BlobCount",
    "localizedValue": "Blob Count"
  }
]
  1. 深い階層で、複数の値を取得するJMESPath
value (配列)の timeseries (配列)の metadatavalues (配列)の name を取得する JMESPath を、
value[].timeseries[].metadatavalues[].name
と指定すると下記の結果が取得できます。
(コード中の "//" : "xx行の metadatavalues.name" はコメントです。実際の結果には含まれません。)
[
  "//" : "19行の metadatavalues.name"
  {
    "value": "tier",
    "localizedValue": "tier"
  },
  "//" : "30行の metadatavalues.name"
  {
    "value": "tier",
    "localizedValue": "tier"
  },
  "//" : "41行の metadatavalues.name"
  {
    "value": "tier",
    "localizedValue": "tier"
  }
]

レスポンスリストフラグ

レスポンスリストフラグ は、 レスポンスキー で抽出したイベントが、配列で格納されているかを指定します。
Trueレスポンスキー で抽出したイベントが、配列で格納されている場合
      上記の 1. 配列の値を取得するJMESPat や、3. 深い階層で、複数の値を取得するJMESPath の様な場合
Falseレスポンスキー で抽出したイベントが、配列以外(値や、子要素を持つオブジェクト)で格納されている場合
      上記の 2. オブジェクトを取得するJMESPath の様な場合

イベントIDキー

レスポンスキー を利用して抽出したイベントで、イベントをユニークに判別する値を取得するキーを イベントIDキー で指定します。
イベントIDキー は、 レスポンスキー で抽出した結果に存在するキーを指定します。
イベントIDキー も、 JMESPath形式 で指定します。
上記Azure RESET-APIのJSONで、 レスポンスキーレスポンスリストフラグ を、下記の通り指定した場合、

項目名

設定値

レスポンスキー

value

レスポンスリストフラグ

True

レスポンスキー で抽出した値は、
 1[
 2  {
 3    "id": "/subscriptions/1f3・・・c38/・・・/metrics/BlobCount",
 4    "type": "Microsoft.Insights/metrics",
 5    "name": {
 6      "value": "BlobCount",
 7      "localizedValue": "Blob Count"
 8    },
 9    "displayDescription": "The number of blob objects stored in the storage account.",
10    "unit": "Count",
11    "timeseries": [
12      {
13        "metadatavalues": [
14          {
15            "name": {
16              "value": "tier",
17              "localizedValue": "tier"
18            },
19            "value": "Hot"
20          }
21        ]
22      },
23      "//": "・・・(metadatavaluesの繰り返しなので省略)・・・"
24    ],
25    "errorCode": "Success"
26  }
27]
となり、この結果から、イベントとして識別する値は、id の値が適しているため、
OASE管理 ▶ イベント収集 での設定値は、下記の設定が適切です。

項目名

設定値

レスポンスキー

value

レスポンスリストフラグ

True

イベントIDキー

id

警告

レスポンスキー で抽出した値に存在しないキーを指定すると、空の値を取得することになり、正しく動作しません。
例えば、上記 レスポンスキー で抽出した値に存在しないキー value を指定した場合、正しく動作しません。
表 2.95 正しくない、イベントIDキーの設定

項目名

設定値

レスポンスキー

value

レスポンスリストフラグ

True

イベントIDキー

value[].id

2.8.5. 監視ソフト毎のイベント収集設定例

本項では、代表的な監視ソフト ZabbixGrafana をイベント収集で利用する場合の、 OASE管理 ▶ イベント収集 での設定例について説明します。
また、本項では、まず、各監視ソフトのアラートを、cURLコマンドで取得する例を示し、
次に、cURLのパラメータを、 OASE管理 ▶ イベント収集 に設定する順番で説明します。

警告

監視ソフトののバージョンによって、HTTP APIの仕様が異なる場合があります。
利用するバージョンのHTTP APIの仕様を確認し、 OASE管理 ▶ イベント収集 の設定を行ってください。

Zabbix

Zabbix から、イベントを取得する、 OASE管理 ▶ イベント収集 での設定例について説明します。
以下の説明で使用した、Zabbix は、
・zabbix 6.4.12
  1. cURLコマンドで、 Zabbix から、イベント取得
下記は、 Zabbix から、障害(problem)を取得するcURLコマンドの例です。
curl --request POST \
--url http://<ZabbixのIP Address  Domain>/zabbix/api_jsonrpc.php \
--header 'content-type: application/json-rpc' \
--data "{\"jsonrpc\": \"2.0\",\"method\": \"problem.get\",\"id\": 1,\"params\": {},\"auth\": \"<Zabbix APIトークン>"}"
(コマンド・パラメータ中の <Zabbix APIトークン> の詳細は、後述します。)
上記cURLコマンドで、下記の様なレスポンスが返却されます。
 1{
 2   "jsonrpc": "2.0",
 3   "result": [
 4       {
 5           "eventid": "89",
 6           "source": "0",
 7           "object": "0",
 8           "objectid": "16046",
 9           "clock": "1709636653",
10           "ns": "906955445",
11           "r_eventid": "0",
12           "r_clock": "0",
13           "r_ns": "0",
14           "correlationid": "0",
15           "userid": "0",
16           "name": "High CPU utilization (over 90% for 5m)",
17           "acknowledged": "0",
18           "severity": "2",
19           "opdata": "Current utilization: 100 %",
20           "suppressed": "0",
21           "urls": []
22       }
23   ],
24   "id": 1
25}

注釈

Zabbix の、障害(problem)に関する詳細は下記URLをご参照ください。
  1. Zabbix からイベントを取得する、イベント収集の設定例
上記のcURLコマンドを参考に、同等な取得を行う、 OASE管理 ▶ イベント収集 の設定値は、下記の様に設定します。
表 2.96 Zabbixの設定例

項目名

設定値

イベント収集名

<Zabbix障害取得と分かる名称>

接続方式

任意の認証

リクエストメソッド

POST

接続先

http://<ZabbixのIP Address か Domain>/zabbix/api_jsonrpc.php

リクエストヘッダー

{ "content-type" : "application/json-rpc" }

パラメータ

{
  "jsonrpc":"2.0",
  "method":"problem.get",
  "id":1,
  "params":{
      "time_from": "{{ EXASTRO_LAST_FETCHED_TIMESTAMP }}"
  },
  "auth":"<Zabbix APIトークン>"
}

レスポンスキー

result

レスポンスリストフラグ

True

イベントIDキー

eventid

注釈

パラメータ で設定している、<Zabbix APIトークン>は、Zabbixユーザーの認証情報で、
下記のコマンドで、ユーザー情報を指定して取得できます。
但し、下記のコマンドを実行すると、既に存在するユーザーで作成済みの<Zabbix APIトークン>が使用できなる場合があります。
対応として、新しいユーザーを作成し、新しいユーザーで<Zabbix APIトークン>を作成することをお勧めします。
新しいユーザーの作成は、
  1. ブラウザで、Zabbix に管理者でサイイン
     初期状態の管理者のログイン情報は、
      ・ユーザー名: Admin
      ・パスワード: zabbix
  2. サイドメニュー > ユーザー > ユーザー を選択
  3. ユーザーの右端上の ユーザーの作成 をクリック
  4. ユーザー名、パスワードなどを入力
  5. 権限 タブをクリックし
  6. ユーザーの役割 で、選択 をクリックし、
    APIへのアクセスが、有効な役割を持つ、"User role"か、それ以上の役割を選択
  7. その他の必要な項目を入力し
  8. 追加 をクリック
以上の操作で、ユーザーが作成できます。
以降は、<APIトークン>を作成するコマンドの例です。
Zabbix へのログイン情報が、下記の場合の例です。
 ・ユーザー名 : 上記の操作で作成したユーザーの <ユーザー名>
 ・パスワード : 上記の操作で作成したユーザーの <パスワード>
curl --request POST \
--url http://<ZabbixのIP Address  Domain>/zabbix/api_jsonrpc.php \
--header "Content-Type: application/json-rpc" \
--data "{\"auth\":null,\"method\":\"user.login\",\"id\":1,\"params\":{\"user\":\"<ユーザー名>\",\"password\":\"<パスワード>\"},\"jsonrpc\":\"2.0\"}" \
上記cURLコマンドで、下記の様なレスポンスが返却されます。
1{
2    "jsonrpc": "2.0",
3     "result": "<Zabbix APIトークン>",
4     "id": 1
5}
<Zabbix APIトークン>を、 OASE管理 ▶ イベント収集パラメータ の <Zabbix APIトークン> の箇所に貼り付けます。
※ <Zabbix APIトークン>作成は、ブラウザでもを作成できます。
ブラウザでログイン後、サイドメニュー > ユーザー設定 > APIトークン の APIトークンの作成 で作成できます。

Grafana

Grafana で、イベントを取得するための、 OASE管理 ▶ イベント収集 での設定例について説明します。
以下の説明で使用した、Grafana は、
・Grafan 10.3
・データソースに、Prometheus 2.49 を使用
  1. cURLコマンドで、 Grafana から、イベント取得
下記は、Grafana から、アラート(alerts)を取得するcURLコマンドの例です。
curl --request GET \
--url 'http://<GrafanaのIP addres か Domain>:3000/api/prometheus/grafana/api/v1/alerts' \
--header 'authorization: Bearer <認証トークン>' \
--header 'Content-Type: application/json'
(コマンド・パラメータ中の <認証トークン> の詳細は、後述します。)
上記cURLコマンドで、下記の様なレスポンスが返却されます。
 1{
 2    "data": {
 3        "alerts": [
 4            {
 5                "activeAt": "2018-07-04T20:27:12.60602144+02:00",
 6                "annotations": {},
 7                "labels": {
 8                    "alertname": "my-alert"
 9                },
10                "state": "firing",
11                "value": "1e+00"
12            }
13        ]
14    },
15    "status": "success"
16}

注釈

Grafanaの、アラート(Alert)に関する詳細は下記URLをご参照ください。
  1. Grafana からイベントを取得する、イベント収集の設定例
上記cURLコマンドを参考に、同等な取得を行う、 OASE管理 ▶ イベント収集 の設定値は、下記の様に設定します。
表 2.97 Grafanaの設定例

項目名

設定値

イベント収集名

<Grafanaアラート取得と分かる名称>

接続方式

Bearer認証

リクエストメソッド

GET

接続先

http://<GrafanaのIP addres か Domain>:3000/api/prometheus/grafana/api/v1/rules

リクエストヘッダー

{ "Content-Type": "application/json" }

認証トークン

<認証トークン>

レスポンスキー

data.alerts

レスポンスリストフラグ

True

イベントIDキー

activeAt

注釈

<認証トークン>は、Grafanaの認証情報です。
下記の手順で取得できます。
  1. ブラウザで、Grafana にサインインします。
     初期設定では、
     ・username: admin
     ・Password: admin (但し、既にログインした場合、変更されている可能性があります)
  2. Home > Administration > Service accounts を選択
  3. service account をクリックして、サービスアカウントを作成します。
  4. サービス名を英数字の小文字で入力します。
  5. Add service account token をクリックして、認証トークンを作成します。
  6. Expirationで、
     "No expiation"(期限なし ※推奨)または、
     "Set expiation"(期限あり)を選択します。
  7. Generate token をクリックします。
  8. Copy to clipboard and close をクリックし,
    認証トークンがクリップボードに貼り付けられます。
  9. クリップボードの認証トークンを、 OASE管理 ▶ イベント収集認証トークン に貼り付けます。

2.8.6. 利用可能な予約変数一覧

OASE管理 ▶ イベント収集 では、以下の項目で予約変数が使用可能です。
  • 接続先

  • リクエストヘッダー

  • パラメータ

予約変数

変数名

説明

出力例

EXASTRO_LAST_FETCHED_TIMESTAMP

前回取得時日時(UNIXタイムスタンプ)

1704817434

EXASTRO_LAST_FETCHED_DD_MM_YY

前回取得時日時(DD/MM/YY HH:MM:SS形式)

10/01/24 01:23:45

EXASTRO_LAST_FETCHED_YY_MM_DD

前回取得時日時(YYYY/MM/DD HH:MM:SS形式)

2024/01/10 01:23:45

EXASTRO_LAST_FETCHED_EVENT_IS_EXIST

前回取得イベントの存在フラグ

True、False

EXASTRO_LAST_FETCHED_EVENT

前回取得イベントのrawデータのオブジェクト

(例: Zabbixの場合)
{"eventid": "xxx", "souce": "xxx", "object": ...}
使用方法については EXASTRO_LAST_FETCHED_EVENTで参照できる項目 を参照

EXASTRO_EVENT_COLLECTION_SETTING

イベント収集設定の項目のオブジェクト

EXASTRO_EVENT_COLLECTION_SETTINGで参照できる項目一覧 を参照

EXASTRO_LAST_FETCHED_TIME

前回取得時日時(YYYY-MM-DD HH:MM:SS形式)
※文字列orオブジェクト

2025-09-19 10:45:34

EXASTRO_CURRENT_TIME

現在時刻(YYYY-MM-DD HH:MM:SS形式)
※文字列orオブジェクト

2025-09-19 10:45:34

EXASTRO_LAST_FETCHED_EVENTで参照できる項目
前回取得されたイベント情報から動的に内容を参照できます。
JMESPath形式で指定可能です。

〇使用例

以下は前回取得されたイベントデータの例です。
{
    "eventid": "12345",
    "clock": "1704817434",
    "source": "0",
    "object": "0",
    "objectid": "10001",
    "value": "1"
}
このデータから clock 項目を取得し、Zabbix APIの event.get メソッドのパラメータとして設定する例を以下に示します。
{
    "jsonrpc": "2.0",
    "method": "event.get",
    "params": {
        "output": "extend",
        "time_from": "{{ EXASTRO_LAST_FETCHED_EVENT.clock }}",
    },
    "id": 1
}
EXASTRO_EVENT_COLLECTION_SETTINGで参照できる項目一覧
イベント収集 に登録された情報を予約変数として参照することができます。
以下は、使用可能な項目と対応する変数名の一覧です。

項目名

変数名.属性

イベント収集設定名

EXASTRO_EVENT_COLLECTION_SETTING.EVENT_COLLECTION_SETTINGS_NAME

接続先

EXASTRO_EVENT_COLLECTION_SETTING.URL

ポート

EXASTRO_EVENT_COLLECTION_SETTING.PORT

リクエストヘッダー

EXASTRO_EVENT_COLLECTION_SETTING.REQUEST_HEADER

プロキシ

EXASTRO_EVENT_COLLECTION_SETTING.PROXY

認証トークン

EXASTRO_EVENT_COLLECTION_SETTING.AUTH_TOKEN

ユーザー名

EXASTRO_EVENT_COLLECTION_SETTING.USERNAME

パスワード

EXASTRO_EVENT_COLLECTION_SETTING.PASSWORD

メールボックス名

EXASTRO_EVENT_COLLECTION_SETTING.MAILBOXNAME

パラメータ

EXASTRO_EVENT_COLLECTION_SETTING.PARAMETER

レスポンスキー

EXASTRO_EVENT_COLLECTION_SETTING.RESPONSE_KEY

レスポンスリストフラグ

EXASTRO_EVENT_COLLECTION_SETTING.RESPONSE_LIST_FLAG

イベントIDキー

EXASTRO_EVENT_COLLECTION_SETTING.EVENT_ID_KEY

TTL

EXASTRO_EVENT_COLLECTION_SETTING.TTL

設定例

各設定箇所での予約変数の使用例を示します。
接続先での使用例
接続先URLに認証トークンを埋め込み、URLパラメータとして渡す。
OASE接続先例
http://monitor.example.com/api/org_name/workspaces/ws_name/ita/menu/event_collection/filter?token={{ EXASTRO_EVENT_COLLECTION_SETTING.AUTH_TOKEN | urlencode() }}
リクエストヘッダーでの使用例
APIのリクエストヘッダーにBearerトークンを含めて認証を行う。
OASEリクエストヘッダー例
{
    "Content-Type": "application/json",
    "Authorization": "Bearer {{ EXASTRO_EVENT_COLLECTION_SETTING.AUTH_TOKEN }}"
}
パラメータでの使用例
  1. イベント収集時に、現在日時や前回取得日時をフィルター条件として指定
    現在日時を指定
    OASEパラメータ例1
    {
      "discard": { "NORMAL": "0" },
      "last_update_date_time": {
        "RANGE": {
          "START": "{{ EXASTRO_CURRENT_TIME }}"
        }
      }
    }
    
    前回取得日時(YYYY/MM/DD形式)を指定
    OASEパラメータ例2
    {
      "discard": { "NORMAL": "0" },
      "last_update_date_time": {
        "RANGE": {
          "START": "{{ EXASTRO_LAST_FETCHED_YY_MM_DD }}"
        }
      }
    }
    
  2. Zabbix連携での使用
    イベント取得時の条件分岐(前回取得イベントの有無による処理の切り替え)
    • 前回取得イベントが存在する場合 :前回取得イベントIDの次のイベントから取得

    • 前回取得イベントが存在しない場合:前回取得時刻以降のイベントを取得

    OASEパラメータ例3
    {
        "jsonrpc": "2.0",
        "method": "problem.get",
        "params": {
            "output": "extend",
            {% if EXASTRO_LAST_FETCHED_EVENT_IS_EXIST %}
              "eventid_from": "{{ EXASTRO_LAST_FETCHED_EVENT.eventid|int + 1 }}",
            {% else %}
              "time_from": "{{ EXASTRO_LAST_FETCHED_TIMESTAMP }}",
            {% endif %}
        },
        "auth": "{{ EXASTRO_EVENT_COLLECTION_SETTING.AUTH_TOKEN }}",
        "id": 1
    }
    

2.8.7. 通知テンプレート(共通)の設定例

ServiceNow(レコード登録)の設定例

ServiceNow(レコード登録)を行う通知テンプレート(共通)の設定例を以下に示します。

  • ServiceNowのインシデントテーブルにレコード登録を行う設定例

    ここでは、デフォルトのテンプレートの内容から、TITLE の内容をServiceNowの short_description に、BODY に、イベントRAWデータ, エージェント の内容をServiceNowの description に設定する例を示します。
    イベントRAWデータ(raw_event_data), エージェント(exastro_agents) の内容は、Jinjaテンプレートのループ処理を使用して、動的に設定しています。
    • 1.新規イベント(受信時)のテンプレート例: New(received).j2
      [TITLE]
      Event Received. {% if exastro_edit_count == 1 %}Primary Event{% else %}Consolidated Event{% endif %} ({{ exastro_edit_count }})
      
      [BODY]
      {
          "short_description": "Event Received. {% if exastro_edit_count == 1 %}Primary Event{% else %}Consolidated Event{% endif %} ({{ exastro_edit_count }}) ",
          "description": "RAW Event Data: {% for key, value in raw_event_data | default({}) | items() %}\n  {{ key }}:{{ value }}{% if not loop.last %},{% endif %}{% endfor %},\n Agent: {% for key, value in exastro_agents | default({}) | items() %}\n  {{ key }}:{{ value }}{% if not loop.last %},{% endif %}{% endfor %}",
          "caller_id": "",
          "impact": "2",
          "urgency": "2",
          "category": "Software",
          "contact_type": "Phone",
          "state": "1",
          "subcategory": "Email",
          "priority": "3",
          "service": "Email Service"
      }
      
    • 1.新規イベント(受信時)の通知例
      新規イベント(受信時): ServiceNow(インシデント)
    • 2.新規イベント(統合時)のテンプレート例: New(consolidated).j2
      [TITLE]
      Event Consolidated by Deduplication {% if exastro_dup_notification_queue | default('0') == '1' %} (ttl expired) {% endif %}
      
      [BODY]
      {
          "short_description": "Event Consolidated by Deduplication {% if exastro_dup_notification_queue | default('0') == '1' %}(ttl expired){% else %} {% endif %}",
          "description": "RAW Event Data: {% for key, value in raw_event_data | default({}) | items() %}\n  {{ key }}:{{ value }}{% if not loop.last %},{% endif %}{% endfor %},\n Agent: {% for key, value in exastro_agents | default({}) | items() %}\n  {{ key }}:{{ value }}{% if not loop.last %},{% endif %}{% endfor %}",
          "caller_id": "",
          "impact": "2",
          "urgency": "2",
          "category": "Software",
          "contact_type": "Phone",
          "state": "1",
          "subcategory": "Email",
          "priority": "3",
          "service": "Email Service"
      }
      
    • 2.新規イベント(統合時)の通知例
      新規イベント(統合時): ServiceNow(インシデント)

Tip

TITLEについて
ServiceNow (レコード登録) を通知方法として選択した場合、TITLE に記載した内容は使用されません。

Tip

BODYについて
ServiceNow (レコード登録) を通知方法として選択した場合、BODY に記載した内容をリクエストボディとして使用します。
そのため、BODY には、ServiceNow の REST API でレコード登録を行う際のリクエストボディの形式で記載する必要があります。
  • テンプレート例はあくまで一例です。実際の運用に合わせて、適宜カスタマイズしてください。

  • 使用するパラメータについては、ServiceNow の 利用するアプリケーションに応じて、 マニュアルや、REST API リファレンスを参照してください。