pandorafms/pandora_console/reporting/fgraph2.php

100 lines
3.1 KiB
PHP

<?php
// Pandora FMS - the Flexible Monitoring System
// ============================================
// Copyright (c) 2008 Artica Soluciones Tecnologicas, http://www.artica.es
// Please see http://pandora.sourceforge.net for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License (LGPL)
// as published by the Free Software Foundation for version 2.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require_once ('../include/config.php');
require_once ($config["homedir"].'/include/functions.php');
require_once ($config["homedir"].'/include/functions_db.php');
require 'ezc/Base/ezc_bootstrap.php';
class customPalette extends ezcGraphPalette
{
protected $dataSetColor = array(
'#8866ff',
'#a613ca',
'#b923da',
'#dd33cf',
'#66aaff',
'#54a6aa',
'#d3474a',
'#ff9900',
'#49aa00',
'#55bb34',
'#119900',
'#b3474a',
'#ffbb99',
'#cf9930',
'#c5bb34',
'#ecd9df',
'#dd1f4a',
);
protected $dataSetSymbol = array(
ezcGraph::BULLET,
);
protected $fontName = '';
protected $fontColor = '#000000';
}
if ($_GET["tipo"]= "group_events") {
grafico_eventos_grupo();
}
function grafico_eventos_grupo () {
global $config;
$data = array();
$legend = array();
//This will give the distinct id_agente, give the id_grupo that goes
//with it and then the number of times it occured. GROUP BY statement
//is required if both DISTINCT() and COUNT() are in the statement
$sql = "SELECT DISTINCT(id_agente) AS id_agente, id_grupo, COUNT(id_agente) AS count FROM tevento WHERE 1=1 GROUP BY id_agente ORDER BY count DESC";
$result = get_db_all_rows_sql ($sql);
foreach ($result as $row) {
$data[] = $row["count"];
if ($row["id_agente"] == 0) {
//System event
$legend[] = "SYSTEM";
} else {
//Other events
$legend[] = substr (get_agent_name ($row["id_agente"], "lower"), 0, 15);
}
$comb = array_combine ($legend, $data);
}
$max_items = 6; //Maximum items on the piegraph
while (count($data) > $max_items) {
//Pops an element off the array until the array is small enough
array_pop ($data);
}
$chart = new ezcGraphPieChart();
$chart->renderer = new ezcGraphRenderer3d();
$chart->driver = new ezcGraphGdDriver();
$chart->palette = new customPalette();
$chart->options->label = '%2$d (%3$.1f%%) ';
$chart->legend->landscapeSize = .05;
$chart->options->font = 'FreeSans.ttf';
$chart->options->percentThreshold = 0.01;
$chart->legend = true;
$chart->legend->position = ezcGraph::RIGHT;
$chart->data['datos'] = new ezcGraphArrayDataSet($comb);
$chart->data['datos']->highlight = true;
$chart->data['datos']->highlight['SYSTEM'] = false;
$chart->renderToOutput( 300, 200 );
}
?>