6.2.1 サービス連携オブジェクト監視ジョブの監視機能
サービス連携オブジェクト監視ジョブが提供する監視機能は,クラウドのオブジェクトストレージサービス上のオブジェクトの作成,削除および更新を検知する機能です。ここでは,このイベントを検知するための監視処理に関する機能および処理の詳細を説明します。
- 〈この項の構成〉
(1) 監視するイベントの詳細と監視処理について
サービス連携オブジェクト監視ジョブが監視するイベントは次のとおりです。
項番 |
イベント種別 |
検知する条件・動作の説明 |
---|---|---|
1 |
作成 |
ある時点で存在しなかったオブジェクトが,次の監視間隔のときに存在していれば作成と判断してイベントとして通知します。 また,初回の監視時点ですでにオブジェクトが存在する場合に条件成立とするかどうかを選択するオプションが選択できます。 |
2 |
削除 |
ある時点で存在していたオブジェクトが,次の監視間隔のときに存在していなければ削除と判断してイベントとして通知します。 また,初回の監視時点ですでにオブジェクトが存在しない場合に条件成立とするかどうかを選択するオプションが選択できます。 |
3 |
更新 |
ある時点で存在していたオブジェクトの任意の情報の値が,次の監視間隔のときに変更があれば更新と判断してイベントとして通知します。 監視対象とする情報は最大3つまで指定できます。複数指定した場合は,OR条件で条件成立を判定します。 |
以上のイベント検知の処理の詳細を次の図に示します。
|
以上のように,初回監視時には切り出した情報を保存し,次回以降の監視処理では切り出した情報を前回の監視の情報と比較して,作成・削除・更新の監視条件成立を判定します。
条件成立の判定方法は次のとおりです。
- 作成の場合
-
監視対象オブジェクト名に指定したオブジェクト名と,切り出したオブジェクト名のうち前回と比較して増えたものが一致する場合は作成したとみなします。なお,初回監視のオプションが指定されている場合は,監視開始時に一致するオブジェクトが存在すれば成立します。
- 削除の場合
-
監視対象オブジェクト名に指定したオブジェクト名と,切り出したオブジェクト名のうち前回と比較して減ったものが一致する場合は削除したとみなします。なお,初回監視のオプションが指定されている場合は,監視開始時に一致するオブジェクトが存在しなければ成立します。
- 更新の場合
-
監視対象オブジェクト名に指定したオブジェクト名と,各オブジェクトから切り出した更新監視対象情報を前回と比較して差異があるオブジェクトのオブジェクト名が一致する場合は更新したとみなします。
情報取得コマンド実行時の動作の詳細については「6.2.1(2) 情報取得コマンド実行時の動作について」を,切り出す処理の詳細については「6.2.1(3) クラウドサービス上のオブジェクト情報切り出し処理」を,監視対象オブジェクト名に関する指定方法の詳細については「6.2.1(4) 監視対象オブジェクト名の指定方法について」を参照してください。
(2) 情報取得コマンド実行時の動作について
監視処理で実行する情報取得コマンドの標準出力と標準エラー出力はメモリーのリソースを使用するため,扱えるサイズに上限があります。
標準出力の上限を超えた場合は「KNBB6306-E」メッセージをサービス連携オブジェクト監視ジョブログファイルに出力して,サービス連携オブジェクト監視ジョブは異常検出終了します。
標準出力の上限値は,環境設定パラメーター「LimitObjMonStdOutSize」で変更できます。
標準エラー出力の上限は3,072KBです。
標準エラー出力の上限を超えた場合は「KNBB6307-W」メッセージをサービス連携オブジェクト監視ジョブログファイルに出力して,サービス連携オブジェクト監視ジョブの処理は継続します。
それぞれ,運用する際に情報取得コマンドで取得される情報量が上記の上限を超えないようにコマンドのオプションを検討してください。
(3) クラウドサービス上のオブジェクト情報切り出し処理
サービス連携オブジェクト監視ジョブは,オブジェクト一覧情報を取得するコマンドを実行し,オブジェクト名,更新監視対象の情報を切り出して監視成立の判定を行います。なお,更新監視対象は3つまで指定できます。
サービス連携オブジェクト監視ジョブが扱えるオブジェクト一覧情報はJSON形式だけです。オブジェクト名,更新監視対象の情報はJMESPathクエリの構文解析によって行われます。
JMESPathクエリの構文解析で切り出した結果は,次の条件を満たす必要があります。
-
オブジェクト名の切り出し結果は,文字列を要素としたJSON配列であること※1※2。
-
更新監視対象の情報※3※4の切り出し結果は,文字列,数値※5,真偽およびヌル値のどれかを要素としたJSON配列であること。
-
更新監視対象の情報※3※4を指定した場合,切り出す値の数が「オブジェクト名」の配列要素数と同じであること※6。
- 注※1
-
配列内に同じオブジェクト名が複数回出力された場合,後に出力された配列要素数の更新情報が有効になります。
- 注※2
-
オブジェクト名に空文字は使用できません。
- 注※3
-
更新監視対象情報は任意指定項目のため,監視条件で更新監視を行わない場合は,指定不要です。また,更新監視をする場合は3つまでの範囲で任意の数で情報を指定してください。
- 注※4
-
監視条件で更新監視を指定しているにも関わらず,更新監視対象情報に指定がない場合は,「KNBB6103-E」メッセージをサービス連携オブジェクト監視ジョブログファイルに出力して,サービス連携オブジェクト監視ジョブは異常検出終了します。
- 注※5
-
数値で扱えるデータは-10,995,116,277,760〜10,995,116,277,760の整数値です。この数値以外の値(範囲外,小数,指数表記(E表記))は他の数値に丸められて正しい値で切り出せず,監視成立の処理が正しく動作しない場合や,「KNBB6107-E サービス連携オブジェクト監視ジョブで扱えない数値情報を検出しました」をサービス連携オブジェクト監視ジョブログファイルに出力して,オブジェクト監視ジョブが異常検出終了される場合があります。
- 注※6
-
[更新監視対象1][更新監視対象2][更新監視対象3]の定義箇所を順番に指定する必要はありません。指定のある更新情報だけ,オブジェクト名の要素数と同じであることを確認します。
上記の条件を満たさない場合は「KNBB6106-E」メッセージ,JMESPathクエリの構文に従った切り出し処理でエラーが発生した場合は「KNBB6105-E」メッセージをサービス連携オブジェクト監視ジョブログファイルに出力して,サービス連携オブジェクト監視ジョブは異常検出終了します。
上記の仕様で切り出せることを検証のうえ,監視処理の設定をしてください。なおJMESPathクエリの構文については,JMESPathの公式サイトを参照してください。
情報取得コマンドの標準出力結果から,オブジェクト名の一覧と各オブジェクトのサイズ・更新日時・所有者を更新監視対象情報として切り出して監視対象に利用する例を次に示します。
-
情報取得コマンド(/objects配下のオブジェクトをJSON形式で一覧表示する)
get-object-info list /objects
-
コマンド実行結果(標準出力にオブジェクトの一覧の情報としてオブジェクト名・更新日時・サイズ・所有者が表示される)
{ "Information": [ { "ObjectName": "object01", "ObjectUpdateTime": "2024-09-01T00:00:00+00:00", "ObjectSize": 100, "ObjectOwner": "User01" }, { "ObjectName": "object02", "ObjectUpdateTime": "2024-09-01T12:30:30+00:00", "ObjectSize": 200, "ObjectOwner": "User02" } ] }
-
切り出し処理(JMESPathクエリ構文)の指定方法および切り出し結果
オブジェクト名 指定方法:Information[].ObjectName 切り出し結果:[ "object01", "object02" ] 更新監視対象1(更新日時) 指定方法:Information[].ObjectUpdateTime 切り出し結果:[ "2024-09-01T00:00:00+00:00", "2024-09-01T12:30:30+00:00" ] 更新監視対象2(サイズ) 指定方法:Information[].ObjectSize 切り出し結果:[ 100, 200 ] 更新監視対象3(所有者) 指定方法:Information[].ObjectOwner 切り出し結果:[ "User01", "User02" ]
このように切り出した情報と「6.2.1(4) 監視対象オブジェクト名の指定方法について」に記載の指定を利用して,「6.2.1(1) 監視するイベントの詳細と監視処理について」に記載の監視処理を実施します。
(4) 監視対象オブジェクト名の指定方法について
監視対象とするオブジェクト名は,カスタムイベントジョブの定義で指定します。
この監視対象オブジェクト名には単一オブジェクト名指定と,複数オブジェクト名指定ができます。複数オブジェクト名指定にはワイルドカードを表す「*」の総称名指定をする必要があります。総称名は「*」のみ利用できます。
ワイルドカード指定をする場合は,次に示す注意事項を確認してください。
-
「*」の部分は任意の文字列が対象となります。
-
「*」そのものを文字として指定したい場合は,「*」の前に「\」文字を置いてエスケープしてください。
-
「\」そのものを文字として指定したい場合は,「\」の前に「\」文字を置いてエスケープしてください。
-
「\」の直後に「*」以外の文字が指定された場合,「\」は無視されます。
例:「\a」と指定された場合は「a」として扱います。
-
「\」で文字列が終了している場合,「\」は無視されます。
例:「a\」と指定された場合は「a」として扱います。
-
「*」を連続して2回以上指定した場合,2回目以降の「*」は無視されます。
例:「a**」と指定された場合は「a*」として扱います。