summaryrefslogtreecommitdiffstats
path: root/modules/monitoring/configuration.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/monitoring/configuration.php')
-rw-r--r--modules/monitoring/configuration.php431
1 files changed, 431 insertions, 0 deletions
diff --git a/modules/monitoring/configuration.php b/modules/monitoring/configuration.php
new file mode 100644
index 0000000..663db93
--- /dev/null
+++ b/modules/monitoring/configuration.php
@@ -0,0 +1,431 @@
+<?php
+/* Icinga Web 2 | (c) 2014 Icinga Development Team | GPLv2+ */
+
+use Icinga\Authentication\Auth;
+
+/** @var $this \Icinga\Application\Modules\Module */
+
+$this->providePermission(
+ 'monitoring/command/*',
+ $this->translate('Allow all commands')
+);
+$this->providePermission(
+ 'monitoring/command/schedule-check',
+ $this->translate('Allow scheduling host and service checks')
+);
+$this->providePermission(
+ 'monitoring/command/schedule-check/active-only',
+ $this->translate('Allow scheduling host and service checks (Only on objects with active checks enabled)')
+);
+$this->providePermission(
+ 'monitoring/command/acknowledge-problem',
+ $this->translate('Allow acknowledging host and service problems')
+);
+$this->providePermission(
+ 'monitoring/command/remove-acknowledgement',
+ $this->translate('Allow removing problem acknowledgements')
+);
+$this->providePermission(
+ 'monitoring/command/comment/*',
+ $this->translate('Allow adding and deleting host and service comments')
+);
+$this->providePermission(
+ 'monitoring/command/comment/add',
+ $this->translate('Allow commenting on hosts and services')
+);
+$this->providePermission(
+ 'monitoring/command/comment/delete',
+ $this->translate('Allow deleting host and service comments')
+);
+$this->providePermission(
+ 'monitoring/command/downtime/*',
+ $this->translate('Allow scheduling and deleting host and service downtimes')
+);
+$this->providePermission(
+ 'monitoring/command/downtime/schedule',
+ $this->translate('Allow scheduling host and service downtimes')
+);
+$this->providePermission(
+ 'monitoring/command/downtime/delete',
+ $this->translate('Allow deleting host and service downtimes')
+);
+$this->providePermission(
+ 'monitoring/command/process-check-result',
+ $this->translate('Allow processing host and service check results')
+);
+$this->providePermission(
+ 'monitoring/command/feature/instance',
+ $this->translate('Allow processing commands for toggling features on an instance-wide basis')
+);
+$this->providePermission(
+ 'monitoring/command/feature/object/*',
+ $this->translate('Allow processing commands for toggling features on host and service objects')
+);
+$this->providePermission(
+ 'monitoring/command/feature/object/active-checks',
+ $this->translate('Allow processing commands for toggling active checks on host and service objects')
+);
+$this->providePermission(
+ 'monitoring/command/feature/object/passive-checks',
+ $this->translate('Allow processing commands for toggling passive checks on host and service objects')
+);
+$this->providePermission(
+ 'monitoring/command/feature/object/notifications',
+ $this->translate('Allow processing commands for toggling notifications on host and service objects')
+);
+$this->providePermission(
+ 'monitoring/command/feature/object/event-handler',
+ $this->translate('Allow processing commands for toggling event handlers on host and service objects')
+);
+$this->providePermission(
+ 'monitoring/command/feature/object/flap-detection',
+ $this->translate('Allow processing commands for toggling flap detection on host and service objects')
+);
+$this->providePermission(
+ 'monitoring/command/send-custom-notification',
+ $this->translate('Allow sending custom notifications for hosts and services')
+);
+$this->providePermission(
+ 'no-monitoring/contacts',
+ $this->translate('Prohibit access to contacts and contactgroups')
+);
+
+$this->provideRestriction(
+ 'monitoring/filter/objects',
+ $this->translate('Restrict views to the Icinga objects that match the filter')
+);
+$this->provideRestriction(
+ 'monitoring/blacklist/properties',
+ $this->translate('Hide the properties of monitored objects that match the filter')
+);
+
+$this->provideConfigTab('backends', array(
+ 'title' => $this->translate('Configure how to retrieve monitoring information'),
+ 'label' => $this->translate('Backends'),
+ 'url' => 'config'
+));
+$this->provideConfigTab('security', array(
+ 'title' => $this->translate('Configure how to protect your monitoring environment against prying eyes'),
+ 'label' => $this->translate('Security'),
+ 'url' => 'config/security'
+));
+$this->provideSetupWizard('Icinga\Module\Monitoring\MonitoringWizard');
+
+/*
+ * Available Search Urls
+ */
+$this->provideSearchUrl($this->translate('Tactical Overview'), 'monitoring/tactical', 100);
+$this->provideSearchUrl($this->translate('Hosts'), 'monitoring/list/hosts?sort=host_severity&limit=10', 99);
+$this->provideSearchUrl($this->translate('Services'), 'monitoring/list/services?sort=service_severity&limit=10', 98);
+$this->provideSearchUrl($this->translate('Hostgroups'), 'monitoring/list/hostgroups?limit=10', 97);
+$this->provideSearchUrl($this->translate('Servicegroups'), 'monitoring/list/servicegroups?limit=10', 96);
+
+/*
+ * Available navigation items
+ */
+$this->provideNavigationItem('host-action', $this->translate('Host Action'));
+$this->provideNavigationItem('service-action', $this->translate('Service Action'));
+// Notes are disabled as we're not sure whether to really make a difference between actions and notes
+//$this->provideNavigationItem('host-note', $this->translate('Host Note'));
+//$this->provideNavigationItem('service-note', $this->translate('Service Note'));
+
+/*
+ * Problems Section
+ */
+$section = $this->menuSection(N_('Problems'), array(
+ 'renderer' => array(
+ 'SummaryNavigationItemRenderer',
+ 'state' => 'critical'
+ ),
+ 'icon' => 'attention-circled',
+ 'priority' => 20
+));
+$section->add(N_('Host Problems'), array(
+ 'icon' => 'host',
+ 'description' => $this->translate('List current host problems'),
+ 'renderer' => array(
+ 'MonitoringBadgeNavigationItemRenderer',
+ 'columns' => array(
+ 'hosts_down_unhandled' => $this->translate('%d unhandled hosts down')
+ ),
+ 'state' => 'critical',
+ 'dataView' => 'unhandledhostproblems'
+ ),
+ 'url' => 'monitoring/list/hosts?host_problem=1&sort=host_severity',
+ 'priority' => 50
+));
+$section->add(N_('Service Problems'), array(
+ 'icon' => 'service',
+ 'description' => $this->translate('List current service problems'),
+ 'renderer' => array(
+ 'MonitoringBadgeNavigationItemRenderer',
+ 'columns' => array(
+ 'services_critical_unhandled' => $this->translate('%d unhandled services critical')
+ ),
+ 'state' => 'critical',
+ 'dataView' => 'unhandledserviceproblems'
+ ),
+ 'url' => 'monitoring/list/services?service_problem=1&sort=service_severity&dir=desc',
+ 'priority' => 60
+));
+$section->add(N_('Service Grid'), array(
+ 'icon' => 'services',
+ 'description' => $this->translate('Display service problems as grid'),
+ 'url' => 'monitoring/list/servicegrid?problems',
+ 'priority' => 70
+));
+$section->add(N_('Current Downtimes'), array(
+ 'icon' => 'plug',
+ 'description' => $this->translate('List current downtimes'),
+ 'url' => 'monitoring/list/downtimes?downtime_is_in_effect=1',
+ 'priority' => 80
+));
+
+/*
+ * Overview Section
+ */
+$section = $this->menuSection(N_('Overview'), array(
+ 'icon' => 'binoculars',
+ 'priority' => 30
+));
+$section->add(N_('Tactical Overview'), array(
+ 'icon' => 'chart-pie',
+ 'description' => $this->translate('Open tactical overview'),
+ 'url' => 'monitoring/tactical',
+ 'priority' => 40
+));
+$section->add(N_('Hosts'), array(
+ 'icon' => 'host',
+ 'description' => $this->translate('List hosts'),
+ 'url' => 'monitoring/list/hosts',
+ 'priority' => 50
+));
+$section->add(N_('Services'), array(
+ 'icon' => 'service',
+ 'description' => $this->translate('List services'),
+ 'url' => 'monitoring/list/services',
+ 'priority' => 50
+));
+$section->add(N_('Servicegroups'), array(
+ 'icon' => 'services',
+ 'description' => $this->translate('List service groups'),
+ 'url' => 'monitoring/list/servicegroups',
+ 'priority' => 60
+));
+$section->add(N_('Hostgroups'), array(
+ 'icon' => 'host',
+ 'description' => $this->translate('List host groups'),
+ 'url' => 'monitoring/list/hostgroups',
+ 'priority' => 60
+));
+
+// Checking the permission here since navigation items don't support negating permissions
+$auth = Auth::getInstance();
+if ($auth->hasPermission('*') || ! $auth->hasPermission('no-monitoring/contacts')) {
+ $section->add(N_('Contacts'), array(
+ 'icon' => 'user',
+ 'description' => $this->translate('List contacts'),
+ 'url' => 'monitoring/list/contacts',
+ 'priority' => 70
+ ));
+ $section->add(N_('Contactgroups'), array(
+ 'icon' => 'users',
+ 'description' => $this->translate('List users'),
+ 'url' => 'monitoring/list/contactgroups',
+ 'priority' => 70
+ ));
+}
+
+$section->add(N_('Comments'), array(
+ 'icon' => 'chat-empty',
+ 'description' => $this->translate('List comments'),
+ 'url' => 'monitoring/list/comments?comment_type=comment|comment_type=ack',
+ 'priority' => 80
+));
+$section->add(N_('Downtimes'), array(
+ 'icon' => 'plug',
+ 'description' => $this->translate('List downtimes'),
+ 'url' => 'monitoring/list/downtimes',
+ 'priority' => 80
+));
+
+/*
+ * History Section
+ */
+$section = $this->menuSection(N_('History'), array(
+ 'icon' => 'history',
+ 'priority' => 90
+));
+$section->add(N_('Event Grid'), array(
+ 'icon' => 'history',
+ 'description' => $this->translate('Open event grid'),
+ 'priority' => 10,
+ 'url' => 'monitoring/list/eventgrid'
+));
+$section->add(N_('Event Overview'), array(
+ 'icon' => 'history',
+ 'description' => $this->translate('Open event overview'),
+ 'priority' => 20,
+ 'url' => 'monitoring/list/eventhistory?timestamp>=-7%20days'
+));
+$section->add(N_('Notifications'), array(
+ 'icon' => 'bell',
+ 'description' => $this->translate('List notifications'),
+ 'priority' => 30,
+ 'url' => 'monitoring/list/notifications?notification_timestamp>=-7%20days',
+));
+$section->add(N_('Timeline'), array(
+ 'icon' => 'clock',
+ 'description' => $this->translate('Open timeline'),
+ 'priority' => 40,
+ 'url' => 'monitoring/timeline'
+));
+
+/*
+ * Reporting Section
+ */
+$section = $this->menuSection(N_('Reporting'), array(
+ 'icon' => 'barchart',
+ 'priority' => 100
+));
+
+/*
+ * Current Incidents
+ */
+$dashboard = $this->dashboard(N_('Current Incidents'), array('priority' => 50));
+$dashboard->add(
+ N_('Service Problems'),
+ 'monitoring/list/services?service_problem=1&limit=10&sort=service_severity',
+ 100
+);
+$dashboard->add(
+ N_('Recently Recovered Services'),
+ 'monitoring/list/services?service_state=0&limit=10&sort=service_last_state_change&dir=desc',
+ 110
+);
+$dashboard->add(
+ N_('Host Problems'),
+ 'monitoring/list/hosts?host_problem=1&sort=host_severity',
+ 120
+);
+
+/*
+ * Overview
+ */
+//$dashboard = $this->dashboard(N_('Overview'), array('priority' => 60));
+//$dashboard->add(
+// N_('Service Grid'),
+// 'monitoring/list/servicegrid?limit=15,18'
+//);
+//$dashboard->add(
+// N_('Service Groups'),
+// 'monitoring/list/servicegroups'
+//);
+//$dashboard->add(
+// N_('Host Groups'),
+// 'monitoring/list/hostgroups'
+//);
+
+/*
+ * Most Overdue
+ */
+$dashboard = $this->dashboard(N_('Overdue'), array('priority' => 70));
+$dashboard->add(
+ N_('Late Host Check Results'),
+ 'monitoring/list/hosts?host_next_update<now',
+ 100
+);
+$dashboard->add(
+ N_('Late Service Check Results'),
+ 'monitoring/list/services?service_next_update<now',
+ 110
+);
+$dashboard->add(
+ N_('Acknowledgements Active For At Least Three Days'),
+ 'monitoring/list/comments?comment_type=Ack&comment_timestamp<-3 days&sort=comment_timestamp&dir=asc',
+ 120
+);
+$dashboard->add(
+ N_('Downtimes Active For More Than Three Days'),
+ 'monitoring/list/downtimes?downtime_is_in_effect=1&downtime_scheduled_start<-3%20days&sort=downtime_start&dir=asc',
+ 130
+);
+
+/*
+ * Muted Objects
+ */
+$dashboard = $this->dashboard(N_('Muted'), array('priority' => 80));
+$dashboard->add(
+ N_('Disabled Service Notifications'),
+ 'monitoring/list/services?service_notifications_enabled=0&limit=10',
+ 100
+);
+$dashboard->add(
+ N_('Disabled Host Notifications'),
+ 'monitoring/list/hosts?host_notifications_enabled=0&limit=10',
+ 110
+);
+$dashboard->add(
+ N_('Disabled Service Checks'),
+ 'monitoring/list/services?service_active_checks_enabled=0&limit=10',
+ 120
+);
+$dashboard->add(
+ N_('Disabled Host Checks'),
+ 'monitoring/list/hosts?host_active_checks_enabled=0&limit=10',
+ 130
+);
+$dashboard->add(
+ N_('Acknowledged Problem Services'),
+ 'monitoring/list/services?service_acknowledgement_type!=0&service_problem=1&sort=service_state&limit=10',
+ 140
+);
+$dashboard->add(
+ N_('Acknowledged Problem Hosts'),
+ 'monitoring/list/hosts?host_acknowledgement_type!=0&host_problem=1&sort=host_severity&limit=10',
+ 150
+);
+
+/*
+ * Activity Stream
+ */
+//$dashboard = $this->dashboard(N_('Activity Stream'), array('priority' => 90));
+//$dashboard->add(
+// N_('Recent Events'),
+// 'monitoring/list/eventhistory?timestamp>=-3%20days&sort=timestamp&dir=desc&limit=8'
+//);
+//$dashboard->add(
+// N_('Recent Hard State Changes'),
+// 'monitoring/list/eventhistory?timestamp>=-3%20days&type=hard_state&sort=timestamp&dir=desc&limit=8'
+//);
+//$dashboard->add(
+// N_('Recent Notifications'),
+// 'monitoring/list/eventhistory?timestamp>=-3%20days&type=notify&sort=timestamp&dir=desc&limit=8'
+//);
+//$dashboard->add(
+// N_('Downtimes Recently Started'),
+// 'monitoring/list/eventhistory?timestamp>=-3%20days&type=dt_start&sort=timestamp&dir=desc&limit=8'
+//);
+//$dashboard->add(
+// N_('Downtimes Recently Ended'),
+// 'monitoring/list/eventhistory?timestamp>=-3%20days&type=dt_end&sort=timestamp&dir=desc&limit=8'
+//);
+
+/*
+ * Stats
+ */
+//$dashboard = $this->dashboard(N_('Stats'), array('priority' => 99));
+//$dashboard->add(
+// N_('Check Stats'),
+// 'monitoring/health/stats'
+//);
+//$dashboard->add(
+// N_('Process Information'),
+// 'monitoring/health/info'
+//);
+
+/*
+ * CSS
+ */
+$this->provideCssFile('service-grid.less');
+$this->provideCssFile('tables.less');