担当しているシステムでジョブ管理ツールのJP1で定期的にジョブを実行しているシステムがあります。
そのシステムでは毎月対象のジョブの実行時間を計測して、パフォーマンスに問題が発生していないかをグラフにまとめて報告しています。
そこで、JP1で実行されているジョブの実行時間を一括で取得できないか調べてみたところ、
JP1のマネージャーが入っているサーバで直接ajsshowコマンドを実行すれば簡単に取得することができることが分かりました。
今回は、毎日決められた時間にajsshowで1日分のジョブの実行時間を出力するバッチを作ってたいと思います。
JP1のジョブ実行時間を出力
以下のようなバッチを作成してみました。
rem ==============================================================
rem 名称:JP1実行結果ログ取得
rem 処理:毎日特定の時間に当日分のジョブネットの実行結果を毎日取得する
rem 実行時間:基準時刻が終わるタイミング
rem ==============================================================
rem 1日の定義は(基準時刻で決まる)
rem 取得開始日と取得終了日の設定(1日分なので当日を取得)
SET vdate=%date%
rem 結果ファイルのタイムスタンプ(yyyymmdd)
SET yyyyMMdd=%date:/=%
rem 結果ファイルの格納先(JP1サーバで決められた場所)
set copy_from="C:\test"
rem 結果ファイルの格納先をフルパスで指定(JP1サーバでのファイル出力先を指定)
SET KEKKAFILE=%copy_from%\jp1result_%yyyyMMdd%.txt
rem =====ここからJP1コマンド======
rem -Rで指定したジョブネットまたはジョブグループの配下すべての実行結果が出力される。
ajsshow -v %vdate% -w %vdate% -f "%%s %%e %%R %%J" -R AJSROOT:XXXXXXXXXX >%KEKKAFILE%
ajsshowのオプション(引数)
オプションは以下を使えばほとんど必要な情報は取得できると思います。
引数 | 説明 |
---|---|
-v | 出力対象の実行開始日指定 |
-w | 出力対象の実行終了日指定 |
-f | フォーマット指示子 |
%s | ジョブネット,またはジョブの実行開始日時(-fのフォーマット指示子) |
%e | ジョブネット,またはジョブの実行終了日時(-fのフォーマット指示子) |
%R | 戻り値(-fのフォーマット指示子) |
%J | ジョブネット完全名(-fのフォーマット指示子) |
-R | ジョブネット,またはジョブの実行開始日時(-fのフォーマット指示子) |
ジョブネット名でなくジョブグループ名でも問題なく出力することが可能です。また、バッチから起動する場合は、%がエスケープされるので%%となります。
出力内容
上記コマンドで出力される内容は以下の通りです。
ジョブネットの場合
2021/06/01 08:30:00 2021/06/01 08:30:10 *** ジョブネットのフルパス
※ジョブ実行開始日△ジョブ開始実行時間△ジョブ実行終了日△ジョブ実行終了時間△リターンコード△ジョブネットフルパス。(△は半角スペース)
- リターンコードは***で出力されます。
ジョブの場合
2021/06/01 08:30:00 2021/06/01 08:30:10 0 ジョブネットのフルパス
- リターンコードは0などのリターンコード値が返ってきます。
ジョブの実行時間を算出するには?
ジョブの実行時間を算出するには,ジョブの実行終了日時-ジョブ開始日時を計算すれば、それが実行時間になります。
まとめ
- ジョブの実行時間はajsshowコマンドで簡単に取得可能
- ajsshowコマンドはJP1のマネージャーサーバで実行する。
- ジョブネットのリターンコードは***となる。
この出力内容をpythonなどで取得すると簡単に日別や月別の実行時間などを出力することが可能です。興味のある方は以下に記載していますので参考にしていただければと思います。
コメント