Monitoramento do web server Apache com UserParameter no Zabbix.

Olá, pessoal, hoje o artigo é fala um pouco sobre monitoramento de infraestrutura. Para tanto irei utilizar uma poderosa ferramenta, o Zabbix.

Eu utilizo Zabbix no meu a dia a dia e conheço um pouco sobre os recursos que essa ferramenta oferece, que vão desde, métodos de autenticação (LDAP, Active Directory) auto discovery, auto low level até comandos remotos, user parameter, external scripts, mapas e gráficos. Enfim, Zabbix é um mundo de funcionalidades e recursos que ajudam você a monitorar de perto a saúde da sua infraestrutura de TI.

Eu fiz uma instalação básica aqui do Zabbix, utilizando a versão 4.2, com o database MySQL (All-In-One), mas se você ainda não ter pronta a instalação e os serviços rodando, comece por aqui (https://www.zabbix.com/whats_new)

Bom, vamos ao que interessa, o UserParameter é utilizado quando você precisa de uma informação que o Zabbix Server, SNMP e o Zabbix Agent não fornece de forma nativa. Neste caso temos que usar os parâmetros do usuário.

É importante saber que temos que seguir a sintaxe abaixo:

UserParameter=<key>,<command>

No arquivo de configuração do Zabbix Agent você deve visualizar essa linha, no bloco [### Option: UserParameter]. Toda vez que você alterar o arquivo do Zabbix Agent, você deve reiniciar o serviço para que as alterações sejam adicionadas com êxito.

Agora explicando sobre a sintaxe, o UserParameter contém uma chave, nessa chave você adiciona um valor, que será a chave para a criação do item no front end do Zabbix.

Eu fiz a instalação do web server Apache em dos meus agentes aqui, e vou monitorar o uptime do Apache com UserParameter. Para tanto, temos que testar a nossa chave com o Zabbix Server, mas antes vou mostrar o comando utilizado para coletar o uptime.

Vale lembrar que para coletar o uptime do Apache eu preciso executar o comando abaixo:

# apachectl status
* httpd.service — The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2019–05–04 13:53:24 -03; 1h 14min ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 3824 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 3827 (httpd)
Status: “Total requests: 11; Current requests/sec: 0; Current traffic: 0 B/sec”
CGroup: /system.slice/httpd.service
|-3827 /usr/sbin/httpd -DFOREGROUND
|-3828 /usr/sbin/httpd -DFOREGROUND
|-3829 /usr/sbin/httpd -DFOREGROUND
|-3830 /usr/sbin/httpd -DFOREGROUND
|-3831 /usr/sbin/httpd -DFOREGROUND
|-3832 /usr/sbin/httpd -DFOREGROUND
|-4498 /usr/sbin/httpd -DFOREGROUND
|-4518 /usr/sbin/httpd -DFOREGROUND
|-4519 /usr/sbin/httpd -DFOREGROUND
`-4520 /usr/sbin/httpd -DFOREGROUND

May 04 13:53:24 localhost.localdomain systemd[1]: Stopped The Apache HTTP Server.
May 04 13:53:24 localhost.localdomain systemd[1]: Starting The Apache HTTP Server…
May 04 13:53:24 localhost.localdomain systemd[1]: Started The Apache HTTP Server.

Como você pode ver, esse comando retorna um monte de informações e eu só quero o tempo que ele está rodando, neste caso, eu terei que criar uma regex (expressão regular) para tratar isso, veja abaixo:

apachectl status | sed -n ‘/ago$/p’ | sed ‘s/.\{62\}//’

1h 35min ago

O comando sed é poderoso para criação de regex, eu consegui remover todas aquelas linhas e pegar somente o uptime. No front end do Zabbix vai sair o uptime dessa forma:

1h 35min ago

Feito a regex para o uptime, precisamos adicionar isso no UserParameter do Zabbix Agent e reiniciar o serviço:

UserParameter=apacheuptime,apachectl status | sed -n ‘/ago$/p’ | sed ‘s/.\{62\}//’

Vou chamar a chave de “apacheuptime”.

Reiniciando o serviço do Zabbix Agent:

systemctl restart zabbix-agent

Agora vou testar isso usando o zabbix_get no Zabbix Server:

# zabbix_get -s 192.168.2.103 -k apacheuptime
1h 40min ago

Utilizei os parâmetros do zabbix_get, que são, -s (nome ou IP) e o -k (chave).

Pronto! O nosso UserParameter está funcionando legal, podemos definir isso no front end do Zabbix criando nosso item:

Para isso, siga os passos abaixo:

  • Vá em Configuração, Hosts (procure pelo seu host) e depois clique em Itens e clique em Criar Item:
  • Agora vamos adicionar as informações:

Nome: Apache Uptime

Type: Zabbix Agent

Key: apacheuptime

Host Interface: IP do seu host

Update Interval: 10s

Description: Adicionando Item para coleta do uptime do web server Apache.

E por fim, clique em adicionar.

Pronto! O nosso item está criado no front end, vamos verificar a coleta do valor indo em Monitoramento, Dados Recentes.

Para isso, em hosts adicione o host desejado e você pode verificar a coleta do uptime do Zabbix:

O monitoramento do uptime do web server Apache está feito com Zabbix, utilizando o recurso de UserParameter.

“Simples como voar”.

Isso é tudo pessoal, qualquer dúvida estou à disposição.

Linkedin: www.linkedin.com/in/amaurybsouza/

Passion for DevOps