sexta-feira, 13 de maio de 2016

Gerando uma Página Personalizada com Gráficos (Estáticos) do Zabbix sem uso de API

No post anterior eu demonstrei como gerar imagens dos seus mapas de maneira automatizada e respondi praticamente todas as dúvidas que eu mesmo propus a respeito do post do Mike Santangelo. O que faltou foi fazer uma página personalizada com os gráficos.

Muitas pessoas perguntam sobre isso, "não tem como eu gerar uma página para o cliente ver os gráficos dele? Eu queria algo personalizado com o logo do cliente e o gráfico", com certeza a API resolve esse problema, mas a maioria das pessoas que fazem esse questionamento não são desenvolvedoras, eu também não sou, mas resolvi aproveitar o post do Mike para ensinar como gerar as imagens (estáticas) dos gráficos em uma página, apenas como prova de conceito, eu já mencionei que não sou desenvolvedor? A ideia é apenas dar um help para quem não entende nada de programação, ok?

Vamos então resolver o problema de gerar as imagens automaticamente de forma cíclica.

Primeiro vamos criar o diretório onde serão armazenadas as imagens:
# mkdir -p /var/www/html/cliente/imagens/

Acesse seu servidor Zabbix, abra o gráfico que te interessa, clique com o botão da direita do mouse sobre a imagem e, escolha visualizar a imagem, vamos precisar das informações "chartX.php", onde "X" é um número que identifica o tipo de gráfico e "graphid=" que nos traz o ID do gráfico.

Agora vamos gerar as imagens:
# vi gera_graficos.sh

#!/bin/bash

######################################################################
# Variaveis de producao - Deve-se alterar de acordo com seu ambiente #
######################################################################

DIR_IMAGENS=/var/www/html/cliente/imagens #Diretorio que vai armazenar as imagens
NOME_IMAGEM=grafico #Nome das imagens a serem geradas
DIR_COOKIE=/root #Diretorio que vai armazenar o cookie
NOME_COOKIE=zabbix.cookie
ENDERECO='http://<IP-Servidor>/zabbix' #Url do Zabbix
USUARIO=admin # Usuario do Zabbix que tenha privilegio de visualizar todos os mapas
SENHA='zabbix'  # Senha do usuario acima
CHART=2 # ID do tipo de grafico
ID=523 # ID do grafico que sera gerada a imagem
PERIODO=3600 # Periodo (em segundos) que serao exibidos no grafico

######################################################################
# Logica do Script - Nao altere a menos que saiba o que esta fazendo #
######################################################################

# Gera o cookie
wget -q --save-cookies=$DIR_COOKIE\/$NOME_COOKIE -4 --keep-session-cookies 2> /dev/null -O - -S --post-data="name=

$USUARIO&password=$SENHA&enter=Sign in&autologin=1&request=" $ENDERECO\/index.php?login=1 > /dev/null

# Gera as imagens
wget -q -4 --load-cookies=$DIR_COOKIE\/$NOME_COOKIE -O $DIR_IMAGENS\/$NOME_IMAGEM.png "$ENDERECO/chart$CHART.php?graphid=$ID&period=$PERIODO"

# Remove o cookie
rm -rf $DIR_COOKIE/$NOME_COOKIE

# Ajusta as permissoes da imagem
chown apache:apache $DIR_IMAGENS\/$NOME_IMAGEM.png


Alterar as permissões do script:
# chmod 700 gera_graficos.sh

Pronto agora é só agendar no crontab de quanto em quanto tempo você quer gerar a imagem dos seus gráficos e automaticamente o cliente vai ter a página atualizada ;-)

Agora vamos gerar a nossa página com o gráfico

# vi /var/www/html/cliente/cliente.html

<html>
<head>
<body>
<center>
<p><b>Nome do Cliente</b></p>
<p>Gráfico do Cliente</p>
<img src=./imagens/grafico.png>
</center>
</body>
</html>

Exemplo de página gerada:

Referencias:

Tales of a Tech

5 comentários:

  1. Professor no meu server esta dando este erro quando abra a imagem no navegador:
    no permissions to referred object or it does not exist zabbix
    Distro eh Debian 8

    ResponderExcluir
  2. Fala Raphael em que passo você enfrenta esse problema???

    Abraços,

    ResponderExcluir
  3. Professor, Resolvido!!!
    Erro de sintaxe do codigo ... Um abraco!!!

    ResponderExcluir
  4. Bom dia, sabe informar qual o erro do script?!!

    ResponderExcluir