Nagios Fusion DashBoard Database Query

This support forum board is for questions relating to Nagios Fusion.
Locked
aajibad1
Posts: 36
Joined: Tue Nov 07, 2017 4:00 pm

Nagios Fusion DashBoard Database Query

Post 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));
}
npolovenko
Support Tech
Posts: 3457
Joined: Mon May 15, 2017 5:00 pm

Re: Nagios Fusion DashBoard Database Query

Post 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?
As of May 25th, 2018, all communications with Nagios Enterprises and its employees are covered under our new Privacy Policy.
aajibad1
Posts: 36
Joined: Tue Nov 07, 2017 4:00 pm

Re: Nagios Fusion DashBoard Database Query

Post by aajibad1 »

That make sense, I will give that a try and update you . Thanks
npolovenko
Support Tech
Posts: 3457
Joined: Mon May 15, 2017 5:00 pm

Re: Nagios Fusion DashBoard Database Query

Post by npolovenko »

@aajibad1, Sounds good!
As of May 25th, 2018, all communications with Nagios Enterprises and its employees are covered under our new Privacy Policy.
Locked