3 Agent 2
Visão geral
O Zabbix Agent 2 é uma nova geração do agente Zabbix e pode ser usado no lugar do Zabbix Agent. O Zabbix Agent 2 foi desenvolvido para:
- reduzir o número de conexões TCP
- fornecer concorrência aprimorada de verificações
- ser facilmente extensível com plugins. Um plugin deve ser capaz de:
- fornecer verificações triviais consistindo de apenas poucas linhas simples de código
- fornecer verificações complexas consistindo de scripts de longa execução e aquisição de dados isolada com envio periódico dos dados de volta
- ser uma substituição opcional para o Zabbix Agent (em que ele suporta todas as funcionalidades anteriores)
O Agent 2 é escrito em Go (com algum código em C reutilizado do Zabbix Agent). Um ambiente Go configurado com uma versão de Go atualmente suportada é necessário para compilar o Zabbix Agent 2.
O Agent 2 não possui suporte nativo a execução com deamon (daemonization) no Linux; ele pode ser executado como um serviço do Windows.
Verificações passivas funcionam de forma similar ao Zabbix Agent. As verificações ativas suportam intervalos agendados/flexíveis e concorrência de verificação em um Server ativo.
Concorrência de verificação
Verificações de diferentes plugins podem ser executadas de forma concorrente.
O número de verificações concorrentes dentro de um plugin é limitada pela
configuração de capacidade do plugin. Cada plugin pode ter uma configuração
de capacidade fixada em código (sendo 100 o padrão) que pode ser diminuída
usando a configuração Plugins.<Plugin name>.Capacity=N no parâmetro
de configuração Plugins.
Veja também: Orientações para desenvolvimento de plugin.
Passive and active checks
Passive checks work similarly to Zabbix agent. Active checks support scheduled/flexible intervals and check concurrency within one active server.
By default, after a restart, Zabbix agent 2 will schedule the first data collection for active checks at a conditionally random time within the item's update interval to prevent spikes in resource usage. To perform active checks that do not have Scheduling update interval immediately after the agent restart, set ForceActiveChecksOnStart parameter (global-level) or Plugins.<Plugin name>.System.ForceActiveChecksOnStart (affects only specific plugin checks) in the configuration file. Plugin-level parameter, if set, will override the global parameter. Forcing active checks on start is supported since Zabbix 6.0.2.
Check concurrency
Checks from different plugins can be executed concurrently. The number
of concurrent checks within one plugin is limited by the plugin capacity
setting. Each plugin may have a hardcoded capacity setting (100 being
default) that can be lowered using the Plugins.<PluginName>.System.Capacity=N setting in the Plugins
configuration parameter. Former name of this parameter Plugins.<PluginName>.Capacity is still supported, but has been deprecated in Zabbix 6.0.
Plataformas suportadas
O Agent 2 é suportado pelas plataformas Linux e Windows.
Se instalando a partir dos pacotes, o Agent 2 é suportado em:
- RHEL/CentOS 6, 7, 8
- SLES 15 SP1+
- Debian 9, 10
- Ubuntu 18.04, 20.04
No Windows o Agent 2 é suportado em:
- Windows Server 2008 R2 e mais recente
- Windows 7 e mais recente
Instalação
O Zabbix Agent 2 está disponível em pacotes pré-compilados. Para compilar
o Zabbix Agent 2 a partir dos fontes você tem que especificar a opção de
configuração --enable-agent2.
Opções
Os seguintes parâmetros de linha de comando podem ser usados com o Zabbix Agent 2:
| Parâmetro | Descrição |
|---|---|
| -c --config <arquivo-configuração> | Caminho para o arquivo de configuração. Você pode usar esta opção para informar um arquivo de configuração que não é o arquivo padrão. No UNIX, o padrão é /usr/local/etc/zabbix_agent2.conf ou como configurado pelas variáveis de tempo de compilação --sysconfdir ou --prefix |
| -f --foreground | Executa o agente ao fundo (foreground) (padrão: true (verdadeiro)). |
| -p --print | Apresenta itens conhecidos e sai. Nota: Para retornar os resultados de parâmetro do usuário também, você deve especificar o arquivo de configuração (caso ele não esteja na localização padrão). |
| -t --test <item key> | Testa o item especificado e sai. Nota: Para retornar os resultados de parâmetro do usuário também, você deve especificar o arquivo de configuração (caso ele não esteja na localização padrão). |
| -h --help | Apresenta informações de ajuda e sai. |
| -v --verbose | Apresenta informações de depuração (debugging). Use esta opção com as marcações -p e -t. |
| -V --version | Apresenta o número de versão do agente e sai. |
| -R --runtime-control <option> | Executa funções administrativas. Veja controle em tempo de execução. |
Exemplos específicos de utilização de parâmetros de linha de comando:
- apresenta todos os itens nativos com valores
- testa um parâmetro de usuário com a chave "mysql.ping" definida no arquivo de configuração especificado
<!-- -->
shell> zabbix_agent2 --print
shell> zabbix_agent2 -t "mysql.ping" -c /etc/zabbix/zabbix_agentd.conf
Controle em tempo de execução (runtime)
O controle em tempo de execução fornece algumas opções para controle remoto.
| Opção | Descrição |
|---|---|
| log_level_increase | Aumenta nível de log. |
| log_level_decrease | Diminui nível de log. |
| metrics | Lista de métricas disponíveis. |
| version | Exibe versão do agente. |
| userparameter_reload | Recarrega parâmetros de usuário do arquivo de configuração atual. Note que o UserParameter é única opção de configuração do agente que será recarregada. |
| help | Exibe informações de ajuda sobre controle em tempo de execução. |
Exemplos:
- aumentando o nível de log para o Agent 2
- apresenta opções de controle em tempo de execução
<!-- -->
shell> zabbix_agent2 -R log_level_increase
shell> zabbix_agent2 -R help
Arquivo de configuração
Os parâmetros de configuração do Agent 2 são predominantemente compatíveis com o Zabbix Agent com algumas exceções.
| Novos parâmetros | Descrição |
|---|---|
| ControlSocket | O caminho para o socket de controle em tempo de execução. O Agent 2 usa um socket de controle para comandos em tempo de execução. |
| EnablePersistentBuffer, PersistentBufferFile, PersistentBufferPeriod |
Estes parâmetros são usados para configurar o armazenamento persistente no Agent 2 para itens ativos. |
| Plugins | Plugins podem ter seus próprios parâmetros, no formato Plugins.<Nome do plugin>.<Parâmetro>=<valor>. Um parâmetro de plugin comum é Capacity (capacidade), configurando o limite de verificações que podem ser executadas ao mesmo tempo. |
| StatusPort | A porta na qual o Agent 2 aguardará comunicação (listening) para requisições de estado HTTP e exibição de uma lista de plugins configurados e alguns parâmetros internos |
| Parâmetros descontinuados | Descrição |
| AllowRoot, User | Não suportado porque operação como daemon (daemonization) não é suportada. |
| LoadModule, LoadModulePath | Módulos carregáveis não são suportados. |
| StartAgents | Este parâmetro era usado no Zabbix Agent para aumentar a concorrência de verificações passivas ou desabilitá-los. No Agent 2, a concorrência é configurada no nível do plugin e pode ser limitada por uma configuração de capacidade. Considerando que desabilitar verificações passivas não é atualmente suportado. |
| HostInterface, HostInterfaceItem | Não suportado ainda. |
Para mais detalhes veja as opções do arquivo de configuração para zabbix_agent2.
Códigos de saída
A partir da versão 4.4.8 o Zabbix Agent 2 também pode ser compilado com versões mais antigas do OpenSSL (1.0.1, 1.0.2).
Neste caso o Zabbix oferece mutexes para travamento no OpenSSL. Se um travamento ou destravamento mutex falhar então uma mensagem de erro é apresentada na saída de erro padrão (STDERR) e o Agent 2 sai com código de erro 2 ou 3, respectivamente.