Stef 0430f6acb1 Cisco QFP polling fixes (#14961)
* fix cisco-qfp Division by zero

* fix percentage calc

* linting

* another zero in RRD. the (int) might be consequential errors and should hurt...

* no float for average_package

* Update includes/polling/cisco-qfp.inc.php

Co-authored-by: Tony Murray <murraytony@gmail.com>

* Add floor

---------

Co-authored-by: Tony Murray <murraytony@gmail.com>
2023-04-14 22:11:36 -05:00

83 lines
3.7 KiB
PHP

<?php
/**
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version. Please see LICENSE.txt at the top level of
* the source code distribution for details.
*
* @link https://www.librenms.org
*
* @copyright 2019 LibreNMS
* @author Pavle Obradovic <pobradovic08@gmail.com>
*/
require 'includes/html/graphs/common.inc.php';
$rrd_options .= ' -u 100 -l 0 -E -b 1024 ';
$iter = '1';
if ($width > '500') {
$descr_len = 13;
} else {
$descr_len = 8;
$descr_len += round(($width - 250) / 8);
}
if ($width > '500') {
$rrd_options .= " COMMENT:'" . substr(str_pad($unit_text, $descr_len + 5), 0, $descr_len + 5) . "Total Used Free (Min Max Ave)'";
$rrd_options .= " COMMENT:'\l'";
} else {
$rrd_options .= " COMMENT:'" . substr(str_pad($unit_text, $descr_len + 5), 0, $descr_len + 5) . "Total Used Free\l'";
}
$descr = \LibreNMS\Data\Store\Rrd::fixedSafeDescr(short_hrDeviceDescr($components['name']), $descr_len);
$perc = \LibreNMS\Util\Number::calculatePercent((int) $components['memory_used'], (int) $tmp_component['memory_total']);
$background = \LibreNMS\Util\Color::percentage($perc, 75);
$rrd_options .= " DEF:qfp_used=$rrd_filename:InUse:AVERAGE";
$rrd_options .= " DEF:qfp_free=$rrd_filename:Free:AVERAGE";
$rrd_options .= " DEF:qfp_size=$rrd_filename:Total:AVERAGE";
$rrd_options .= " DEF:qfp_low_watermark=$rrd_filename:LowFreeWatermark:AVERAGE";
$rrd_options .= " DEF:qfp_ok_th=$rrd_filename:FallingThreshold:AVERAGE";
$rrd_options .= " DEF:qfp_warn_th=$rrd_filename:RisingThreshold:AVERAGE";
$rrd_options .= ' CDEF:qfp_perc=qfp_used,qfp_size,/,100,*';
$rrd_options .= ' CDEF:qfp_percx=100,qfp_perc,-';
$rrd_options .= ' AREA:qfp_perc#' . $background['right'] . ':';
$rrd_options .= ' CDEF:qfp_tmp_wmark=qfp_low_watermark,qfp_size,/,100,*';
$rrd_options .= ' CDEF:qfp_perc_wmark=100,qfp_tmp_wmark,-';
if ($width > '500') {
$rrd_options .= ' LINE1.25:qfp_perc#' . $background['left'] . ":'$descr'";
$rrd_options .= ' GPRINT:qfp_size:LAST:%6.2lf%sB';
$rrd_options .= ' GPRINT:qfp_used:LAST:%6.2lf%sB';
$rrd_options .= ' GPRINT:qfp_free:LAST:%6.2lf%sB';
$rrd_options .= ' GPRINT:qfp_free:MIN:%5.2lf%sB';
$rrd_options .= ' GPRINT:qfp_free:MAX:%5.2lf%sB';
$rrd_options .= ' GPRINT:qfp_free:AVERAGE:%5.2lf%sB\\n';
$rrd_options .= " COMMENT:'" . substr(str_pad('', $descr_len + 12), 0, $descr_len + 12) . " '";
$rrd_options .= " GPRINT:qfp_perc:LAST:'%6.2lf%% '";
$rrd_options .= " GPRINT:qfp_percx:LAST:'%6.2lf%% '";
$rrd_options .= " GPRINT:qfp_perc:MIN:'%5.2lf%% '";
$rrd_options .= " GPRINT:qfp_perc:MAX:'%5.2lf%% '";
$rrd_options .= ' GPRINT:qfp_perc:AVERAGE:%5.2lf%%\\n';
$rrd_options .= " LINE2:qfp_perc_wmark#ffaaaa:'Most used'";
$rrd_options .= " COMMENT:'\l'";
$rrd_options .= " LINE1:qfp_warn_th#aa0000:'Threshold':dashes";
} else {
$rrd_options .= ' LINE1.25:qfp_perc#' . $background['left'] . ":'$descr'";
$rrd_options .= ' GPRINT:qfp_size:LAST:%6.2lf%sB';
$rrd_options .= ' GPRINT:qfp_used:LAST:%6.2lf%sB';
$rrd_options .= ' GPRINT:qfp_free:LAST:%6.2lf%sB';
$rrd_options .= " COMMENT:'\l'";
$rrd_options .= " COMMENT:'" . substr(str_pad('', $descr_len + 12), 0, $descr_len + 12) . " '";
$rrd_options .= " GPRINT:qfp_perc:LAST:'%5.2lf%% '";
$rrd_options .= " GPRINT:qfp_percx:LAST:'%5.2lf%% '";
$rrd_options .= " COMMENT:'\l'";
$rrd_options .= " LINE2:qfp_perc_wmark#ffaaaa:'Most used'";
$rrd_options .= " COMMENT:'\l'";
$rrd_options .= " LINE1:qfp_warn_th#aa0000:'Threshold':dashes";
}