Add tinystatesummary for hosts overview

This commit is contained in:
Alexander Fuhr 2014-11-14 16:50:34 +01:00
parent 11bb8dbab0
commit 038964a325
4 changed files with 97 additions and 0 deletions

View File

@ -156,6 +156,18 @@ class Monitoring_ListController extends Controller
'host_state' => $this->translate('Hard State')
));
$this->view->hosts = $query->paginate();
$this->view->stats = $this->backend->select()->from('statusSummary', array(
'hosts_total',
'hosts_up',
'hosts_down',
'hosts_down_handled',
'hosts_down_unhandled',
'hosts_unreachable',
'hosts_unreachable_handled',
'hosts_unreachable_unhandled',
'hosts_pending',
))->getQuery()->fetchRow();
}
/**

View File

@ -0,0 +1,83 @@
<?php
use Icinga\Web\Url;
$selfUrl = 'monitoring/list/hosts';
$currentUrl = Url::fromRequest()->getRelativeUrl();
?>
<h3 class="tinystatesummary" <?= $this->compact ? ' data-base-target="col1"' : '' ?>>
<?= $this->qlink(sprintf($this->translate('%s hosts:'), $this->stats->hosts_total), $selfUrl); ?>
<?php if($this->stats->hosts_up): ?>
<span class="state ok<?= $currentUrl === Url::fromPath($selfUrl, array('host_state' => 0))->getRelativeUrl() ? ' active' : '' ?>">
<?= $this->qlink(
$this->stats->hosts_up,
$selfUrl,
array('host_state' => 0),
array('title' => $this->translate('Hosts with state UP'))
) ?>
</span>
<?php endif; ?>
<?php if($this->stats->hosts_down_unhandled): ?>
<span class="state critical<?= $currentUrl === Url::fromPath($selfUrl, array('host_state' => 1, 'host_unhandled' => 1))->getRelativeUrl() ? ' active' : '' ?>">
<?= $this->qlink(
$this->stats->hosts_down_unhandled,
$selfUrl,
array('host_state' => 1, 'host_unhandled' => 1),
array('title' => $this->translate('Unhandled hosts with state DOWN'))
) ?>
<?php endif; ?>
<?php if($this->stats->hosts_down_handled > 0): ?>
<span class="state handled critical<?= $currentUrl === Url::fromPath($selfUrl, array('host_state' => 1, 'host_unhandled' =>0))->getRelativeUrl() ? ' active' : '' ?>">
<?= $this->qlink(
$this->stats->hosts_down_handled,
$selfUrl,
array('host_state' => 1, 'host_unhandled' => 0),
array('title' => $this->translate('Handled hosts with state DOWN'))
) ?>
</span>
<?php endif; ?>
<?php if($this->stats->hosts_down): ?>
</span>
<?php endif; ?>
<?php if($this->stats->hosts_unreachable_unhandled): ?>
<span class="state unknown<?= $currentUrl === Url::fromPath($selfUrl, array('host_state' => 2, 'host_unhandled' => 1))->getRelativeUrl() ? ' active' : '' ?>">
<?= $this->qlink(
$this->stats->hosts_unreachable_unhandled,
$selfUrl,
array('host_state' => 2, 'host_unhandled' => 1),
array('title' => $this->translate('Unhandled hosts with state UNREACHABLE'))
) ?>
<?php endif; ?>
<?php if($this->stats->hosts_unreachable_handled > 0): ?>
<span class="state handled unknown<?= $currentUrl === Url::fromPath($selfUrl, array('host_state' => 2, 'host_unhandled' => 0))->getRelativeUrl() ? ' active' : '' ?>">
<?= $this->qlink(
$this->stats->hosts_unreachable_handled,
$selfUrl,
array('host_state' => 2, 'host_unhandled' => 0),
array('title' => $this->translate('Handled hosts with state UNREACHABLE'))
) ?>
</span>
<?php endif; ?>
<?php if($this->stats->hosts_unreachable): ?>
</span>
<?php endif; ?>
<?php if($this->stats->hosts_pending): ?>
<span class="state pending<?= $currentUrl === Url::fromPath($selfUrl, array('host_state' => 99))->getRelativeUrl() ? ' active' : '' ?>">
<?= $this->qlink(
$this->stats->hosts_pending,
$selfUrl,
array('host_state' => 99),
array('title' => $this->translate('Hosts with state PENDING'))
) ?>
</span>
<?php endif; ?>
</h3>

View File

@ -7,6 +7,7 @@ if ($this->compact): ?>
<div class="controls">
<?= $this->tabs ?>
<div style="margin: 1em;" class="dontprint">
<?= $this->render('list/components/hostssummary.phtml') ?>
<?= $this->translate('Sort by') ?> <?= $this->sortControl->render($this) ?>
<?php if (! $this->filterEditor): ?>
<?= $this->filterPreview ?>

View File

@ -18,6 +18,7 @@ class StatusSummaryQuery extends IdoQuery
'service_description' => 'so.name2',
),
'hoststatussummary' => array(
'hosts_total' => 'SUM(CASE WHEN object_type = \'host\' THEN 1 ELSE 0 END)',
'hosts_up' => 'SUM(CASE WHEN object_type = \'host\' AND state = 0 THEN 1 ELSE 0 END)',
'hosts_up_not_checked' => 'SUM(CASE WHEN object_type = \'host\' AND state = 0 AND is_active_checked = 0 AND is_passive_checked = 0 THEN 1 ELSE 0 END)',
'hosts_pending' => 'SUM(CASE WHEN object_type = \'host\' AND state = 99 THEN 1 ELSE 0 END)',