Page 1 of 1

Nagios Fusion DashBoard Database Query

Posted: Tue Nov 14, 2017 3:42 pm
by aajibad1
Hello,

I intend to display all cpu stats of all my nagios server from Nagios Fusion server . but the available dashlet only display the CPU stat of only the fusion server . I tried to edit the php code but I can't understand where it is querying its data from .

Code: Select all

    global $db;

    $sysstat_rows = $db->exec_query('SELECT * FROM sysstat WHERE server_id = 0');
This is the rest of the code

Code: Select all

<?php
require_once(dirname(__FILE__) . '/../dashlet-helper.inc.php');

fusion_sysstat_dashlet();

function fusion_sysstat_dashlet() {
	
	

    global $db;

    $sysstat_rows = $db->exec_query('SELECT * FROM sysstat WHERE server_id = 0');

    $sysstat = array();

    foreach ($sysstat_rows as $row) {

        $metric = $row['metric'];

        if (!in_array($metric, fusion_sysstat_array()))
            continue;

        $value = fusion_sysstat_value_to_array($row['value']);

        $sysstat[$metric] = $value;
    }

    // need this for load calculations
    $processor_count = intval(exec("cat /proc/cpuinfo | grep processor | wc -l"));
    if ($processor_count <= 0)
        $processor_count = 1;

    ?>
    <table class="table table-condensed table-striped table-bordered sysstat serverstat">
        <thead>
            <tr>
                <th><?php echo _('Metric'); ?></th>
                <th><?php echo _('Value'); ?></th>
                <th class="visualize"></th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <th colspan="3"><?php echo _('Load'); ?></th>
            </tr>
            <tr>
                <td><?php echo _('1 min'); ?></td>
                <td><?php $load1 = fusion_sysstat_print_value($sysstat, 'load', 'load1') ?></td>
                <td><?php fusion_sysstat_print_bar($load1, $processor_count, $processor_count, $processor_count * 2); ?></td>
            </tr>
            <tr>
                <td><?php echo _('5 min'); ?></td>
                <td><?php $load5 = fusion_sysstat_print_value($sysstat, 'load', 'load5') ?></td>
                <td><?php fusion_sysstat_print_bar($load5, $processor_count, $processor_count, $processor_count * 2); ?></td>
            </tr>
            <tr>
                <td><?php echo _('15 min'); ?></td>
                <td><?php $load15 = fusion_sysstat_print_value($sysstat, 'load', 'load15') ?></td>
                <td><?php fusion_sysstat_print_bar($load15, $processor_count, $processor_count, $processor_count * 2); ?></td>
            </tr>



            <tr>
                <th colspan="3"><?php echo _('CPU Stats'); ?></th>
            </tr>
            <tr>
                <td><?php echo _('User'); ?></td>
                <td><?php $user = fusion_sysstat_print_value($sysstat, 'cpustat', 'user', ' %') ?></td>
                <td><?php fusion_sysstat_print_bar($user, 0, 200, 200); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Nice'); ?></td>
                <td><?php $nice = fusion_sysstat_print_value($sysstat, 'cpustat', 'nice', ' %') ?></td>
                <td><?php fusion_sysstat_print_bar($nice, 0, 200, 200); ?></td>
            </tr>
            <tr>
                <td><?php echo _('System'); ?></td>
                <td><?php $system = fusion_sysstat_print_value($sysstat, 'cpustat', 'system', ' %') ?></td>
                <td><?php fusion_sysstat_print_bar($system, 0, 200, 200); ?></td>
            </tr>
            <tr>
                <td><?php echo _('I/O Wait'); ?></td>
                <td><?php $iowait = fusion_sysstat_print_value($sysstat, 'cpustat', 'iowait', ' %') ?></td>
                <td><?php fusion_sysstat_print_bar($iowait, 0, 10, 20); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Steal'); ?></td>
                <td><?php $steal = fusion_sysstat_print_value($sysstat, 'cpustat', 'steal', ' %') ?></td>
                <td><?php fusion_sysstat_print_bar($steal, 0, 200, 200); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Idle'); ?></td>
                <td><?php $idle = fusion_sysstat_print_value($sysstat, 'cpustat', 'idle', ' %') ?></td>
                <td><?php fusion_sysstat_print_bar($idle, 0, 200, 200); ?></td>
            </tr>



            <tr>
                <th colspan="3"><?php echo _('Memory'); ?></th>
            </tr>
            <tr>
                <td><?php echo _('Total'); ?></td>
                <td><?php $total = fusion_sysstat_print_value($sysstat, 'memory', 'total', ' MB') ?></td>
                <td></td>
            </tr>
            <tr>
                <td><?php echo _('Used'); ?></td>
                <td><?php $used = fusion_sysstat_print_value($sysstat, 'memory', 'used', ' MB') ?></td>
                <td><?php fusion_sysstat_print_bar($used, $total, $total * 2, $total * 2); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Free'); ?></td>
                <td><?php $free = fusion_sysstat_print_value($sysstat, 'memory', 'free', ' MB') ?></td>
                <td><?php fusion_sysstat_print_bar($free, $total, $total * 2, $total * 2); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Shared'); ?></td>
                <td><?php $shared = fusion_sysstat_print_value($sysstat, 'memory', 'shared', ' MB') ?></td>
                <td><?php fusion_sysstat_print_bar($shared, $total, $total * 2, $total * 2); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Buffers'); ?></td>
                <td><?php $buffers = fusion_sysstat_print_value($sysstat, 'memory', 'buffers', ' MB') ?></td>
                <td><?php fusion_sysstat_print_bar($buffers, $total, $total * 2, $total * 2); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Cached'); ?></td>
                <td><?php $cached = fusion_sysstat_print_value($sysstat, 'memory', 'cached', ' MB') ?></td>
                <td><?php fusion_sysstat_print_bar($cached, $total, $total * 2, $total * 2); ?></td>
            </tr>



            <tr>
                <th colspan="3"><?php echo _('Swap'); ?></th>
            </tr>
            <tr>
                <td><?php echo _('Total'); ?></td>
                <td><?php $total = fusion_sysstat_print_value($sysstat, 'swap', 'total', ' MB') ?></td>
                <td></td>
            </tr>
            <tr>
                <td><?php echo _('Used'); ?></td>
                <td><?php $used = fusion_sysstat_print_value($sysstat, 'swap', 'used', ' MB') ?></td>
                <td><?php fusion_sysstat_print_bar($used, $total, $total * 0.33, $total * 0.5); ?></td>
            </tr>
            <tr>
                <td><?php echo _('Free'); ?></td>
                <td><?php $free = fusion_sysstat_print_value($sysstat, 'swap', 'free', ' MB') ?></td>
                <td><?php fusion_sysstat_print_bar($free, $total, $total * 2, $total * 2); ?></td>
            </tr>
        </tbody>
    </table>
    <?php
}

