一定時間以上実行しているスクリプトを検出したい

Avatar
dstn

一定時間以上実行しているスクリプトを検出したい

キーワード:CLI,外部アプリケーション起動,遅延,実行時間,処理時間

概要

一定時間以上実行しているスクリプトを検出したい場合、CLIコマンド「ps」を使用します。

サンプルプロジェクトの説明

CLIコマンド「ps」を実行し、実行結果から実行中のスクリプトを確認します。
スクリプトからCLIコマンドを実行する方法については、「 スクリプトからCLIコマンドを実行したい」を参照してください。
本スクリプトでは、「スクリプトからCLIコマンドを実行したい」で作成した「rl_reference_095プロジェクト」をサービス登録して使用します。

実行開始から30分以上経過しているスクリプトを抽出し、CSVファイルに出力します。

処理の流れ

サンプルプロジェクトの処理の流れは以下の通りです。
  1. スクリプト呼び出し処理」でCLIバッチを実行する処理を呼び出し、「ps」コマンドを実行します。
  2. CSVファイル読み取り処理」で実行結果を読み取ります。
  3. マッピング処理」でスクリプトの開始日時と現在日時を比較し、実行開始から30分以上経過しているスクリプトを抽出します。
  4. CSVファイル書き込み処理」で抽出されたスクリプトのリストをファイルに書き込みます。
  5. 条件分岐処理」で抽出結果を判定し、実行開始から30分以上経過しているスクリプトが1つ以上存在する場合、「例外通知処理」で処理を異常終了させます。
実行開始から30分以上経過しているスクリプトが存在した場合の実行結果について
  • 対象のスクリプトが1つ以上存在した場合、以下のダイアログが表示されて異常終了します。



  • 対象のスクリプトリストについては、サンプルデータ「output.csv」を参照してください。

ポイントとなる機能

名前 説明 ツールパレット上の場所
スクリプト呼び出し処理 プロジェクト内のほかのスクリプトやサーバに登録されたスクリプトを呼び出します。 「基本」-「処理」-「スクリプト呼び出し」
マッピング処理 入力データを変換します。 「変換」-「基本」-「マッピング」

処理のポイント

実行したいCLIコマンドを「CLIコマンド設定ファイル」にあらかじめ記述しておくことで、スクリプトからCLIコマンドを実行できます。
CLIコマンド設定ファイルの詳細については、「 CLIバッチについて」を参照してください。
本シナリオではCLIコマンド「ps」を実行します。
psコマンドの実行結果を読み取ることによって、一定時間以上、実行中のスクリプトがあるか確認できます。

サンプルプロジェクトの使用方法

上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。

サンプルプロジェクトのダウンロード 逆引きリファレンス シナリオ099のサンプルプロジェクト
  1. サンプルプロジェクトの展開
    サンプルプロジェクトファイル「rl_reference_099.zip」を展開します。

  2. プロジェクトのアップロード
    「rl_reference_099.zip」を展開後に作成される「rl_reference_099プロジェクト」ディレクトリがプロジェクトファイルとなります。
    DataSpider Studioを起動し、マイプロジェクトの画面から[ファイル]-[ローカルからアップロード]で展開したディレクトリ「rl_reference_099プロジェクト」をアップロードしてください。

  3. サンプルデータの準備
    「rl_reference_099.zip」を展開後に作成される「samples」ディレクトリがサンプルデータとなります。
    $DATASPIDER_HOME/server/samplesディレクトリに上書きしてください。

  4. CLIランチャの準備
    CLIランチャを用意します。
    スクリプトからCLIコマンドを実行したい」で作成した「rl_reference_095プロジェクト」を、サービス名「CLIランチャ」でサービス登録してください。

スクリプトの作成手順

プロセスフローおよびデータフローは、「 サンプルプロジェクトの説明」のスクリプト画像を参照して適宜設定してください。
  1. デザイナのツールパレット「基本」-「処理」-「スクリプト呼び出し」から、スクリプト呼び出し処理をスクリプトキャンバスに配置します。
    • スクリプト呼び出し処理の設定は、以下のように行います。

      [必須設定]タブ

      [入出力]タブ



      処理のポイント

  2. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル読み取り」から、CSVファイル読み取り処理をスクリプトキャンバスに配置します。
    • CSVファイル読み取り処理の設定は、以下のように行います。

      [必須設定]タブ


  3. デザイナのツールパレット「変換」-「基本」-「マッピング」から、マッピング処理をスクリプトキャンバスに配置します。

  4. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル書き込み」から、CSVファイル書き込み処理をスクリプトキャンバスに配置します。
    • CSVファイル読み取り処理の設定は、以下のように行います。

      [必須設定]タブ


  5. マッピング処理のMapperエディタを開き、実行開始から30分以上経過しているスクリプトを抽出する処理を作成します。
    • マッピングキャンバスは、以下のように設定します。

      マッピングキャンバス



      番号 ロジック名 説明 ツールパレット上の場所
      (1) 条件による抽出 条件にマッチしたもののみ繰り返して出力します。 「繰り返し」-「条件指定」-「条件による抽出」
      (2) 日時が存在 入力日時が存在するのかどうか判定します。
      [必須設定]タブの[フォーマット]には「yyyy/MM/dd HH:mm」と入力します。
      [nullの処理]タブの[nullオプション]には「判定/演算/処理不能な場合にfalseを返す」を選択します。
      「条件」-「日付」-「日時が存在」
      (3) And演算 二つの入力真偽値の論理和(AND条件)を返します。
      [nullの処理]タブの[nullオプション]には「nullをfalseに変換」を選択します。
      「条件」-「真偽」-「And演算」
      (4) 日時のパース 入力文字列を指定フォーマットで日時にして出力します。
      [必須設定]タブの[フォーマット]には「yyyy/MM/dd HH:mm」と入力します。
      「日付」-「基本」-「日時のパース」
      (5) 以前 上入力日時が下入力日時以前かどうか判定します。
      [null処理]タブの[nullオプション]には「判定/演算/処理不能な場合にfalseを返す」を選択します。
      「条件」-「日付」-「以前」
      (6) 現在日時 現在日時を出力します。 「日付」-「基本」-「現在日時」
      (7) 数値定数 数値定数を出力します。
      [必須設定]タブの[数値]には「-30」と入力します。
      「数値」-「基本」-「数値定数」
      (8) 分を増減 入力日時の分を増減して返します。 「日付」-「演算」-「分を増減」

      処理のポイント
      • 検出までの時間を変更したい場合、数値定数ロジックの設定値「-30」を変更してください。

  6. デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。
    • 条件の設定は、以下のように行います。

      [必須設定]タブ


  7. デザイナのツールパレット「基本」-「処理」-「例外通知」から、例外通知処理をスクリプトキャンバスに配置します。
    • 例外通知処理の設定は、以下のように行います。

      [必須設定]タブ


  8. スクリプトを実行し、以下の結果になれば成功です。
    • 実行開始から30分以上経過したスクリプトが存在しない場合、処理が正常終了します。
    • 実行開始から30分以上経過したスクリプトが存在する場合、例外が通知され、処理が異常終了します。

コメント

ログインしてコメントを残してください。

Powered by Zendesk