Show warning health state badges

The warning state badges should be shown when notifications or active host/service checks are disabled.
This commit is contained in:
raviks789 2022-08-19 10:10:45 +02:00 committed by Johannes Meyer
parent 762630c027
commit bff47213ee
2 changed files with 21 additions and 96 deletions

View File

@ -44,6 +44,27 @@ class Health extends HealthHook
$programStatus->process_id,
DateFormatter::timeSince($programStatus->program_start_time)
));
$warningMessages = [];
if (! $programStatus->active_host_checks_enabled) {
$this->setState(self::STATE_WARNING);
$warningMessages[] = t('Active host checks are disabled');
}
if (! $programStatus->active_service_checks_enabled) {
$this->setState(self::STATE_WARNING);
$warningMessages[] = t('Active service checks are disabled');
}
if (! $programStatus->notifications_enabled) {
$this->setState(self::STATE_WARNING);
$warningMessages[] = t('Notifications are disabled');
}
if ($this->getState() === self::STATE_WARNING) {
$this->setMessage(implode("; ", $warningMessages));
}
} else {
$this->setState(self::STATE_CRITICAL);
$this->setMessage(sprintf(t('Backend %s is not running'), $backendName));

View File

@ -1,96 +0,0 @@
<?php
/* Icinga Web 2 | (c) 2015 Icinga Development Team | GPLv2+ */
namespace Icinga\Module\Monitoring\Web\Navigation\Renderer;
use Exception;
use Icinga\Application\Logger;
use Icinga\Module\Monitoring\Backend\MonitoringBackend;
use Icinga\Web\Navigation\Renderer\BadgeNavigationItemRenderer;
class BackendAvailabilityNavigationItemRenderer extends BadgeNavigationItemRenderer
{
/**
* Cached count
*
* @var int
*/
protected $count;
/**
* Get whether or not the monitoring backend is currently running
*
* @return object
*/
protected function isCurrentlyRunning()
{
$programStatus = MonitoringBackend::instance()
->select()
->from(
'programstatus',
array(
'active_host_checks_enabled',
'active_service_checks_enabled',
'is_currently_running',
'notifications_enabled'
)
)
->fetchRow();
if ($programStatus === false) {
throw new Exception(sprintf(
mt('monitoring', '%s is currently not up and running'),
MonitoringBackend::instance()->getName()
));
}
return $programStatus;
}
/**
* {@inheritdoc}
*/
public function getCount()
{
if ($this->count === null) {
try {
$programStatus = $this->isCurrentlyRunning();
} catch (Exception $e) {
Logger::debug($e);
$this->count = 1;
$this->state = static::STATE_UNKNOWN;
$this->title = $e->getMessage();
return $this->count;
}
$count = 0;
$titles = array();
if (! (bool) $programStatus->active_host_checks_enabled) {
$count++;
$this->state = static::STATE_WARNING;
$titles[] = mt('monitoring', 'Active host checks are disabled');
}
if (! (bool) $programStatus->active_service_checks_enabled) {
$count++;
$this->state = static::STATE_WARNING;
$titles[] = mt('monitoring', 'Active service checks are disabled');
}
if (! (bool) $programStatus->notifications_enabled) {
$count++;
$this->state = static::STATE_WARNING;
$titles[] = mt('monitoring', 'Notifications are disabled');
}
if (! (bool) $programStatus->is_currently_running) {
$count++;
$this->state = static::STATE_CRITICAL;
array_unshift($titles, sprintf(
mt('monitoring', 'Monitoring backend %s is not running'),
MonitoringBackend::instance()->getName()
));
}
$this->count = $count;
$this->title = implode('. ', $titles);
}
return $this->count;
}
}