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:

Unknown disse...

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

André Déo disse...

Fala Raphael em que passo você enfrenta esse problema???

Abraços,

Unknown disse...

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

André Déo disse...

Maravilha ;-)

Ricardo disse...

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