Nagios Fusion Host Group Dashlet

This support forum board is for questions relating to Nagios Fusion.
Locked
bpennin
Posts: 65
Joined: Tue Feb 20, 2018 2:23 pm

Nagios Fusion Host Group Dashlet

Post by bpennin »

All,

I have a host group with 1,452 hosts and the dashlet is dropping the 4th digit...showing 452. I have deleted and re-added with the same results of 3 digits? I can view the same host group on the Nagios XI server and it shows the correct number of 1,452. Am i missing something...
ssax
Dreams In Code
Posts: 7682
Joined: Wed Feb 11, 2015 12:54 pm

Re: Nagios Fusion Host Group Dashlet

Post by ssax »

I labbed this up and it's working properly on mine. What version of Fusion are you running?

Try running this command and then waiting 15 minutes for the data to rebuild:

Code: Select all

/usr/local/nagiosfusion/scripts/truncate_polled.php
Then logout of your account in Fusion, then re-login again.
bpennin
Posts: 65
Joined: Tue Feb 20, 2018 2:23 pm

Re: Nagios Fusion Host Group Dashlet

Post by bpennin »

Thanks for your reply...I tried the command and waited 15 minutes and have the same result. I am on version 4.1.7 for Fusion and 5.6.6 for Nagios XI.
In your lab did you create a host group that had over 1,400 hosts? The dashlet works fine on host counts under 4 digits for me.
ssax
Dreams In Code
Posts: 7682
Joined: Wed Feb 11, 2015 12:54 pm

Re: Nagios Fusion Host Group Dashlet

Post by ssax »

Yes, I created 1850 hosts and added them to a single hostgroup, the number showed properly.

Do this, run this command as root on the fusion server and leave it running:

Code: Select all

tail -Fn0 /var/log/httpd/error_log /var/log/httpd/ssl_error_log
Then open the page that shows that dashlet and once it loads send us the full output of the still running tail command.
bpennin
Posts: 65
Joined: Tue Feb 20, 2018 2:23 pm

Re: Nagios Fusion Host Group Dashlet

Post by bpennin »

[root@lnxvnaghq004 scripts]# tail -Fn0 /var/log/httpd/error_log /var/log/httpd/ssl_error_log
==> /var/log/httpd/error_log <==

==> /var/log/httpd/ssl_error_log <==
[Tue May 05 16:22:34.169864 2020] [:error] [pid 29307] [client 10.13.163.30:54088] PHP Notice: Undefined index: auth_token in /usr/local/nagiosfusion/html/includes/components/fusioncore/fusioncore.inc.php on line 239, referer: https://lnxvnaghq004.cinfin.com/nagiosf ... ervers.php
[Tue May 05 16:22:41.956342 2020] [:error] [pid 30215] [client 10.13.163.30:54091] PHP Notice: Undefined index: auth_token in /usr/local/nagiosfusion/html/includes/components/fusioncore/fusioncore.inc.php on line 239, referer: https://lnxvnaghq004.cinfin.com/nagiosfusion/

I clicked on Home and then I tried to refresh the screen. This is all of the output.
You do not have the required permissions to view the files attached to this post.
ssax
Dreams In Code
Posts: 7682
Joined: Wed Feb 11, 2015 12:54 pm

Re: Nagios Fusion Host Group Dashlet

Post by ssax »

Is the user you logged into the Fusion web interface as an Admin on that XI server?

Please attach this file:

Code: Select all

/usr/local/nagiosfusion/html/includes/dashlets/hostgroup_summary/hostgroup_summary.php
bpennin
Posts: 65
Joined: Tue Feb 20, 2018 2:23 pm

Re: Nagios Fusion Host Group Dashlet

Post by bpennin »

Yes - admin level id accessing.

File below:

Code: Select all

[root@lnxvnaghq004 ~]# cat /usr/local/nagiosfusion/html/includes/dashlets/hostgroup_summary/hostgroup_summary.php
<?php
require_once(dirname(__FILE__) . '/../dashlet-helper.inc.php');

