Variáveis de ambiente

Visão geral

As variáveis de ambiente permitem configurar os componentes do Zabbix sem codificar valores diretamente nos arquivos de configuração. Isso facilita o gerenciamento de configurações em ambientes dinâmicos, como o Docker, onde as variáveis podem ser passadas em tempo de execução para se adaptar a diferentes cenários.

No caso mais simples, ao definir o valor do parâmetro de configuração DebugLevel do Zabbix server como uma variável de ambiente, você pode usá-lo para configurar o server na inicialização:

# Arquivo de configuração do Zabbix server:
DebugLevel=${NEW_DEBUG_LEVEL}

# Iniciando o Zabbix server:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server

As variáveis de ambiente são suportadas pelos seguintes componentes do Zabbix:

Notas importantes

  • Quando um parâmetro de configuração é definido como uma variável de ambiente, que não é especificada ao executar o componente, o valor padrão do parâmetro é usado.
  • Ao usar comandos em tempo de execução (por exemplo, para aumentar o nível de log do agent), quaisquer variáveis de ambiente usadas anteriormente devem ser especificadas. Isso ocorre porque os componentes do Zabbix usam seu arquivo de configuração para executar comandos em tempo de execução; se as variáveis de ambiente forem omitidas, os valores padrão dos parâmetros de configuração serão usados. Veja Exemplos.
  • O comando em tempo de execução userparameter_reload comandos em tempo de execução não oferece suporte ao recarregamento de variáveis de ambiente. Durante o recarregamento, as variáveis são ignoradas e apenas os parâmetros com valores regulares são recarregados.
  • As variáveis de ambiente atuais do processo, que foram usadas nos arquivos de configuração, são limpas após o componente Zabbix ser iniciado. Isso garante que os processos filhos (por exemplo, scripts remotos executados pelo Zabbix) não possam acessar essas variáveis. No entanto, observe que as variáveis iniciais do processo ainda podem ser recuperadas (por exemplo, por meio do arquivo /proc/<PID>/environ).

Sintaxe

As variáveis de ambiente devem usar a seguinte sintaxe: ${alphanumerics/underscores}.

O nome da variável pode incluir apenas letras (a-z, A-Z), underscores (_), e dígitos (0-9), e não deve começar com um dígito.

Variáveis que não correspondem à sintaxe exigida ou que são combinadas com um valor regular serão tratadas como valores regulares, o que pode gerar erros.

Sintaxe correta da variável:

DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}

Sintaxe incorreta da variável:

DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log

No Windows, os nomes das variáveis de ambiente não diferenciam maiúsculas de minúsculas.

Exemplos

Os exemplos a seguir mostram como configurar e usar variáveis de ambiente com componentes do Zabbix.

Exemplo 1: Configurando e testando o Zabbix agent

1. Defina variáveis de ambiente no arquivo de configuração do agent:

Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}

2. Teste o arquivo de configuração:

ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config

3. Inicie o agent com variáveis de ambiente:

ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf

Ao usar comandos em tempo de execução (por exemplo, para aumentar o nível de log do agent), quaisquer variáveis de ambiente usadas anteriormente devem ser especificadas:

ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase

Isso ocorre porque o agent usa seu arquivo de configuração para executar comandos em tempo de execução; se as variáveis de ambiente forem omitidas, os valores padrão dos parâmetros de configuração serão usados.

Como alternativa, após definir variáveis de ambiente no arquivo de configuração do agent, você pode disponibilizá-las para os processos (por exemplo, usando o comando export). Isso reduz o risco de comportamento inesperado devido a variáveis ausentes ou definidas incorretamente.

export ZBX_HOSTNAME="New Zabbix agent"
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
Exemplo 2: Configurando o Zabbix agent para um contêiner

Se você estiver criando e configurando sua própria imagem personalizada para componentes do Zabbix (por exemplo, Zabbix agent), você pode definir parâmetros de configuração usando variáveis de ambiente e, em seguida, iniciar o contêiner com essas variáveis.

1. Ao preparar a imagem, defina variáveis de ambiente no arquivo de configuração do agent:

Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}

2. Depois de criar a imagem do contêiner, inicie o contêiner do agent (por exemplo, Docker) com variáveis de ambiente:

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. Ao usar comandos em tempo de execução (por exemplo, para aumentar o nível de log do agent), acesse o shell do contêiner e execute o comando em tempo de execução:

docker exec -it <containerid> sh
/usr/sbin/zabbix_agentd -R log_level_increase

O comando em tempo de execução userparameter_reload não oferece suporte ao recarregamento de variáveis de ambiente. Durante o recarregamento, as variáveis são ignoradas, e apenas os parâmetros com valores regulares são recarregados.