プロビジョニングエージェントに関連する設定 【OP-Addon】

プロビジョニングエージェントに関連する設定項目について説明します。

default.json

プロビジョニングエージェントのデフォルト設定が記載されたファイルです。 {インストールディレクトリ}/conf/に配置されています。 local.jsonに設定を記載した場合、そちらの設定値が優先されます。

本ファイルの設定内容は変更しないでください。

    {
        "iceMonitor": {
            "command": "node",
            "arguments": "ice-core",
            "interval": 3000,
            "startIceThreshold": 5,
            "stopIceThreshold": 5,
            "failedThreshold": 10,
            "startIceJob": ["start_ice", "restart_ice"],
            "stopIceJob": ["stop_ice"]
        },
        "logger": "SYSLOG",
        "disableTrigger": [],
        "stopTimeout": 30000
    }
iceMonitor.command

ICE Coreのプロセス監視時に使用するコマンド名です。通常変更することはありません。

iceMonitor.arguments

ICE Coreのプロセス監視時に使用するコマンドライン引数です。通常変更することはありません。

iceMonitor.interval

ICE Coreのプロセス監視の間隔を設定します。指定した間隔でプロセスの死活をチェックします。単位はミリ秒です。

iceMonitor.startIceThreshold

ICE Coreが起動したと判断するまでのチェック回数を設定します。interval×startIceThresholdが起動を判断するまでにかかる時間となります。

iceMonitor.stopIceThreshold

ICE Coreが停止したと判断するまでのチェック回数を設定します。interval×stopIceThresholdが停止を判断するまでにかかる時間となります。

iceMonitor.failedThreshold

ICE Coreの起動・停止が失敗したと判断するまでのチェック回数を設定します。interval×failedThresholdまでにstartIceThreshold、stopIceThresholdの条件を満たさない場合に失敗と見なします。

iceMonitor.startIceJob

ICE Coreを起動するジョブの一覧です。任意ジョブのジョブ名(=ジョブ定義ファイル名)を配列の要素として設定します。この項目に設定したジョブの実行後に、"icestartfailed"トリガのチェックを行います。同じ名前のジョブが複数トリガに存在する場合、そのすべてのジョブが対象となりますので、ご注意ください。

iceMonitor.stopIceJob

ICE Coreを停止するジョブの一覧です。任意ジョブのジョブ名(=ジョブ定義ファイル名)を配列の要素として設定します。この項目に設定したジョブの実行後に、"icestopfailed"トリガのチェックを行います。同じ名前のジョブが複数トリガに存在する場合、そのすべてのジョブが対象となりますので、ご注意ください。

logger

ログ出力先を設定します。詳細はlogger.jsonを参照してください。

disableTrigger

無効化するトリガを設定します。"init"や"icestart"等のトリガ名を配列の要素に追加してください。

stopTimeout

プロビジョニングエージェント停止時に、未完了ジョブの終了を待ち合わせるタイムアウト時間を設定します。単位はミリ秒です。0にするとタイムアウトを行わず、すべてのジョブが完了するまで待ちます。

Note

stopTimeoutの設定によりジョブの処理を中断した場合、ジョブ・タスクの処理内容によってはファイル破損等の異常状態に陥る可能性がありますのでご注意ください。

local.json

default.jsonに定義された設定から、設定値を変更したい場合に本ファイルに設定します。 {インストールディレクトリ}/conf/に配置してください。

例) iceMonitor.intervalを5000に変更する場合

    {
        "iceMonitor": {
            "interval": 5000
        }
    }

logger.json

プロビジョニングエージェントのログ出力設定です。

{
    "appenders": {
        "AGENT": {
            "type": "file",
            "filename": "/var/log/ice/agent.log",
            "maxLogSize":102400,
            "backups":3
        },
        "SYSLOG": {
            "type": "log4js-syslog-appender",
            "tag": "ICE_PA",
            "facility": "local1",
            "path": "/dev/log",
            "transport": "socket"
        }
    },
    "categories": {
        "default": {"appenders": ["AGENT"], "level": "INFO"},
        "AGENT": {"appenders": ["AGENT"], "level": "INFO"},
        "SYSLOG": {"appenders": ["SYSLOG"], "level": "INFO"}
    }
}
  • appenders.AGENT: ファイルへのログ出力時の設定
  • filename: ログファイルのパスを指定します。
  • maxLogSize: ログファイルの最大サイズを指定します。
  • backups: ログファイルの世代数を指定します。
  • appenders.SYSLOG: syslogへのログ出力時の設定
  • categories.AGENT.level: ファイルにログ出力する場合のログレベルの設定
  • categories.SYSLOG.level: syslogにログ出力する場合のログレベルの設定

ログレベルの定義は下記の通りです。

