mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-10-24 17:04:04 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			194 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			194 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;
 | |
| 
 | |
| /**
 | |
|  * 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());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 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;
 | |
|         }
 | |
|     }
 | |
| }
 |