1 Estendendo os agents do Zabbix

Esta seção fornece instruções passo a passo para estender a funcionalidade de um agent do Zabbix usando um parâmetro de usuário.

O exemplo abaixo obtém o número de instruções executadas por um server MySQL. As etapas se aplicam tanto ao Zabbix agent quanto ao Zabbix agent 2.

Este exemplo ilustra como os parâmetros de usuário funcionam. Para o monitoramento do MySQL em produção, considere usar os templates predefinidos do MySQL, que não exigem parâmetros de usuário.

Etapa 1: Preparar o acesso ao MySQL

O agent é executado como o usuário do sistema operacional zabbix. Não use a conta root do MySQL, pois ela pode usar autenticação baseada em socket, o que pode impedir que o agent se conecte. Em vez disso, crie um usuário dedicado do MySQL:

CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '<password>';

Armazene as credenciais em um arquivo legível somente pelo usuário zabbix, por exemplo, /etc/zabbix/mysql_monitor.cnf (o caminho depende do sistema operacional e do método de instalação do Zabbix):

[client]
user=zbx_monitor
password=<strong password>

Defina o proprietário e as permissões do arquivo:

sudo chown zabbix:zabbix /etc/zabbix/mysql_monitor.cnf
sudo chmod 600 /etc/zabbix/mysql_monitor.cnf

Passe esse arquivo explicitamente com --defaults-extra-file (que deve ser a primeira opção passada ao cliente MySQL), em vez de depender de ~/.my.cnf, pois a variável de ambiente HOME do daemon pode não estar definida ou pode ser diferente do esperado. Se o MySQL usar um caminho de socket não padrão, adicione uma linha socket= ao mesmo arquivo.

Etapa 2: Escreva um comando

Escreva um script ou comando personalizado para recuperar o parâmetro necessário e certifique-se de que ele funcione nas mesmas condições que o daemon do agent.

O comando a seguir retorna o número de instruções executadas pelo server MySQL:

/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

Você pode testar o comando como o usuário zabbix; ele deve imprimir um único número:

sudo -u zabbix sh -c "/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e \"SHOW GLOBAL STATUS LIKE 'Questions'\" | /usr/bin/awk '{print \$2}'"

Etapa 3: Adicione o comando à configuração do Zabbix agent

Em vez de editar o arquivo de configuração principal do agent (zabbix_agentd.conf ou zabbix_agent2.conf), crie um arquivo separado no diretório incluído pelo parâmetro Include. Arquivos separados são mais fáceis de gerenciar e têm menor probabilidade de serem afetados por atualizações de pacotes.

Por exemplo, crie /etc/zabbix/zabbix_agentd.d/mysql.conf (/etc/zabbix/zabbix_agent2.d/mysql.conf para o Zabbix agent 2) com o seguinte conteúdo:

UserParameter=mysql.questions,/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

mysql.questions é a chave exclusiva do item. Ela deve ser exclusiva na configuração do agent.

Você pode testar o parâmetro executando o Zabbix agent com a opção -t. Execute o teste como o usuário zabbix e especifique o arquivo de configuração se ele não estiver no local padrão:

Para o Zabbix agent:

sudo -u zabbix zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t mysql.questions

Para o Zabbix agent 2:

sudo -u zabbix zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t mysql.questions

A saída esperada contém um número, por exemplo:

mysql.questions                               [t|4567]

Etapa 4: Recarregar e testar o user parameter

Recarregue os user parameters do arquivo de configuração executando o seguinte comando:

Para o Zabbix agent:

sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R userparameter_reload

Para o Zabbix agent 2:

sudo zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -R userparameter_reload

Execute o comando como root ou como o usuário do sistema operacional que executa o agent.

Como alternativa, reinicie o agent para aplicar as alterações de configuração.

Você pode testar o parâmetro no agent em execução usando o utilitário zabbix_get, por exemplo, a partir do Zabbix server:

zabbix_get -s <IP address> -k mysql.questions

Aqui, <IP address> é o endereço IP do host que executa o agent ao qual o zabbix_get se conecta. O endereço IP do host que executa o zabbix_get deve estar listado no parâmetro Server do agent.

Para que este teste funcione, o agent deve aceitar verificações passivas (para o Zabbix agent, StartAgents não deve estar definido como 0). Se o agent estiver configurado apenas para verificações ativas, ignore este teste e verifique o item em Monitoring > Latest data após concluir a etapa final.

Etapa 5: Criar um item

Crie um novo item no host monitorado com a chave de item mysql.questions.

Selecione o tipo de item: Zabbix Agent ou Zabbix Agent (active).

Para o Zabbix agent (passivo), o endereço do Zabbix server ou proxy deve estar listado no parâmetro Server do agent. Para o Zabbix agent (ativo), o parâmetro ServerActive deve especificar o Zabbix server ou proxy, e o parâmetro Hostname do agent deve corresponder exatamente ao nome do host configurado no frontend.

Selecione o Tipo de informação do item. O agent sempre retorna o valor como texto; o Tipo de informação define como o Zabbix interpreta e armazena o valor após quaisquer etapas de pré-processamento.

Para o contador cumulativo bruto, selecione Numérico (sem sinal). Para medir o número de instruções por segundo, selecione Numérico (ponto flutuante) e adicione a etapa de pré-processamento Alteração por segundo.