環境変数を使用すると、設定ファイルに値をハードコーディングすることなく、Zabbix コンポーネントを設定できます。 これにより、Docker などの動的な環境で設定を簡単に管理でき、Docker では、実行時に変数を渡すことでさまざまな設定に適応させることができます。
最も単純なケースでは、Zabbix サーバーの DebugLevel 設定パラメータ値を環境変数に設定することで、起動時にサーバーの設定に使用できます。
# Zabbix サーバー設定ファイル:
DebugLevel=${NewDebugLevel}
# Zabbix サーバーの起動:
NewDebugLevel=5 /usr/sbin/zabbix_server
環境変数は、以下の Zabbix コンポーネントでサポートされています。
userparameter_reload
ランタイムコマンドは、環境変数の再読み込みをサポートしていません。再読み込み中は変数は無視され、通常の値を持つパラメータのみが再読み込みされます。/proc/<PID>/environ
ファイル経由)環境変数は、${英数字/アンダースコア} という構文を使用する必要があります。
変数名には、英字 (a-z、A-Z)、アンダースコア (_)、数字 (0-9) のみを使用できます。また、数字で始まってはなりません。
必須の構文に一致しない変数、または通常の値と組み合わせられた変数は通常の値として扱われ、エラーが発生する可能性があります。
正しい変数構文:
誤った変数構文:
Windowsでは、環境変数名の大文字と小文字は区別されません。
以下の例では、Zabbix コンポーネントでの環境変数の設定および使用方法を示しています。
1. エージェント設定ファイルで環境変数を設定します。
2. 設定ファイルをテストします。
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
3.環境変数を有効にしてエージェントを起動します。
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
ランタイムコマンドを使用する場合(例:エージェントのログレベルを上げる場合)、以前に使用した環境変数を再度指定する必要があります。
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
これは、エージェントがランタイムコマンドを実行するために設定ファイルを使用するためです。環境変数が省略されている場合、設定パラメータのデフォルト値が使用されます。
あるいは、エージェント設定ファイルで環境変数を設定した後、プロセスでそれらを有効に出来るようにすることもできます。(例:export
コマンドを使用) これにより、変数の欠落や誤った設定による予期しない動作のリスクを軽減できます。
export ZBX_HOSTNAME="新しい Zabbix エージェント"
export ServerActive=127.0.0.1
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
Zabbix コンポーネント(例: Zabbix エージェント)用のカスタムイメージを独自に作成・設定する場合には、環境変数を使用して設定パラメータを定義し、その変数を有効にしてコンテナを起動できます。
1. イメージを準備する際に、エージェント設定ファイルで環境変数を設定します。
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
2.コンテナイメージをビルドしたら、環境変数を指定してエージェントコンテナ(例:Docker)を起動します。
docker run --name my-zabbix-agent -e ZBX_HOSTNAME="new-hostname" -e BUFSZ=1000 -e LISTENPORT=20050 -e _UsrPar01="key1,ls" -e _UsrPar02="key2,pwd" --init -d my-zabbix-agent:latest
3. ランタイムコマンドを使用する場合(例:エージェントのログレベルを上げる場合)、コンテナシェルにアクセスし、以下のランタイムコマンドを実行します。
userparameter_reload
ランタイムコマンドは、環境変数の再読み込みをサポートしていません。 再読み込み中は変数は無視され、通常の値を持つパラメータのみが再読み込みされます。