4 Parâmetros de usuário

Visão geral

Algumas vezes você pode precisar executar uma verificação que não faça parte do kit de testes nativos do Zabbix. Nestes casos os parâmetros de usuário poderão estender as funcionalidades da solução para novos testes desenvolvidos por você.

Você pode desenvolver um comando que extraia os dados que você precisa e incluí-lo como um 'User Parameter' no arquivo de configuração do agente.

Um parâmetro de usuário tem a sintaxe a seguir:

UserParameter=<key>,<command>

Como você deve ter percebido, um 'User Parameter' também contêm uma chave. Esta chave é o identificador único da nova funcionalidade e será necessária quando você for configurar o item. Você pode definir o nome que preferir. Uma vez que tenha terminado os ajustes no arquivo de configurações do Zabbix Agent, será necessário o reinicio do processo do agente para que as novas configurações estejam acessíveis.

Logo, quando configurar o item, informe o nome de chave definido no 'User Parameter' para que o Zabbix saiba o que coletar.

Os parâmetros de usuário são executados pelo Zabbix Agent. O limite de tamanho do dado retornado é de 512KB. /bin/sh será utilizado como interpretador de comando em ambientes UNIX. Os parâmetros de usuário respeitam o parâmetro de 'timeout' do agente; se o timeout for alcançado o processo iniciado pelo 'User Parameter' será terminado.

Consulte também um tutorial passo-a-passo sobre como usar os parâmetros de usuário.

Exemplos de parâmetros de usuário simples

Um simples comendo:

UserParameter=ping,echo 1

O agente sempre irá retornar o valor '1'para um item com a chave 'ping'.

Um comando mais complexo:

UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive

O agente irá retornar '1', se o MySQL server estiver em execução ou '0' caso não esteja.

Parâmetros de usuário flexíveis

Os parâmetros de usuário flexíveis aceitam parâmetros em suas chaves. Desta forma um mesmo 'User Parameter' poderá ser chamado por vários itens no mesmo host, bastando para isso que os seus parâmetros sejam diferentes.

Os parâmetros de usuário flexíveis tem a seguinte sintaxe:

UserParameter=key[*],command
Parâmetro Descrição
Key Chave única do item. O "[*]" define que este parâmetro de usuário aceitará parâmetros entre colchetes.
Os parâmetros serão informados ao configurar os itens.
Command Comando a ser executado quando a chave for necessária.
Utilize referências posicionais $1…$9 para utilizar os parâmetros da chave.
O Zabbix analisa os parâmetros entre "[ ]" da chave do item e os substitui no formato do shell ($1,...,$9).

Para utilizar as referências posicionais de forma inalterada, utilize o símbolo de dolar duplo - por exemplo, awk '{print $$2}'. Neste caso o $$2 irá se transformar em $2 quando o comando for executado.

Observe que as referências posicionais com o símbolo "$" serão interpretadas pelo Zabbix Agent, independentemente de estarem entre aspas duplo (") ou simples (').

Alguns símbolos não são permitidos nos parâmetros de usuário por padrão. Veja o manual de parâmetros inseguros para uma lista completa.

Exemplo 1

Algo muito simples:

UserParameter=ping[*],echo $1

Podemos definir um número ilimitado de itens para monitorar com o formato 'ping[something]'.

  • ping[0] - sempre retornará '0'
  • ping[aaa] - sempre retornara 'aaa'
Exemplo 2

Vamos fazer algo mais útil!

UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive

Este parâmetro pode ser utilizado para verificar a disponibilidade de um BD MySQL. Nós podemos informar ainda um usuário e senha:

mysql.ping[zabbix,our_password]
Exemplo 3

Quantas linhas correspondem a determinada expressão regular em um arquivo?

UserParameter=wc[*],grep -c "$2" $1

Este parâmetro pode ser utilizado para calcular a quantidade de linhas em um arquivo.

wc[/etc/passwd,root]
       wc[/etc/services,zabbix]

Resultado do comando

O valor de retorno do comando será o output padrão junto com as mensagens de erro.

Um item de texto (tipo de dado de caractere, log ou texto) ficará como 'não suportado' caso de retorno de erro no output padrão.

Parâmetros de usuário que retornam textos poderão retornar caracteres em branco. No caso de um resultado inválido o item passa a ser não suportado.