195 lines
7.0 KiB
PHP
195 lines
7.0 KiB
PHP
<?php
|
|
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
|
|
|
|
namespace Icinga\Module\Monitoring\Controllers;
|
|
|
|
use Icinga\Module\Monitoring\Controller;
|
|
use Icinga\Module\Monitoring\Forms\Command\Instance\DisableNotificationsExpireCommandForm;
|
|
use Icinga\Module\Monitoring\Forms\Command\Instance\ToggleInstanceFeaturesCommandForm;
|
|
use Icinga\Web\Widget\Tabextension\DashboardAction;
|
|
use Icinga\Web\Widget\Tabextension\MenuAction;
|
|
|
|
/**
|
|
* Display process and performance information of the monitoring host and program-wide commands
|
|
*/
|
|
class HealthController extends Controller
|
|
{
|
|
/**
|
|
* Add tabs
|
|
*
|
|
* @see \Icinga\Web\Controller\ActionController::init()
|
|
*/
|
|
public function init()
|
|
{
|
|
$this
|
|
->getTabs()
|
|
->add(
|
|
'info',
|
|
array(
|
|
'title' => $this->translate(
|
|
'Show information about the current monitoring instance\'s process'
|
|
. ' and it\'s performance as well as available features'
|
|
),
|
|
'label' => $this->translate('Process Information'),
|
|
'url' =>'monitoring/health/info'
|
|
)
|
|
)
|
|
->add(
|
|
'stats',
|
|
array(
|
|
'title' => $this->translate(
|
|
'Show statistics about the monitored objects'
|
|
),
|
|
'label' => $this->translate('Stats'),
|
|
'url' =>'monitoring/health/stats'
|
|
)
|
|
)
|
|
->extend(new DashboardAction())->extend(new MenuAction());
|
|
}
|
|
|
|
/**
|
|
* Display process information and program-wide commands
|
|
*/
|
|
public function infoAction()
|
|
{
|
|
$this->view->title = $this->translate('Process Information');
|
|
$this->getTabs()->activate('info');
|
|
$this->setAutorefreshInterval(10);
|
|
$this->view->backendName = $this->backend->getName();
|
|
$programStatus = $this->backend
|
|
->select()
|
|
->from(
|
|
'programstatus',
|
|
array(
|
|
'is_currently_running',
|
|
'process_id',
|
|
'endpoint_name',
|
|
'program_start_time',
|
|
'status_update_time',
|
|
'program_version',
|
|
'last_command_check',
|
|
'last_log_rotation',
|
|
'global_service_event_handler',
|
|
'global_host_event_handler',
|
|
'notifications_enabled',
|
|
'disable_notif_expire_time',
|
|
'active_service_checks_enabled',
|
|
'passive_service_checks_enabled',
|
|
'active_host_checks_enabled',
|
|
'passive_host_checks_enabled',
|
|
'event_handlers_enabled',
|
|
'obsess_over_services',
|
|
'obsess_over_hosts',
|
|
'flap_detection_enabled',
|
|
'process_performance_data'
|
|
)
|
|
)
|
|
->getQuery();
|
|
$this->handleFormatRequest($programStatus);
|
|
$programStatus = $programStatus->fetchRow();
|
|
if ($programStatus === false) {
|
|
return $this->render('not-running', true, null);
|
|
}
|
|
$this->view->programStatus = $programStatus;
|
|
$toggleFeaturesForm = new ToggleInstanceFeaturesCommandForm();
|
|
$toggleFeaturesForm
|
|
->setStatus($programStatus)
|
|
->load($programStatus)
|
|
->handleRequest();
|
|
$this->view->toggleFeaturesForm = $toggleFeaturesForm;
|
|
|
|
$this->view->runtimevariables = (object) $this->backend->select()
|
|
->from('runtimevariables', array('varname', 'varvalue'))
|
|
->getQuery()->fetchPairs();
|
|
|
|
$this->view->checkperformance = $this->backend->select()
|
|
->from('runtimesummary')
|
|
->getQuery()->fetchAll();
|
|
}
|
|
|
|
/**
|
|
* Display stats about current checks and monitored objects
|
|
*/
|
|
public function statsAction()
|
|
{
|
|
$this->getTabs()->activate('stats');
|
|
|
|
$servicestats = $this->backend->select()->from('servicestatussummary', array(
|
|
'services_critical',
|
|
'services_critical_handled',
|
|
'services_critical_unhandled',
|
|
'services_ok',
|
|
'services_pending',
|
|
'services_total',
|
|
'services_unknown',
|
|
'services_unknown_handled',
|
|
'services_unknown_unhandled',
|
|
'services_warning',
|
|
'services_warning_handled',
|
|
'services_warning_unhandled'
|
|
));
|
|
$this->applyRestriction('monitoring/filter/objects', $servicestats);
|
|
$this->view->servicestats = $servicestats->fetchRow();
|
|
$this->view->unhandledServiceProblems = $this->view->servicestats->services_critical_unhandled
|
|
+ $this->view->servicestats->services_unknown_unhandled
|
|
+ $this->view->servicestats->services_warning_unhandled;
|
|
|
|
$hoststats = $this->backend->select()->from('hoststatussummary', array(
|
|
'hosts_total',
|
|
'hosts_up',
|
|
'hosts_down',
|
|
'hosts_down_handled',
|
|
'hosts_down_unhandled',
|
|
'hosts_unreachable',
|
|
'hosts_unreachable_handled',
|
|
'hosts_unreachable_unhandled',
|
|
'hosts_pending',
|
|
));
|
|
$this->applyRestriction('monitoring/filter/objects', $hoststats);
|
|
$this->view->hoststats = $hoststats->fetchRow();
|
|
$this->view->unhandledhostProblems = $this->view->hoststats->hosts_down_unhandled
|
|
+ $this->view->hoststats->hosts_unreachable_unhandled;
|
|
|
|
$this->view->unhandledProblems = $this->view->unhandledhostProblems
|
|
+ $this->view->unhandledServiceProblems;
|
|
|
|
$this->view->runtimevariables = (object) $this->backend->select()
|
|
->from('runtimevariables', array('varname', 'varvalue'))
|
|
->getQuery()->fetchPairs();
|
|
|
|
$this->view->checkperformance = $this->backend->select()
|
|
->from('runtimesummary')
|
|
->getQuery()->fetchAll();
|
|
}
|
|
|
|
/**
|
|
* Disable notifications w/ an optional expire time
|
|
*/
|
|
public function disableNotificationsAction()
|
|
{
|
|
$this->assertPermission('monitoring/command/feature/instance');
|
|
$this->view->title = $this->translate('Disable Notifications');
|
|
$programStatus = $this->backend
|
|
->select()
|
|
->from(
|
|
'programstatus',
|
|
array(
|
|
'notifications_enabled',
|
|
'disable_notif_expire_time'
|
|
)
|
|
)
|
|
->getQuery()
|
|
->fetchRow();
|
|
$this->view->programStatus = $programStatus;
|
|
if ((bool) $programStatus->notifications_enabled === false) {
|
|
return;
|
|
} else {
|
|
$form = new DisableNotificationsExpireCommandForm();
|
|
$form
|
|
->setRedirectUrl('monitoring/health/info')
|
|
->handleRequest();
|
|
$this->view->form = $form;
|
|
}
|
|
}
|
|
}
|