Estou tentando configurar uma tela para monitoramento de processos com o Zabbix, dividido por níveis de criticidade de processo, facilitando a visualização das Triggers. Consegui criar uma tela para cada nível monitorado, porém todas as Triggers são apresentadas nestas duas telas. Por exemplo, monitoro o Uptime das máquinas, que tem nível de criticidade 2, e não tem necessidade de resolver com urgência. Monitoro, também, a quantidade de https ativos em determinados servidores, com nível de criticidade 1, que quando são alertados, deve-se analisar o problema com certa urgência. Porém, quando coloco na tela de nível 1, ambas Triggers são alertadas, e na tela 2 ocorre o mesmo. Precisaria separar, deixando o que é nível 1 na tela de nível 1, e o que é de nível 2 na tela de nível 2. Isso conseguimos fazer com o Nagios, mas com o Zabbix está muito complicado de fazer, pois ele apresenta as triggers por host, e não por grupo.
Alguém tem alguma ideia do que pode ser feito para resolver isso? Separar as triggers por nível de criticidade?
Criei uma solução em php para mostrar o monitoramento. Fechando o tópico.
3. Dúvida
leonardog50usa CentOS
Post recolhido
Enviado em 12/03/2015 - 17:25h
Boa tarde!
Quero fazer o mesmo processo no Zabbix, também tenho servidores que quero separar em níveis de atendimento e urgência.
Poderia me passar por gentileza o arquivo em php e o modo como fez?
Agradecido.
4. Re: Criação de Telas Zabbix. [RESOLVIDO]
leojaco25usa Linux Mint
Post recolhido
Enviado em 08/04/2015 - 14:49h
Opa, desculpa não ter visto antes. Posso passar um protótipo sim, mas vc terá que alterar de acordo com a tua realidade.
Como eu faço para carregar um arquivo no acompanhamento?
Leandro.
5. Re: Criação de Telas Zabbix. [RESOLVIDO]
leojaco25usa Linux Mint
Post recolhido
Enviado em 08/04/2015 - 15:18h
Segue os códigos-fonte do php:
index.php
<?php
session_start();
/* Iniciando a Sessão */
ob_start();
//Arquivo que conecta com o MySQL
include "conecta.php";
$tamanho = "100%";
$tempo = 5000;
$cont = 0;
$cont2 = 0;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="30" />
<link rel="stylesheet" type="text/css" href="estilo.css" />
<title> Monitoramento Zabbix </title>
</head>
<body bgcolor="#E9E9E9" >
<!-- Esta parte retire da sua apresentação
<div class="nivel_e content">
<div class="nivel_e"><?php $servidor = ""; include '';?></div>
<div class="nivel_e"><?php $servidor = ""; include '';?></div>
<div class="nivel_e"><?php $servidor = ""; include '';?></div>
<div class="nivel_e"><?php $servidor = ""; include '';?></div>
</div>-->
<div class="nivel content">
<div class="nivel_">
<h1 class="nivel"><b> Monitoramento Zabbix - </b></h1>
</div>
</div>
<div class="nivel content">
<div class="nivel_">
<h2 class="nivel"><b> Nivel 1 </b></h2>
</div>
</div>
<div class="nivel content">
<?php
include 'cabecalho.php';
include 'nivel1.php';?>
<h4> </h4>
</div>
<?php
$cont=0;
$ultimo_valor = " ";
$disparo = " ";
include "legenda.php";
$sql_tr = "SELECT DISTINCT t.*,i.itemid,hg.groupid,hg.hostid,h.name FROM triggers t,functions f,items i,hosts h,hosts_groups hg WHERE hg.hostid=i.hostid AND hg.hostid=h.hostid AND f.triggerid=t.triggerid AND f.itemid=i.itemid AND (hg.groupid IN ('29')) AND NOT EXISTS ( SELECT ff.functionid FROM functions ff WHERE ff.triggerid=t.triggerid AND EXISTS (SELECT ii.itemid FROM items ii,hosts hh WHERE ff.itemid=ii.itemid AND hh.hostid=ii.hostid AND (ii.status<>0 OR hh.status<>0))) AND t.status=0 AND ((t.value IN ('1')) AND (t.flags IN ('0','4'))) ORDER BY t.priority desc,h.name desc,lastchange DESC,t.lastchange DESC";
$sql_tr = mysql_query($sql_tr);
while($array_tr = mysql_fetch_array($sql_tr)){
include "severidade.php";
if($array_tr['comments'] == "Nivel 1"){
$host = $array_tr['hostid'];
$problema = $array_tr['description'];
$tr = trim(strstr(str_replace('TRIGGER: ', '', strstr($problema, 'TRIGGER: ')),' ', true));
include "query.php";
$cont = $cont+1;
//echo $nome_servidor." - ".$ultimo_valor." - ".$disparo."<br>";
echo
"<ul class='nivel_' style='background-color: ".$color."'>
<li class='nivel' style='color: #".$fontcolor."; width: 20%;'>".$nome_servidor."</li>
<li class='nivel' style='color: #".$fontcolor."; width: 15%;'>".$disparo."</li>
<li class='nivel' style='color: #".$fontcolor."; width: 15%'>".$ultimo_valor."</li>
<li class='nivel' style='color: #".$fontcolor."; width: 48%'>".$descricao."</li>
</ul>";
}
}
?>
nivel2.php
<?php
$cont2=0;
include "legenda.php";
$ultimo_valor = " ";
$disparo = " ";
$sql_tr = "SELECT DISTINCT t.*,i.itemid,hg.groupid,hg.hostid,h.name FROM triggers t,functions f,items i,hosts h,hosts_groups hg WHERE hg.hostid=i.hostid AND hg.hostid=h.hostid AND f.triggerid=t.triggerid AND f.itemid=i.itemid AND (hg.groupid IN ('29')) AND NOT EXISTS ( SELECT ff.functionid FROM functions ff WHERE ff.triggerid=t.triggerid AND EXISTS (SELECT ii.itemid FROM items ii,hosts hh WHERE ff.itemid=ii.itemid AND hh.hostid=ii.hostid AND (ii.status<>0 OR hh.status<>0))) AND t.status=0 AND ((t.value IN ('1')) AND (t.flags IN ('0','4'))) ORDER BY t.priority desc,h.name desc,lastchange DESC,t.lastchange DESC";
$sql_tr = mysql_query($sql_tr);
while($array_tr = mysql_fetch_array($sql_tr)){
include "severidade.php";
if($array_tr['comments'] == "Nivel 2"){
$host = $array_tr['hostid'];
$item = $array_tr['itemid'];
$problema = $array_tr['description'];
$tr = trim(strstr(str_replace('TRIGGER: ', '', strstr($problema, 'TRIGGER: ')),' ', true));//echo "TR: ".$tr."<br>";
include "query.php";
$cont2 = $cont2+1;
echo
"<ul class='nivel_' style='background-color: ".$color."'>
<li class='nivel' style='color: #".$fontcolor."; width: 20%;'>".$nome_servidor."</li>
<li class='nivel' style='color: #".$fontcolor."; width: 15%;'>".$disparo."</li>
<li class='nivel' style='color: #".$fontcolor."; width: 15%'>".$ultimo_valor."</li>
<li class='nivel' style='color: #".$fontcolor."; width: 48%'>".$descricao."</li>
</ul>";
}
}
?>
query.php
<?php
if($tr == "WARNING" or $tr == "CRITICAL" or $tr == "FILA"){
$history = "history_uint";
}else{
$history = "history";
}
$sql = "
SELECT DISTINCT
i.itemid,
f.*,
i.key_,
i.lastvalue,
i.prevvalue,
(i.lastvalue/86400) as tempo,
i.hostid,
i.value_type,
i.lastclock,
from_unixtime(i.lastclock) ultimo_valor,
i.units,
i.status,
h.hostid,
h.name,
h.status as host_status,
from_unixtime(his.clock) AS disparo,
his.itemid,
his.clock
FROM
`hosts` h, items i, functions f, history as his
WHERE
i.hostid='".$array_tr['hostid']."' AND
i.itemid='".$array_tr['itemid']."' AND
h.hostid=i.hostid AND
i.itemid=f.itemid
ORDER BY
i.lastclock desc LIMIT 1";
Acho que é isso. Veja se ajuda. Já adianto que não sou programador, por isso está uma zona estes códigos fontes.
Att.:
6. Dúvidas Criação de Telas Zabbix
psobral1usa Debian
Post recolhido
Enviado em 20/05/2015 - 16:37h
Boa tarde,
Gostei muito da sua solução em php, vi os códigos. Gostaria de saber se você ainda tem os códigos dos arquivos severidade.php e conecta.php? pois não encontrei.
Obrigada
7. Re: Criação de Telas Zabbix. [RESOLVIDO]
leojaco25usa Linux Mint
Post recolhido
Enviado em 21/05/2015 - 08:16h
Opa,
Valeu pelo elogio. Lembrando que não sou programador, e tudo o que fiz foi apenas transcrever para a página o que eu escrevi numa folha. Apenas isso. Mas segue o código da severidade.php. O código do conecta.php é um padrão, que peguei da internet, e apenas fiz os ajustes para conectar no DB. Segue o código, porém você deve ter um mais completo e melhor (troquei os dados da minha base por outros, mas o conceito é o mesmo).
<?php
$dbname="zabbix";
$usuario="zabbix";
$password="zabbix";
$IP="XXX.XXX.XXX.XXX";
//1o passo - Conecta ao servidor MySQL
if(!($id = mysql_connect($IP,$usuario,$password))) {
echo "<p align=\"center\"><big><strong>Nao foi possivel conectar com o gerenciador MySQL. Favor Contactar o Administrador.</strong></big></p>";
}
//2o passo - Seleciona o Banco de Dados
if((!$con = mysql_select_db($dbname,$id))) {
echo "<p align=\"center\"><big><strong>Nao foi possivel conectar com a base ".$dbname.". Favor Contactar o Administrador.</strong></big></p>";
}
?>
Como pode ver, super simples. Peguei de uma apostila que baixei da internet, e apenas moldei numa forma, para usar em todas as páginas (que são beeeeeemmmmm poucas) que eu faço. Se alguém tiver algo melhor, sintam-se à vontade. A propósito, o Zabbix, apesar de ser bem completo, não se adaptou à nossa realidade, e vamos continuar com o nágios, weathermap e cacti.