Configuração do lado do agente Zabbix
No arquivo de configuração do Nginx (nginx.conf), adicione o seguinte local:
location /ngx_status {
stub_status on;
access_log off;
allow 10.0.10.5; # IP do agente Zabbix
allow 10.0.30.1; # IP do servidor Zabbix
deny all;
}
Teste acessando a URL:
[node1.jfxx.wsd root@10.0.10.5 /usr/local/nginx/conf]# curl 10.0.10.5/ngx_status
Active connections: 5
server accepts handled requests
12143 12143 25709
Reading: 0 Writing: 5 Waiting: 0
Resultado bem-sucedido.
Script de coleta de métricas do Nginx
Crie o script nginx_status.sh no diretório do binário do Zabbix:
#!/bin/bash
HOST=$(ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}')
PORT="80"
case $1 in
ping)
/sbin/pidof nginx | wc -l
;;
active)
/usr/bin/curl -s "http://$HOST:$PORT/ngx_status/" | awk '/Active/ {print $NF}'
;;
reading)
/usr/bin/curl -s "http://$HOST:$PORT/ngx_status/" | awk '/Reading/ {print $2}'
;;
writing)
/usr/bin/curl -s "http://$HOST:$PORT/ngx_status/" | awk '/Writing/ {print $4}'
;;
waiting)
/usr/bin/curl -s "http://$HOST:$PORT/ngx_status/" | awk '/Waiting/ {print $6}'
;;
accepts)
/usr/bin/curl -s "http://$HOST:$PORT/ngx_status/" | awk 'NR==3 {print $1}'
;;
handled)
/usr/bin/curl -s "http://$HOST:$PORT/ngx_status/" | awk 'NR==3 {print $2}'
;;
requests)
/usr/bin/curl -s "http://$HOST:$PORT/ngx_status/" | awk 'NR==3 {print $3}'
;;
*)
echo "Parâmetro inválido"
exit 1
;;
esac
Configuração do agente Zabbix
Edite o arquivo zabbix_agentd.conf e ajuste as seguintes linhas:
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=10.0.30.1
ListenIP=10.0.10.5
ServerActive=10.0.30.1
Hostname=10.0.10.5
UnsafeUserParameters=1
EnableRemoteCommands=1 # permite execução remota de comandos, necessário para reinicialização automática
UserParameter=nginx.status[*],/usr/local/zabbix-2.4.7/bin/nginx_status.sh $1
Importação do template no Zabbix Web
Baixe o template pelo link: http://pan.baidu.com/s/1b0Hm02 (senha: 631h) e importe via interface web do Zabbix.
Verificação de problemas comuns
- Verificar acesso ao
ngx_status: ```curl http://10.0.10.1/ngx_status
Active connections: 124 server accepts handled requests 10683663 10683663 10689745 Reading: 0 Writing: 1 Waiting: 123 - Testar o script de monitoramento: ```
./nginx_status.sh accepts
10684050 - Testar via
zabbix_getno servidor: ```zabbix_get -s 10.0.10.1 -p 10050 -k "nginx.accepts"
10684902
Reinicialização automática do Nginx em caso de falha
No Zabbix, crie uma ação com condição de gatilho (exemplo: nginx.ping retorna 0).
Configure a operação para executar um comando remoto no agente:
sudo /etc/init.d/nginx restart
No servidor monitorado, edite o /etc/sudoers com visudo e adicione:
zabbix ALL=NOPASSWD: ALL
zabbix ALL=NOPASSWD: /etc/init.d/nginx restart
#Defaults requiretty # comente esta linha para permitir execução remota
Com essas configurações, quando o serviço Nginx parar, o Zabbix executará automaticamente o comando de reinicialização.