function fusion_sysstat_print_value($server, $arr, $subsys, $var, $suffix = '') {

    $number = 0;

    if (isset($arr["sysstat_{$subsys}"][$var])) {
        $number = $arr["sysstat_{$subsys}"][$var];
        echo get_formatted_number($number, 2) . $suffix;
    }
    else
        echo _('N/A');

    return $number;
}

function fusion_sysstat_print_bar($val, $max, $warn, $crit) {

    $val = (float) $val;
    $max = (float) $max;

    if ($val > $max && $max > 0)
        $val = $max;

    $width = $val;
    if ($max > 0)
        $width = ($val / $max) * 100;

    $color_ok = "#5CDF45";
    $color_warn = "#FEFF6F";
    $color_crit = "#FF795F";

    $color = "background-color: {$color_ok};";
    if ($val >= $warn)
        $color = "background-color: {$color_warn};";
    if ($val >= $crit)
        $color = "background-color: {$color_crit};";

    echo '<div style="height: 100%; width: ' . $width . '%;' . $color . '"> </div>';
}


function fusion_sysstat_array() {

    return array(
        'sysstat_cpustat',
        'sysstat_load',
        'sysstat_memory',
        'sysstat_swap',
        );
}

function fusion_sysstat_value_to_array($value) {

    return unserialize(base64_decode($value));
}

Re: Nagios Fusion DashBoard Database Query

Posted: Wed Nov 15, 2017 3:24 pm
by npolovenko
Hello, @aajibad1. This dashlet references dashlet-helper.inc.php, and dashlet-helper uses base.inc.php. I think this and similar dashlets get their data by running linux commands locally and parsing their output. Just as if you ran commands like this "cat /proc/cpuinfo | grep processor | wc -l" locally. You can not simply do the same for the remote servers. Atleast not over the http protocol.
I think the way to get the other XI servers stats is to have them locally run the CPU checks using various plugins(you can use the standard ones or you may look for more on Nagios exchange). After you set that up, you may use the Fusion performance graph dashlet to compare CPU utilization. What kind of CPU parameter is most important to you/the one that you need to monitor?

Re: Nagios Fusion DashBoard Database Query

Posted: Thu Nov 16, 2017 10:20 am
by aajibad1
That make sense, I will give that a try and update you . Thanks

Re: Nagios Fusion DashBoard Database Query

Posted: Thu Nov 16, 2017 11:26 am
by npolovenko
@aajibad1, Sounds good!