JP1/Automatic Job Management System 2 解説
イベントの受信やファイルの更新などのような事象の発生を契機に処理を実行させる場合は,イベントジョブを使ってジョブネットを定義します。
イベントジョブは,ネットワーク上のマネージャーホストおよびエージェントホストで発生した事象すべてを監視対象にできます。イベントジョブの監視対象を次に示します。
- イベントジョブで監視する事象が検知されるタイミング
- イベントジョブを使用する場合,イベントジョブを実行した時間と実際にイベントの受信監視ができる状態になる時間とにタイムラグが発生することがあります。このタイムラグの間に発生したイベントは検知できませんので,イベントジョブを使ってジョブネットを定義する際は,このタイムラグを十分に考慮する必要があります。
- なお,JP1イベント受信監視ジョブの場合は,この問題の解決策として「実行前のイベント検索」機能を使用する方法があります(「(1) JP1イベントの受信を契機に処理を実行する(JP1イベント受信監視ジョブ)」参照)。
- 不特定のタイミングで複数回発生するような事象をジョブネット実行の契機とする場合
- 不特定のタイミングで複数回発生するような事象をジョブネット実行の契機とする場合は,ジョブネットに起動条件を設定されることをお勧めします。起動条件の設定については,「3.5 起動条件の定義」を参照してください。
- なお,起動条件を使わずにイベントジョブをジョブネットの先頭に置くような定義は,監視する事象が計画的に発生することがわかっているような場合に行ってください。
- イベントジョブに打ち切り時間を設定する場合
- イベントジョブに打ち切り時間を指定した場合,打ち切り時間は実行ホストでカウントされます。このため,監視中に実行ホストが電源ダウンなどで再起動したあともイベントジョブによる事象の監視が継続された場合,打ち切り時間は実行ホストが再起動した時刻からカウントし直されます。実行ホストの状態にかかわらず,ジョブ実行開始時刻からの絶対時刻で監視を打ち切りたい場合は,ジョブネットの起動条件にイベントジョブを定義し,起動条件の有効範囲を絶対時刻で指定してください。起動条件の詳細については,「3.5 起動条件の定義」を参照してください。
- また,打ち切り時間を設定した場合は,打ち切り時間経過後のイベントジョブをどのような状態として扱うかを指定できます。「強制終了」「正常終了」「警告検出終了」「異常検出終了」から選べます(デフォルトは「強制終了」)。
- これにより,イベントジョブの打ち切り時間経過後にジョブネットを中断または続行できます。
- イベント情報の引き継ぎについて
- イベントジョブで受信したイベント情報を変数(マクロ変数)として定義しておき,後続ジョブまたは後続ジョブネットに引き継ぐことができます。イベント情報の引き継ぎについては,「(6) イベントジョブの受信情報の引き継ぎ」を参照してください。
イベントジョブを使ったジョブネットの定義例を紹介します。イベントジョブを使ったジョブネット定義の詳細については,マニュアル「JP1/Automatic Job Management System 2 設計・運用ガイド 8.3 イベントジョブの注意事項」もあわせて参照してください。また,イベントジョブの定義内容の詳細については,「JP1/Automatic Job Management System 2 操作ガイド」を参照してください。
なお,メール受信監視ジョブ,メッセージキュー受信監視ジョブ,MSMQ受信監視ジョブは,JP1/AJS2とそれぞれのプログラムとの連携が必要です。詳細については,マニュアル「JP1/Automatic Job Management System 2 連携ガイド」を参照してください。
- <この項の構成>
- (1) JP1イベントの受信を契機に処理を実行する(JP1イベント受信監視ジョブ)
- (2) ファイルの更新を契機に処理を実行する(ファイル監視ジョブ)
- (3) ログファイルの更新を契機に処理を実行する(ログファイル監視ジョブ)
- (4) Windowsイベントログの受信を契機に処理を実行する(Windowsイベントログ監視ジョブ)
- (5) 時間の経過を監視して処理を実行する(実行間隔制御ジョブ)
- (6) イベントジョブの受信情報の引き継ぎ
(1) JP1イベントの受信を契機に処理を実行する(JP1イベント受信監視ジョブ)
JP1イベントとは,JP1/Baseで管理される,JP1シリーズプログラムで事象が発生するたびに発行されるイベントをいいます。JP1イベントは,エラー,警告,通知などの重大度やメッセージなどの情報を持っているため,エラーや警告イベントの受信や,特定のメッセージの受信を契機に後続ジョブやジョブネットを実行させることができます。また,JP1/Baseのイベント変換機能を使って,JP1シリーズ以外のアプリケーションの終了を契機に後続ジョブやジョブネットを実行させることもできます。
JP1イベント受信監視ジョブを実行する際は,実行前に必ずJP1/Baseイベントサービスを起動しておく必要があります(JP1/BaseイベントサービスのAPI設定は「keep-alive」にしておいてください)。起動されていない場合,JP1イベント受信監視ジョブはサービスが起動されるまで「実行中」状態のままとなります。
「hostAからJP1イベントを受信したら,後続ジョブを実行する(ジョブネットを定義するホストをhostBとする)。」というジョブネットを,JP1イベント受信監視ジョブを使って定義する例を次に示します。
図3-28 JP1イベント受信監視ジョブを使ったジョブネットの定義例
他のホストのジョブネットと連携することができます。
hostAでジョブネットにJP1イベント送信ジョブ(イベントID:100)を定義します。hostAで発行したJP1イベントを監視対象とするため,JP1イベント受信監視ジョブには,イベント発行元ホスト名に「hostA」と設定します。また,hostAからJP1イベント(イベントID:100)を受信した場合に後続ジョブを実行させるため,イベントIDには「100」を設定します。
これによって,hostAでジョブネット中のJP1イベント送信ジョブ(イベントID:100)が実行されると,JP1イベントの監視が終了して,後続ジョブが実行されます。
なお,JP1イベント受信監視ジョブを定義した場合,JP1イベント受信監視ジョブが実行されてから実際にJP1イベント受信監視ができる状態になるまでにタイムラグが発生し,この間に発生したJP1イベントは検知できません。この問題を解決するための機能として,実行前のイベント検索があります。
- 実行前のイベント検索
JP1イベント受信監視ジョブが実際にJP1イベントの受信を監視できる状態になる時点より前に発生したイベントを検索し,該当したイベントがあった場合にそれをイベント発生とみなします。
図3-29 実行前のイベント検索
なお,お使いのJP1/AJS2 - ManagerおよびJP1/AJS2 - Agentのバージョンが06-71以前の場合,実行前のイベント検索機能は使用できません。したがって,このタイムラグを考慮した上で実行してください。
(2) ファイルの更新を契機に処理を実行する(ファイル監視ジョブ)
ファイル更新や新規ファイルの作成などを契機にジョブを実行するジョブネットの定義には,ファイル監視ジョブを使用します。
ファイル監視ジョブで指定できる監視条件を次に示します。
- 監視条件
- 監視対象のファイルがどのような状態になったときに条件成立とするのかを指定します。監視条件は,次の四つから設定できます。
- 指定したファイル名のファイルが作成されたとき
- 指定したファイル名のファイルが削除されたとき
- 指定したファイル名のファイルのサイズが変更されたとき
- 指定したファイル名のファイルの最終書き込み時刻が更新されたとき
- 補足事項
- ファイルの作成を監視条件とした場合に,ファイル監視ジョブが監視を開始した時点で指定した名称のファイルがすでにあったとき,ファイル監視ジョブの監視条件を成立させるかどうかを指定できます。
- 監視条件は複数指定できます。例えば,ファイルが削除または更新されたら後続ジョブを実行するように定義する場合は,ファイルの削除と最終書き込み時刻変更を指定できます。ただし,ファイルのサイズ変更と最終書き込み時刻変更を同時に指定できません。
- 注意事項
- 監視条件が成立する場合および成立しない場合の詳細については,マニュアル「JP1/Automatic Job Management System 2 設計・運用ガイド 8.3.2(1) ファイル監視ジョブで監視する事象」を参照してください。
- ファイルの作成,サイズ変更,最終書き込み時刻変更の監視条件に合致した場合,監視対象のファイルにファイル監視ジョブ以外のプロセスがアクセスしていないかチェックします。これをクローズチェックといいます。
監視条件に合致しても,ファイル監視ジョブ以外のプロセスが監視対象のファイルにアクセスしていた場合は条件成立となりません。その場合,次回の監視間隔に繰り越して監視し,そこでファイル監視ジョブ以外のプロセスのアクセスがなければ条件成立となります。
このクローズチェックをすることで,ファイルコピー中など転送中の監視対象のファイルを条件成立とすることを防ぐことができます。
「あるファイル(ファイル名:ファイル1)の書き込み時間を監視し,ファイルが更新されたときに後続ジョブを実行する。」というジョブネットを,ファイル監視ジョブを使って定義する例を次に示します。
図3-30 ファイル監視ジョブを使ったジョブネットの定義例
例の場合,監視対象のファイルがクローズ(アクセスしているアプリケーションがなくなった)し,最終書き込み時刻が更新された時点でファイル監視ジョブが終了となり,条件成立となります。
(3) ログファイルの更新を契機に処理を実行する(ログファイル監視ジョブ)
ログファイル監視ジョブは,JP1/Baseのログファイルトラップ機能を使って実行されます。JP1/Baseのログファイルトラップ機能とは,アプリケーションプログラムが出力するログファイルのレコードをJP1イベントに変換して,イベントDBに登録するものです。ログファイル監視ジョブを定義することで,ログファイルの更新を契機にジョブやジョブネットを実行させることができます。JP1/Baseのログファイルトラップ機能については,マニュアル「JP1/Base 運用ガイド」を参照してください。また,ログファイル監視ジョブの注意事項については,マニュアル「JP1/Automatic Job Management System 2 設計・運用ガイド 8.3.5 ログファイル監視ジョブの注意事項」を参照してください。
ログファイル監視ジョブの動作の概要を次に示します。
図3-31 ログファイル監視ジョブの動作の概要
ログファイル監視ジョブは,監視対象に指定されたホストにあるログファイルに特定のデータが出力されたかを監視します。ログファイル監視ジョブには,監視するログファイル名と監視する文字列を指定します。指定した文字列を含むログデータがログファイルに書き込まれたら条件成立とみなされ,ログファイル監視ジョブが終了して後続ジョブが実行されます。
文字列の指定には正規表現を使うこともできます。正規表現についてはマニュアル「JP1/Base 運用ガイド」(Windowsの場合),またはUNIXのドキュメント(UNIXの場合)を参照してください。
監視間隔は1〜86,400(単位:秒)で指定できます。監視対象として指定できるログファイルは,テキスト形式のものになります。
ログファイル監視ジョブを使った条件の例を次に示します。
「ログファイル(ファイル名:ファイル1)に特定の文字列が含まれたログデータが書き込まれたら,後続ジョブを実行する。」というジョブネットを,ログファイル監視ジョブを使って定義する例を次に示します。
図3-32 ログファイル監視ジョブを使ったジョブネットの定義例
この場合,「"abc"と"def"が文字列に含まれている」,「"ghi"が文字列に含まれている」,「"jkl"が文字列に含まれている」の三つの条件のうちどれか一つでも条件を満たすログデータがファイル1に出力されたら,ログファイル監視ジョブが終了し,後続ジョブが実行されます。
また,複数のログファイル(最大8件)を監視し,そのうちのどれか一つに特定の文字列が含まれたログデータが書き込まれたら後続ジョブが実行されるように定義することもできます。
(4) Windowsイベントログの受信を契機に処理を実行する(Windowsイベントログ監視ジョブ)
Windowsイベントログ監視ジョブは,JP1/Baseのイベントログトラップ機能を使って実行されます。JP1/Baseのイベントログトラップ機能とは,WindowsイベントログのレコードをJP1イベントに変換してイベントDBに登録するものです。Windowsイベントログ監視ジョブを定義することで,Windowsイベントログの受信を契機にジョブやジョブネットを実行できます。JP1/Baseのイベントログトラップ機能,およびイベントログトラップ機能の動作定義については,マニュアル「JP1/Base 運用ガイド」を参照してください。また,Windowsイベントログ監視ジョブの注意事項については,マニュアル「JP1/Automatic Job Management System 2 設計・運用ガイド 8.3.6 Windowsイベントログ監視ジョブの注意事項」を参照してください。
Windowsイベントログ監視ジョブの動作の概要を次に示します。
図3-33 Windowsイベントログ監視ジョブの動作の概要
Windowsイベントログ監視ジョブには,監視するログ種別とイベントの種類を指定します。指定したWindowsイベントがWindowsイベントログに出力されたら条件成立とみなされ,Windowsイベントログ監視ジョブが終了して後続ジョブが実行されます。
指定できるログ種別とイベントの種類を次に示します。
- ログ種別
- 指定できるログの種別を次に示します。
- "アプリケーション"または"Application"
- "セキュリティ"または"Security"
- "システム"または"System"
- "DNS Server"
- "Directory Service"
- "ファイル複製サービス"
- イベントの種別
- 指定できるイベントの種別を次に示します。
- 情報
- 警告
- エラー
- 成功の監査
- 失敗の監査
Windowsイベントログ監視ジョブを使ったジョブネットの定義例を次に示します。
「セキュリティシステムでの認証が成功したことを通知するWindowsイベントがWindowsのイベントログに出力されたら,後続ジョブを実行する。」というジョブネットを,Windowsイベントログ監視ジョブを使って定義する例を次に示します。
図3-34 Windowsイベントログ監視ジョブを使ったジョブネットの定義例
まず,Windowsイベントログ監視ジョブの実行前に,JP1/Baseの動作定義ファイルにイベントログトラップ機能の動作を設定します。この例の場合,ログ種別は「Security」,属性名(typeの場合)は「Audit_success」です。
Windowsイベントログ監視ジョブには,監視するログ種別とイベントの種類を指定します。監視するログ種別には「セキュリティ」,イベントの種別は「成功の監査」を設定します。
これによって,指定したWindowsイベントがWindowsのイベントログに出力されたら,Windowsイベントログ監視ジョブが終了し,後続ジョブが実行されます。
(5) 時間の経過を監視して処理を実行する(実行間隔制御ジョブ)
何分間待ってからジョブを実行する,などのようなジョブネットの定義には,実行間隔制御ジョブを使用します。
「先行ジョブが異常終了したら,10分後にリカバリージョブを実行する」というジョブネットを,実行間隔制御ジョブを使って定義する例を次に示します。
図3-35 実行間隔制御ジョブを使ったジョブネットの定義例
まず,先行ジョブが異常終了してから10分後に次の処理を実行させるので,時間の経過を監視する実行間隔制御ジョブを使用します。実行間隔制御ジョブには,待ち時間を10分と定義します。また,先行ジョブが異常終了したときに実行させるので,種別を「リカバリ」にします。実行間隔制御ジョブの後続ジョブである標準ジョブCも同様に種別を「リカバリ」にします。
これにより標準ジョブAが異常終了した場合,リカバリージョブである実行間隔制御ジョブが10分間の時間経過を監視し,10分が経過したらその後続ジョブである標準ジョブCが実行されます。標準ジョブAが正常終了した場合は,標準ジョブBが実行されます。
なお,実行間隔制御ジョブで指定する「待ち時間」は,ジョブが実行される所要時間ではなく,実行間隔制御プロセスでの待ち時間を意味します。通信の状態などによって,指定した待ち時間と誤差が生じる場合があります。
イベントジョブで受信したイベント情報を変数(マクロ変数)として定義しておき,後続ジョブまたは後続ジョブネットに引き継ぐことができます。後続ジョブに引き継ぐ情報を引き継ぎ情報といいます。
後続ジョブでイベント情報を引き継ぐためには,イベントジョブ側に情報を引き継ぐためのマクロ変数名を定義しておき,後続ジョブ側でマクロ変数を指定します。
イベントジョブ側に定義しておくマクロ変数は,次のように設定します。
- マクロ変数の定義
- 「?AJS2(マクロ変数名)?: 引き継ぎ情報名」
「?AJS2(マクロ変数名)?」には,A〜Z(大文字の英字),0〜9(アラビア数字),「.(ピリオド)」を使った64バイト以内の文字列で指定します。また,「引き継ぎ情報名」に設定できる情報は,イベントジョブで引き継ぐ情報として用意されています。詳細については,「付録A イベントジョブで引き継ぐ情報」を参照してください。
マクロ変数はイベントジョブの後続ジョブの実行ホスト上で,コマンドラインに引き継いだ情報を展開した形で実行されます。受信情報を引き継ぐ場合には,その内容を意識して実行時にコマンドの引数として扱える形の情報を引き継ぐ場合だけ定義してください。
ここでは,イベントジョブで受信した情報を後続ジョブにどのように引き継ぐかを,後続ジョブとして定義したジョブの種類ごとに説明します。
なお,イベントジョブの受信情報をジョブネット全体で参照したい場合には,起動条件を使用してください(起動条件については「3.5 起動条件の定義」を参照)。
(a) 後続に標準ジョブまたはアクションジョブを定義した場合
イベントジョブの後続ジョブとして標準ジョブ(PCジョブ,UNIXジョブ),またはアクションジョブを定義した場合は,コマンドテキスト,スクリプトファイル名,パラメーター名,環境変数など,任意の文字列が設定できる項目でマクロ変数を指定しておくと受信したイベント情報を引き継げます。
イベントジョブの後続にPCジョブを定義した例を次の図に示します。
図3-36 イベントジョブの後続にPCジョブを定義した例
イベントジョブの後続ジョブに標準ジョブ(PCジョブ,UNIXジョブ)またはアクションジョブを定義した場合は,イベントジョブの直後のジョブにしか受信情報を引き継ぎません。したがってこの例の場合,JP1イベント受信監視ジョブで受信したイベント情報は,PCジョブAに引き継がれますが,PCジョブBには引き継ぎません。PCジョブAが異常終了した場合でも,受信情報はPCジョブBに引き継ぎません。
(b) 後続にネストジョブネットを定義した場合
イベントジョブの後続ユニットとしてネストジョブネットを定義した場合は,ネストジョブネットでマクロ変数を指定しておくとネストジョブネット中の標準ジョブ(PCジョブ,UNIXジョブ),およびアクションジョブに受信したイベント情報を引き継げます。イベントジョブの後続にネストジョブネットを定義した例を次の図に示します。
図3-37 イベントジョブの後続にネストジョブネットを定義した例
イベントジョブの後続ユニットとしてネストジョブネットを定義した場合は,ネストジョブネット中の標準ジョブ(PCジョブ,UNIXジョブ),およびアクションジョブに受信情報を引き継ぎます。したがってこの例の場合,JP1イベント受信監視ジョブで受信したイベント情報は,ネストジョブネットAに定義されているPCジョブX,PCジョブY,PCジョブZに引き継がれます。
なお,ネストジョブネット中に同じマクロ変数を定義したイベントジョブがある場合は,ネストジョブネット中のイベントジョブの情報が優先されます。ネストジョブネット中に同じマクロ変数を定義したイベントジョブがある場合の例を次の図に示します。
図3-38 ネストジョブネット中に同じイベントジョブを定義した例
この例の場合,PCジョブXにはJP1イベント受信監視ジョブ(1)のイベント情報が引き継がれますが,PCジョブYにはJP1イベント受信監視ジョブ(2)の受信情報が引き継がれます。なお,PCジョブZにはJP1イベント受信監視ジョブ(1)のマクロ変数が指定されているので,JP1イベント受信監視ジョブ(1)の受信情報が引き継がれます。
(c) 後続に判定ジョブを定義した場合
イベントジョブの後続ジョブとして判定ジョブを定義した場合は,判定ジョブの従属ジョブにマクロ変数を指定しておくことで,従属ジョブと判定ジョブの後続ジョブとの両方に受信情報を引き継げます。
イベントジョブの後続に判定ジョブを定義した例を次の図に示します。
図3-39 イベントジョブの後続に判定ジョブを定義した例
イベントジョブの後続ジョブとして判定ジョブを定義した場合は,判定ジョブの従属ジョブおよび判定ジョブの後続ジョブに受信情報が引き継がれます。したがってこの例の場合,JP1イベント受信ジョブで受信したイベント情報は,判定ジョブの従属ジョブであるPCジョブAと判定ジョブの後続ジョブであるPCジョブBに引き継がれます。
(d) 後続にORジョブを定義した場合
イベントジョブの後続ジョブとしてORジョブを定義した場合は,ORジョブの後続ジョブにマクロ変数を指定しておくと,ORジョブの後続ジョブに受信情報を引き継げます。
イベントジョブの後続にORジョブを定義した例を次の図に示します。
図3-40 イベントジョブの後続にORジョブを定義した例
イベントジョブの後続ジョブとしてORジョブを定義した場合は,ORジョブの後続ジョブに受信情報が引き継がれます。この例では,ファイル監視ジョブとJP1イベント受信監視ジョブの二つのイベントジョブでイベントの発生を監視していますが,8:00に発生したJP1イベントを監視しているJP1イベント受信監視ジョブの受信情報をORジョブの後続ジョブに引き継ぎます。なお,この場合,ファイル監視ジョブは「計画未実行」状態となります。
- 注意事項
- 複数のイベントジョブに対して後続ジョブが一つだけの場合でも,すべてイベントジョブで受信した情報を後続ジョブに引き継げます。ただし,複数のイベントジョブに同じマクロ変数が定義されている場合は,受信したイベントジョブの情報が上書きされるため,最後に受信したイベントジョブの情報を参照することになります。
- 引き継ぎ情報は,イベントジョブの実行ホストと後続ジョブの実行ホストが異なる場合でも引き継げます。ホスト間の文字コードが異なる場合は文字コードが変換されて引き継がれます。ただし,変換する文字コードに該当する文字がない場合は,正しく変換されません。
- 一つのイベントジョブの引き継ぎ情報に,同じ名称のマクロ変数が複数定義された場合,最初に定義された情報が引き継がれます。例えば,「?AJS2111?:EVID」という定義(マクロ変数「?AJS2111?」にイベントIDを引き継ぐように指定)を一つめに設定し,「?AJS2111?:EVMSG」という定義(マクロ変数「?AJS2111?」にメッセージ情報を引き継ぐように指定)を二つめに設定した場合,「?AJS2111?」で引き継がれる情報はイベントID(EVID)になります。
- マクロ変数を後続ジョブのコマンドラインに指定する場合,引き継ぐ情報に空白または「'(シングルクォーテーションマーク)」が含まれていると情報を正しく引き継げません。
- コマンドラインには,エスケープシーケンスを含むデータを引き継がないでください。また,空白を含んだデータを引き継いだ場合は,意図しない動作をすることがあるため,マクロ変数を「"(ダブルクォーテーションマーク)」で囲んで定義してください。
- 引き継ぎ情報をジョブのコマンドラインで使う場合,例えば「AB"C」のように引き継ぐ情報に「"(ダブルクォーテーションマーク)」が入っているとき,「"(ダブルクォーテーションマーク)」は無視され,「ABC」という形で後続ジョブに引き継がれます。このように,各OSのコマンドラインの制約によってジョブが正しく実行されないことがあります。特殊な文字が入っている情報を引き継ぐ場合には,コマンドラインに直接展開しないで環境変数に引き継ぐようにしてください。なお,「"(ダブルクォーテーションマーク)」を有効にする機能によって,「"(ダブルクォーテーションマーク)」を含む情報を引き継ぐことができます。「"(ダブルクォーテーションマーク)」を有効にする機能については,マニュアル「JP1/Automatic Job Management System 2 設計・運用ガイド 5.3.8(4) 「"(ダブルクォーテーションマーク)」を含むデータをイベントジョブの引き継ぎ情報に使用する」,およびマニュアル「JP1/Automatic Job Management System 2 セットアップガイド 7.13 「"(ダブルクォーテーションマーク)」を含むデータをイベントジョブの引き継ぎ情報に使用するための設定」,「JP1/Automatic Job Management System 2 セットアップガイド 16.9 「"(ダブルクォーテーションマーク)」を含むデータをイベントジョブの引き継ぎ情報に使用するための設定」を参照してください。ただし,お使いのJP1/AJS2 - Managerのバージョンが06-71以前の場合,この機能は使用できません。
- イベントジョブから引き継ぐ情報がない場合,またはイベントジョブが実行されなかった場合,後続ジョブで定義したマクロ変数にはマクロ変数名の文字列が渡されます。例えば,マクロ変数名を「?AJS2111?」と定義している場合は,文字列「?AJS2111?」が渡されます。
Copyright (C) 2006, 2010, Hitachi, Ltd.
Copyright (C) 2006, 2010, Hitachi Software Engineering Co., Ltd.