Level 説明
TRACE スタックトレースやエラーオブジェクトをエラーメッセージとは別に出力する。開発や保守対応時の解析に使用する。
DEBUG デバッグ用メッセージ。実行したジョブ・タスクの詳細情報や標準出力等、開発時の解析時や保守対応時の解析に使用する。
INFO 起動・終了ログやジョブ実行履歴など、エラー以外で記録すべき情報を出力する。
WARN 異常とは言い切れないが正常とも異なる何らかの問題が発生した場合に警告メッセージを出力する。
ERROR 予期しない実行時エラーを出力する。
FATAL プログラムの異常終了を伴うような異常が発生した場合にエラーを出力する。

ジョブ定義ファイル

ジョブの処理内容を定義するファイルです。 {ジョブ名}.jsonというファイル名で作成します。

{インストールディレクトリ}/jobs/{トリガ名}/に定義ファイルを配置します。
ジョブで使用するスクリプト等は{インストールディレクトリ}/scriptsに配置してください。

トリガに指定可能な値は、下記の通りです。

概要 詳細条件
init プロビジョニングエージェントの初回起動時 プロビジョニングエージェントの起動時、ice-pa.initが存在しない場合に発生します。
icestart ICE Coreの起動時 startIceThresholdの条件を満たした場合に発生します。
icestop ICE Coreの停止時 stopIceThresholdの条件を満たした場合に発生します。
icestartfailed ICE Coreの起動失敗 startIceJobの実行後にfailedThresholdの条件を満たした場合に発生します。
icestopfailed ICE Coreの停止失敗 stopIceJobの実行後にfailedThresholdの条件を満たした場合に発生します。

startIceThreshold、stopIceThreshold、startIceJob、stopIceJob、failedThresholdについては、default.jsonを参照してください。

ice-pa.initは、初回起動のトリガ(init)が発生済みであることを示すファイルです。rcスクリプトのINITFILEで指定したパスに作成されます。詳細はプロビジョニングエージェントのインストール・アンインストールを参照してください。

例えばicestartで実行するジョブを登録する場合、{インストールディレクトリ}/jobs/icestart/にジョブ定義ファイルを配置してください。

Note

ウォッチドッグタイマ等、プロビジョニングエージェント以外のツールでICE Coreの監視・再起動を行っている場合、プロビジョニングエージェントのicestopトリガの処理が正常に完了しない可能性があります。そのようなケースでは、icestopトリガを使用せず、外部ツールにICE Core停止時の処理を任せる対処をお願いします。

ジョブ定義ファイルのフォーマットを下記に示します。

    {
        "enabled": true,    //ジョブの有効・無効の設定
        "priority": 0,
        "description": "",    //ジョブの説明を記述可能
        "tasks": [    //タスクを実行順に配列に並べる
            {
                "command": "",    //実行可能ファイルのパス・ファイル名
                "args": [""],    //コマンドライン引数
                "options": {    //タスク実行時のオプション
                },
                "ignoreReturnCode": false    //trueを設定するとリターンコードを無視
                "description": ""    //タスクの説明を記述可能
            },
            {
                "command": "",
                "args": [""],
                "options": {
                },
                "description": ""
            }
        ]
    }

{インストールディレクトリ}/scripts{ICE_HOME}/binはPATHに追加されるため、commandで配下のファイル名を指定可能です。

command、argsはテンプレートエンジン(Mustache)を使用した値の置換が可能です。テンプレートの設定方法については、template.jsを参照してください。

optionsに設定可能な値については、Node.jsのリファレンスを参照してください。環境変数やタイムアウト、実行ユーザ等を指定可能です。

ignoreReturnCodeにtrueを設定すると、タスクから0以外のリターンコードが返却されてもジョブの処理を継続します。省略時は既定値のfalseが適用されます。

priorityは0~9の範囲で設定可能です。0~9以外の数値を設定した場合、ジョブは実行されません。

argsはコマンドライン引数の値を文字列の配列で指定できますが、下記の例のように数値で配列のインデックスを指定することで、指定したタスクの標準出力の内容を設定することができます。

        "tasks": [
            {
                "command": "echo",
                "args": ["hoge"],
                "options": {
                },
                "description": ""
            },
            {
                "command": "echo",
                "args": [0],    //tasks[0]の標準出力を設定。この例では"hoge"が設定される。
                "options": {
                },
                "description": ""
            }
        ]

自分自身や自分より後に実行されるタスクのインデックスを指定することはできません。

template.js

ジョブ定義ファイルのcommand、argsで使用するMustacheテンプレートを定義するための設定ファイルです。 {インストールディレクトリ}/conf/に配置されています。

例)タスクのargsにhogeという文字列を設定する場合

  • template.js
module.exports = {
    "key": "hoge"
};
  • ジョブ定義ファイル
        "tasks": [
            {
                "command": "echo",
                "args": ["{{key}}"],
                "options": {
                },
                "description": ""
            }
        ]

{{key1.key2}}のように、template.jsでネストして定義されたキーを指定することも可能です。