dashlets_data_check();

hostgroup_summary_dashlet();

function hostgroup_summary_dashlet() {

    $server = grab_request_var('server');
    $hostgroup = grab_request_var('hostgroup', 0);

    $server = get_server($server);
    if ($server === false) {
        echo '<h3>' . _('Invalid server selection!') . '</h3>';
        exit();
    }

    $hostgroup_members = get_server_polled_key($server, 'hostgroup_members', $limit = 1);
    $host_status = get_server_polled_key($server, 'host_status', $limit = 1);
    $service_status = get_server_polled_key($server, 'service_status', $limit = 1);

    if (!isset($hostgroup_members[0]['hostgroup_members'])) {
        echo '<h3>' . _('No recent data found for specified server!') . '</h3>';
        exit();
    }

    $polled_time = date('Y-m-d H:i:s', $hostgroup_members[0]['polled_time']);
    $polled_time = convert_server_timestring_to_local_timestring($server, $polled_time);

    $hostgroup_members = unpack_array($hostgroup_members[0]['hostgroup_members']);
    $host_status = unpack_array($host_status[0]['host_status']);
    $service_status = unpack_array($service_status[0]['service_status']);

    if (!isset($hostgroup_members[$hostgroup])) {
        echo '<h3>' . _('No hostgroup data found!') . '</h3>';
        exit();
    }

    $host_counts = array(
        STATE_UP => 0,
        STATE_DOWN => 0,
        STATE_UNREACHABLE => 0
        );
    $service_counts = array(
        STATE_OK => 0,
        STATE_WARNING => 0,
        STATE_CRITICAL => 0,
        STATE_UNKNOWN => 0,
        );

    $members = $hostgroup_members[$hostgroup]['members'];
    if (is_array($members) && count($members) > 0) {
        foreach ($members as $host_name) {

            if (isset($host_status[$host_name])) {

                $host = $host_status[$host_name];
                $host_counts[$host['current_state']]++;

                if (isset($service_status[$host_name])) {
                    foreach ($service_status[$host_name] as $service) {

                        $service_counts[$service['current_state']]++;
                    }
                }
            }
        }
    }

    $host_output = '';
    $service_output = '';

    if (array_sum($host_counts) == 0) {
        $host_output = '0 ' . _('hosts');
    } else {
        foreach ($host_counts as $state => $value) {

            $class = $verb = '';
            $link_xi = $link_core = '';

            $noun = _('hosts');
            if ($value == 1)
                $noun = _('host');

            switch ($state) {
                case STATE_UP:
                    $class = 'hostup';
                    $verb = _('up');
                    $link_xi = 'includes/components/xicore/status.php?show=hosts&hostgroup=' . urlencode($hostgroup) . '&hoststatustypes=2';
                    $link_core = 'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=hostdetail&&hoststatustypes=2&hostprops=0';
                    break;

                case STATE_DOWN:
                    $class = 'hostdown';
                    $verb = _('down');
                    $link_xi = 'includes/components/xicore/status.php?show=hosts&hostgroup=' . urlencode($hostgroup) . '&hoststatustypes=4';
                    $link_core = 'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=hostdetail&hoststatustypes=4&hostprops=0';
                    break;

                case STATE_UNREACHABLE:
                    $class = 'hostunreachable';
                    $verb = _('unreachable');
                    $link_xi = 'includes/components/xicore/status.php?show=hosts&hostgroup=' . urlencode($hostgroup) . '&hoststatustypes=8';
                    $link_core = 'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=hostdetail&hoststatustypes=8&hostprops=0';
                    break;
            }
            if ($value > 0) {
                $host_value = "{$value} {$noun} {$verb}";
                $host_link = get_tactical_link($host_value, $server, $link_xi, $link_core);
                $host_output .= "<div class=\"{$class}\">{$host_link}</div>";
            }
        }
    }

    if (array_sum($service_counts) == 0) {
        $service_output = '0 ' . _('services');
    } else {
        foreach ($service_counts as $state => $value) {

            $class = $verb = '';
            $link_xi = $link_core = '';
            $noun = _('services');

            if ($value == 1)
                $noun = _('service');

            switch ($state) {
                case STATE_OK:
                    $class = 'serviceok';
                    $verb = _('ok');
                    $link_xi = 'includes/components/xicore/status.php?show=services&hostgroup=' . urlencode($hostgroup) . '&servicestatustypes=2';
                    $link_core = 'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=detail&&servicestatustypes=2&hoststatustypes=15&serviceprops=0&hostprops=0';
                    break;

                case STATE_WARNING:
                    $class = 'servicewarning';
                    $verb = _('warning');
                    $link_xi = 'includes/components/xicore/status.php?show=services&hostgroup=' . urlencode($hostgroup) . '&servicestatustypes=4';
                    $link_core = 'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=detail&servicestatustypes=4&hoststatustypes=15&serviceprops=0&hostprops=0';
                    break;

                case STATE_CRITICAL:
                    $class = 'servicecritical';
                    $verb = _('critical');
                    $link_xi = 'includes/components/xicore/status.php?show=services&hostgroup=' . urlencode($hostgroup) . '&servicestatustypes=16';
                    $link_core = 'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=detail&servicestatustypes=16&hoststatustypes=15&serviceprops=0&hostprops=0';
                    break;

                case STATE_UNKNOWN:
                    $class = 'serviceunknown';
                    $verb = _('unknown');
                    $link_xi = 'includes/components/xicore/status.php?show=services&hostgroup=' . urlencode($hostgroup) . '&servicestatustypes=8';
                    $link_core = 'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=detail&servicestatustypes=8&hoststatustypes=15&serviceprops=0&hostprops=0';
                    break;
            }
            if ($value > 0) {
                $service_value = "{$value} {$noun} {$verb}";
                $service_link = get_tactical_link($service_value, $server, $link_xi, $link_core);
                $service_output .= "<div class=\"{$class}\">{$service_link}</div>";
            }
        }
    }

    $hostgroup = get_tactical_link($hostgroup, $server,
        'includes/components/xicore/status.php?show=services&hostgroup=' . urlencode($hostgroup),
        'status.cgi?hostgroup=' . urlencode($hostgroup) . '&style=overview');
    ?>
    <table class="table table-condensed table-striped table-bordered hoststatustable servicestatustable tactical">
        <tr>
            <th>
                <?php echo _('Hostgroup'); ?>
            </th>
            <th>
                <?php echo _('Hosts'); ?>
            </th>
            <th>
                <?php echo _('Services'); ?>
            </th>
        </tr>
        <tr>
            <td>
                <?php echo $hostgroup; ?>
            </td>
            <td>
                <?php echo $host_output; ?>
            </td>
            <td>
                <?php echo $service_output; ?>
            </td>
        </tr>
    </table>
    <?php
ssax
Dreams In Code
Posts: 7682
Joined: Wed Feb 11, 2015 12:54 pm

Re: Nagios Fusion Host Group Dashlet

Post by ssax »

Same as mine, I think we'll need to debug this on a remote session as the tables are pretty big.

Please create a ticket for this and include a link back to this forum thread so we can get a remote session setup:

https://support.nagios.com/tickets/
bpennin
Posts: 65
Joined: Tue Feb 20, 2018 2:23 pm

Re: Nagios Fusion Host Group Dashlet

Post by bpennin »

Created - Thanks for your help and looking forward to getting to the root of this.
Ticket info:
Fusion Dashlet Not Reporting 4 digits of host data #278014
scottwilkerson
DevOps Engineer
Posts: 19396
Joined: Tue Nov 15, 2011 3:11 pm
Location: Nagios Enterprises
Contact:

Re: Nagios Fusion Host Group Dashlet

Post by scottwilkerson »

Great

Locking forum thread, moving to ticket
Former Nagios employee
Creator:
ahumandesign.com
enneagrams.com
Locked