ログを監視する

最終更新日: 2022年6月21日

利用方法

指定時間になるとログ(system.log)の内容を読み込み、条件に合致するログ内容をメールで送信します。

ジョブの設定

設定方法

  1. 管理者権限をもったアカウントでログオンします。
  2. 管理処理メニューから「ジョブ管理... > ジョブスケジュール検索」画面を開きます。
  3. 「登録画面へ」ボタンを押下し、ジョブスケジュールの新規登録処理を行います。
  4. ジョブ名から「AlterMailFromLog」を選択します。その下の説明欄に「ログ内容をメールに出力」と表示されます。
    ジョブの設定
  5. ジョブパラメータに、実行したいコマンドを記述します。
    キーと値の記述方法については、指定できるジョブパラメータをお読みください。
  6. ジョブの実行スケジュールを指定します。
  7. 「有効」にチェックを入れます。これにより、このジョブが有効になります。
    ジョブを有効にする
  8. このジョブを実行する管理者のアカウントおよびパスワードを入力します。
    実行アカウントとパスワードを入力
  9. 「保存」ボタンを押してジョブスケジュールを登録します。指定した時間になると、コマンドが実行されます。
    ジョブスケジュールの登録が完了した

指定できるジョブパラメータ

ジョブに指定するパラメータを複数、指定することができます。
ここで指定できるパラメータ(キーと値)は次の通りです。

キー(パラメータ名) 必須 説明 値の記述例
type - 次の6つの文字列のいずれかを指定します。"ALL", "DEBUG", "INFO", "WARN", "ERROR", "FATAL"
省略時は "ERROR" となります。"ALL" を指定すると、すべてが対象になります。
WARN
keyword - 指定した文字列を含むログを取得します。例えば "JFC-" と設定すると、ログコードが含まれるログを取得することができます。

先頭に "OR" を付与すると、そのあとの文字列を空白区切りのキーワードと扱い、OR 検索を行います。OR を付与せず複数のキーワードを空白区切りで列挙すると AND 検索を行います。8.5.7/9.0.3
  • JFC-
  • OR JFC-00001 JFC-90000
  • JFC-00001 JFC-90000
interval - 1日に複数回、このジョブを実行する場合の時間間隔を指定します。[詳細は下記「interval値の扱い」をお読みください。] 8h
script - 文字列処理を行うサーバサイドJavaScriptコードを直接、記述します。各ログ行に対してこのスクリプトが実行されます。[後述]

このジョブの実行結果も、またログファイル(system.log)に記載されます。

interval 値の扱い8.5.9/9.1.0

ジョブスケジュールで指定する時間とは別に、この指定を行うことができます。末尾が 'h' のときは時間を、末尾が 'm' の場合は分を意味します。接尾語がない場合は秒になります。(*1)

値は24時間以内で指定します。毎日18時にこのジョブを起動し、interval に '8h' と指定すると、10時から18時までのログを対象とします。(*2)

(*1) h, m を混合することはできません。1h30mという指定は無効です。
(*2) R8.5.8/R9.0.4までは、ジョブ起動時間にかかわらず常に1日(24時間)を interval 間隔で換算します。このとき分の指定に注意が必要です。例えば10m指定では18時0分,18時10分,18時20分,..となります。R8.5.9/R9.1.0より、この分指定でのintervalの扱いで、ジョブ起動時間を考慮するようになりました。例えば18時3分にジョブが起動したとき18時3分,18時13分,18時23分,..となります。

メール送信の設定

上記パラメータとあわせて「ジョブの実行結果をメールで送信する」設定を行ってください。これでログの内容を指定したメールアドレスへ送信します。

メール送信パラメータ mail:doNotSendEmptyMessage にtrueを指定すると、ログが存在しなかった場合はメールは送信されません。

ジョブの実行を停止する

ジョブを一時的に無効にすることができます。

  1. 管理者権限をもったアカウントでログオンします。
  2. 管理処理メニューから「ジョブ管理... > ジョブスケジュール検索」画面を開きます。
  3. 該当する「ジョブスケジュール」を検索し、更新画面を開きます。
  4. 「有効」フラグについているチェックをはずし、保存します。
    ジョブを無効にする

多重実行の抑制

ジョブの多重実行を行うことはできません。

あるジョブを 1 分毎に起動させるようにした場合、1 分後にこのジョブの実行が終了していなければ、新しいジョブは実行されません。

設定例

CSVダウンロード処理が実行されたログをメールで送信する

パラメータ

パラメータキー
mail:tofoo@jasminesoft.co.jp, bar@jasminesoft.co.jp
mail:frominfo@jasminesoft.co.jp
mail:hostMAILSERVERNAME
mail:subject[Download log from system]
mail:doNotSendEmptyMessagetrue
keyworddownload
typeALL
interval3h

スケジュール

単位 曜日
0 0 0,3,6,9,12,15,18,21 * * ? *

スクリプトを利用する

パラメータ "script" を使うと、ログ本文の文字列の内容も判断材料に加えることができます。

特定のログメッセージが含まれていた場合に限定する

scriptパラメータの値部分に次のように直接、コードを記載します。関数名は checkLog とします。引数 log のメソッド getMessage を使って、ログ本文を取得することができます。この関数の戻り値が true の場合が対象となります。

function checkLog(log) {
    var s = log.getMessage();
    var msg = '';// チェックしたいログメッセージを記述
    var cnt = s.indexOf(msg);
    if (cnt >= 0) {
        return true;
    }
    return false;
}

コードサイズは、お使いのデータベースの文字列型の範囲内におさまるようにしてください。おおむね1000から2000文字あたりが目安となります。

すぐに実行する

時間指定ではなく、このジョブを今すぐ実行することもできます。「ジョブの即時実行」をお読みください。

実行対象 8.3.1

オートスケール環境でない場合、常に "1インスタンス" としてください。

オートスケール環境でジョブを運用する場合、"1インスタンス" と "全インスタンス" を選択することができます。[詳細...]