[comment]: # ({b16164fd-26ad891b})
# 1 Variáveis de ambiente

[comment]: # ({/b16164fd-26ad891b})

[comment]: # ({371ca5fc-72128caf})
#### Visão geral

Variáveis de ambiente permitem configurar 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 variáveis podem ser passadas em tempo de execução para se adaptar a diferentes configurações.

No caso mais simples, ao definir o valor do parâmetro de configuração [DebugLevel](/manual/concepts/server/server_params#debuglevel) do Zabbix server como uma variável de ambiente, você pode usá-lo para configurar o server na inicialização:

```bash
# 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:

-   [Server](/manual/concepts/server/server_params)
-   [Proxy](/manual/concepts/proxy/proxy_params)
-   Agent ([UNIX](/manual/concepts/agent/agentd_params) ou [Windows](/manual/concepts/agent/agentd_params_win))
-   Agent 2 ([UNIX](/manual/concepts/agent2/agent2_params) ou [Windows](/manual/concepts/agent2/agent2_params_win)), incluindo [plugins](/manual/appendix/config/zabbix_agent2_plugins)
-   [Web service](/manual/concepts/web_service/web_service_params)
-   Zabbix sender (ao usar a opção [-c, --config](/manpages/zabbix_sender#options))

[comment]: # ({/371ca5fc-72128caf})

[comment]: # ({8d252f3a-7598ffff})
#### 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](/manual/concepts/agent#runtime-control) (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](#examples).
-   O comando em tempo de execução `userparameter_reload` [runtime command](/manual/concepts/agent#runtime-control) não suporta recarregar 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 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, via arquivo `/proc/<PID>/environ`).

[comment]: # ({/8d252f3a-7598ffff})

[comment]: # ({c33cd6ee-5d8ec091})
#### Sintaxe

As variáveis de ambiente devem usar a seguinte sintaxe: ${alfanuméricos/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 correspondam à sintaxe exigida ou que sejam combinadas com um valor regular serão tratadas como valores regulares, o que pode produzir erros.

Sintaxe correta de variável:

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

Sintaxe incorreta de variável:

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

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

[comment]: # ({/c33cd6ee-5d8ec091})

[comment]: # ({b319b360-c638a080})
#### Exemplos

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

[comment]: # ({/b319b360-c638a080})

[comment]: # ({78b82896-0382a339})
##### Exemplo 1: Configurando e testando o agent Zabbix

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

```ini
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
```

2\. Teste o arquivo de configuração:

```bash
ZBX_HOSTNAME="Novo agent Zabbix" 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:

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

Ao usar [comandos em tempo de execução](/manual/concepts/agent#runtime-control) (por exemplo, para aumentar o nível de log do agent), quaisquer variáveis de ambiente usadas anteriormente devem ser especificadas:

```bash
ZBX_HOSTNAME="Novo agent Zabbix" 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 as 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 configuradas incorretamente.

```bash
export ZBX_HOSTNAME="Novo agent 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
```

[comment]: # ({/78b82896-0382a339})

[comment]: # ({6e772927-6852ff3f})
##### Exemplo 2: Configurando o agent Zabbix para um container

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

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

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

2\. Após criar a imagem do container, inicie o container do agent (por exemplo, Docker) com variáveis de ambiente:

```bash
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](/manual/concepts/agent#runtime-control) (por exemplo, para aumentar o nível de log do agent), acesse o shell do container e execute o comando em tempo de execução:

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

::: noteimportant
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.
:::

[comment]: # ({/6e772927-6852ff3f})
