Estou com este post pronto deste 18/07/2012, porém esqueci de agendar a data da postagem e só agora, revisando meus posts, vi que este ainda não estava ativo. Mas agora ele está aí.
Outro dia estava procurando detalhes de como monitorar o servidor Apache pelo Zabbix e encontrei um texto na Wiki do Zabbix. No tópico da Wiki tem três métodos explicando como fazer o monitoramento do servidor Apache, dois com Python e um em bash script.
Na Wiki tem disponível o código do script e uma template para coletar os itens.
Eu modifiquei o script para tornar a consulta mais rápida usando fgrep e awk ao invés de dar um echo no arquivo temporário e logo em seguida usar grep e awk, como no script disponível na Wiki.
Crie o seguinte script com o nome apache.sh e salve onde achar necessário (eu coloco os meus scripts em /opt/zabbix/externalscripts/):
O que acabamos de fazer foi incluir um monitoramento inexistente no Zabbix. Porém, a flexibilidade oferecida pelo Zabbix nos permite entregar apenas o resultado de um monitoramento, o restante ele faz (coleta, alarmes etc).
Explicando a configuração do UserParameter que acabamos de incluir no arquivo de configuração
O Zabbix irá executar o script apache.sh com o parâmetro que está cadastrado no item.
Por exemplo: Imagine que o item seja 'BytesPerReq'. Assim que o Zabbix for coletar o item, o script será executado com o parâmetro 'BytesPerReq' que executará a consulta na página de status do Apache e retornará apenas o valor do item que desejamos coletar.
Eu modifiquei a template disponível na Wiki do Zabbix, pois ela não tinha gráfico configurado. Para baixá-la, clique aqui.
Após baixar a template, basta exportar o e associar ao host que será monitorado.
Configurar apache para permitir a consulta dos dados
Não basta apenas configurar o Zabbix para que o monitoramento do servidor Apache funcione, é preciso liberarmos no arquivo de configuração (no meu caso /etc/httpd/conf/httpd.conf) do Apache o seguinte parâmetro:
Em seguida, cole o trecho abaixo no final do mesmo arquivo:
Bem simples de fazer o monitoramento do servidor Apache. Veja abaixo a tela de um gráfico com os itens disponíveis deste monitoramento.
Agora é só você adicionar as triggers de acordo com a sua necessidade e ficar tranquilo.
Até mais.
Outro dia estava procurando detalhes de como monitorar o servidor Apache pelo Zabbix e encontrei um texto na Wiki do Zabbix. No tópico da Wiki tem três métodos explicando como fazer o monitoramento do servidor Apache, dois com Python e um em bash script.
Na Wiki tem disponível o código do script e uma template para coletar os itens.
Eu modifiquei o script para tornar a consulta mais rápida usando fgrep e awk ao invés de dar um echo no arquivo temporário e logo em seguida usar grep e awk, como no script disponível na Wiki.
Crie o seguinte script com o nome apache.sh e salve onde achar necessário (eu coloco os meus scripts em /opt/zabbix/externalscripts/):
#!/bin/bashApós copiar o script para a pasta desejada (eu coloco meus scripts utilizados pelo Zabbix em /opt/zabbix/externalscripts/), precisamos editar o arquivo de configuração zabbix_agentd.conf (no meu caso em /etc/zabbix/zabbix_agentd.conf) e adicionar no final do arquivo:
host="localhost"
resposta=0
tmp="/opt/zabbix/tmp/apache_status"
pega_status=`wget --quiet -O $tmp http://$host/server-status?auto`
case $1 in
TotalAccesses)
$pega_status
fgrep "Total Accesses:" $tmp | awk '{print $3}'
resposta=$?;;
TotalKBytes)
$pega_status
fgrep "Total kBytes:" $tmp | awk '{print $3}'
resposta=$?;;
Uptime)
$pega_status
fgrep "Uptime:" $tmp | awk '{print $2}'
resposta=$?;;
ReqPerSec)
$pega_status
fgrep "ReqPerSec:" $tmp | awk '{print $2}'
resposta=$?;;
BytesPerSec)
$pega_status
fgrep "BytesPerSec:" $tmp | awk '{print $2}'
resposta=$?;;
BytesPerReq)
$pega_status
fgrep "BytesPerReq:" $tmp | awk '{print $2}'
resposta=$?;;
BusyWorkers)
$pega_status
fgrep "BusyWorkers:" $tmp | awk '{print $2}'
resposta=$?;;
IdleWorkers)
$pega_status
fgrep "IdleWorkers:" $tmp | awk '{print $2}'
resposta=$?;;
WaitingForConnection)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "_" } ; { print NF-1 }'
resposta=$?;;
StartingUp)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "S" } ; { print NF-1 }'
resposta=$?;;
ReadingRequest)
$pega_status
fgrep "Scoreboard:" $tmp| awk '{print $2}'| awk 'BEGIN { FS = "R" } ; { print NF-1 }'
resposta=$?;;
SendingReply)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "W" } ; { print NF-1 }'
resposta=$?;;
KeepAlive)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "K" } ; { print NF-1 }'
resposta=$?;;
DNSLookup)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "D" } ; { print NF-1 }'
resposta=$?;;
ClosingConnection)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "C" } ; { print NF-1 }'
resposta=$?;;
Logging)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "L" } ; { print NF-1 }'
resposta=$?;;
GracefullyFinishing)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "G" } ; { print NF-1 }'
resposta=$?;;
IdleCleanupOfWorker)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "I" } ; { print NF-1 }'
resposta=$?;;
OpenSlotWithNoCurrentProcess)
$pega_status
fgrep "Scoreboard:" $tmp | awk '{print $2}'| awk 'BEGIN { FS = "." } ; { print NF-1 }'
resposta=$?;;
*)
echo "ZBX_NOTSUPPORTED"
esac
if [ "$resposta" -ne 0 ]; then
echo "ZBX_NOTSUPPORTED"
fi
exit $resposta
# Monitoramento ApacheSalve o arquivo e reinicie o servidor do agente do Zabbix.
UserParameter=apache[*],/opt/zabbix/externalscripts/apache.sh '$1'
O que acabamos de fazer foi incluir um monitoramento inexistente no Zabbix. Porém, a flexibilidade oferecida pelo Zabbix nos permite entregar apenas o resultado de um monitoramento, o restante ele faz (coleta, alarmes etc).
Explicando a configuração do UserParameter que acabamos de incluir no arquivo de configuração
O Zabbix irá executar o script apache.sh com o parâmetro que está cadastrado no item.
Por exemplo: Imagine que o item seja 'BytesPerReq'. Assim que o Zabbix for coletar o item, o script será executado com o parâmetro 'BytesPerReq' que executará a consulta na página de status do Apache e retornará apenas o valor do item que desejamos coletar.
Eu modifiquei a template disponível na Wiki do Zabbix, pois ela não tinha gráfico configurado. Para baixá-la, clique aqui.
Após baixar a template, basta exportar o e associar ao host que será monitorado.
Configurar apache para permitir a consulta dos dados
Não basta apenas configurar o Zabbix para que o monitoramento do servidor Apache funcione, é preciso liberarmos no arquivo de configuração (no meu caso /etc/httpd/conf/httpd.conf) do Apache o seguinte parâmetro:
ExtendedStatus OnProcure a string ExtendedStatus no arquivo e verifique se esta opção está comentada. Se sim, apenas descomente. Caso esteja com a opção Off, altere para On.
Em seguida, cole o trecho abaixo no final do mesmo arquivo:
<Location /server-status>Reinicie o serviço do Apache para que as configurações tenham efeito.
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
Bem simples de fazer o monitoramento do servidor Apache. Veja abaixo a tela de um gráfico com os itens disponíveis deste monitoramento.
Agora é só você adicionar as triggers de acordo com a sua necessidade e ficar tranquilo.
Até mais.
Amigo boa noite, será que existe uma forma de checar o status do apache utilizando-se o próprio index do site ao invés de fazer desta forma, pois temos diversos servidores na rede, alguns até mesmo de terceiros e gostaria de monitora-los sem ter que entrar em contato com os responsáveis para fazer essa modificação no servidor.
ResponderExcluirInfelizmente não tem como, pois é necessário você liberar o acesso pelo servidor que provê o serviço.
ExcluirMuito bom, parabéns pela iniciativa!
ResponderExcluirJanssen se puder me ajudar, fiz as conf como esta no seu blog, mas no executar o comando a baixo não da resultado correto.
ResponderExcluir# zabbix_agentd -t apache[TotalAccesses]
apache [m|ZBX_NOTSUPPORTED]
Obrigado
Mário,
ExcluirExecute o script no shell do linux conforme o exemplo:
sh -x /opt/zabbix/externalscripts/apache.sh TotalAccesses
Copie o resultado aqui para mim.
sh -x /opt/zabbix/scripts/apache.sh TotalAccesses
Excluir+ host=localhost
+ resposta=0
+ tmp=/opt/zabbix/tmp/apache_status
++ wget --quiet -O /opt/zabbix/tmp/apache_status 'http://localhost/server-status?auto'
+ pega_status=
+ case $1 in
+ fgrep 'Total Accesses:' /opt/zabbix/tmp/apache_status
+ awk '{print $3}'
+ resposta=0
+ '[' 0 -ne 0 ']'
+ exit 0
Você está monitorando o Apache no mesmo servidor que está o Zabbix?
ExcluirSe a resposta for não, você tem que colocar em Allow from no arquivo de configuração do Apache o IP do servidor Zabbix.
Você também pode testar a abertura da página no navegador -> http://localhost/server-status
Vê se está retornando os valores no navegador.
Janssen, tudo bom?
ResponderExcluirCara fiz a configuração, conforme informado em seu post, porém quando adiciono o template ao host os item ficam inativos, informando que o Zabbix Agent não suporta.
Consegue me ajudar ?
Ola Boa tarde
ResponderExcluirEm qual versão do zabbix_server e zabbix_agent foi realizada essa configuração?
Aqui para mim até aparece o gráfico porem não registra nenhum dado!
Ps: Seu Livre é muito bom Janssen, Parabéns!
Alan,
ExcluirFunciona nas versões 2.0.x, 2.2.x e 2.4.x.
O gráfico plota alguma informação? Por que aparecer é relativo, pois pode exibir os gráficos sem informações. Verifique o log do Zabbix para verificarr a presença de algum erro e me reporte para te ajudar.
Comigo os items aparecem com "não suportados". Qual seria o problema?
ExcluirAqui a mesma coisa. Os ítens ficam como "não suportado" no zabbix. A coleta ocorre normal, o script funciona mas o zabbix não pega as infos.
ExcluirRodrigo,
ExcluirCriamos o fórum http://zabbixoverflow.com para concentrarmos diversas dúvidas para resolução de problemas. Teria como você acessar o fórum e postar esse problema por lá? Informe qual a versão do Zabbix e sistema operacional que você está usando. Vou reproduzir esse monitoramento para ver se encontro algo de diferente nas versões atuais do Zabbix, já que você mencionou que o script está funcionando.
Tem que atualizar a versão do agente do zabbix, por isso diz não suportado
ResponderExcluirAqui deu o mesmo erro.
ResponderExcluirAlguem tem a solução? nao achei o topico referente a esse assunto no forum
Atualização do script e também do arquivo da template -> https://github.com/janssenlima/ZabbixOverFlow
ResponderExcluirJanssen segui todos os passos acima e não consigo monitorar. Os itens ficam não suportados. Estou no zabbix 3.0.4, você já testou nessa versão? Abraço.
ResponderExcluirTá dificil o meu tabém dá o mesmo erro
ResponderExcluir