From e7d117e1b6e321d8d898bbee4c5a79dd3f2fb24f Mon Sep 17 00:00:00 2001 From: Marc DeTrano Date: Thu, 4 Jan 2018 09:09:35 -0600 Subject: [PATCH 1/4] Improve Eventgrid performance by limititing query time range, and only querying for hosts or services as requested in the form. --- .../application/controllers/ListController.php | 5 ++++- .../Backend/Ido/Query/EventgridhostsQuery.php | 16 ++++++++++++++++ .../Backend/Ido/Query/EventgridservicesQuery.php | 16 ++++++++++++++++ .../Monitoring/DataView/Eventgridhosts.php | 7 +++++++ .../Monitoring/DataView/Eventgridservices.php | 7 +++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridhostsQuery.php create mode 100644 modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php create mode 100644 modules/monitoring/library/Monitoring/DataView/Eventgridhosts.php create mode 100644 modules/monitoring/library/Monitoring/DataView/Eventgridservices.php diff --git a/modules/monitoring/application/controllers/ListController.php b/modules/monitoring/application/controllers/ListController.php index 4bbb39fb5..51cb56550 100644 --- a/modules/monitoring/application/controllers/ListController.php +++ b/modules/monitoring/application/controllers/ListController.php @@ -361,13 +361,16 @@ class ListController extends Controller ); $orientationBox->applyRequest($this->getRequest()); */ + $objectType = $this->getParam('objecttype', 'services'); + $from = date('c', $this->getParam('from', strtotime('midnight 3 months ago'))); $query = $this->backend->select()->from( - 'eventgrid', + 'eventgrid' . $objectType, array('day', $form->getValue('state')) ); $this->params->remove(array('objecttype', 'from', 'to', 'state', 'btn_submit')); $this->view->filter = Filter::fromQuerystring((string) $this->params); $query->applyFilter($this->view->filter); + $query->applyFilter(Filter::fromQuerystring('timestamp >= ' . $from)); $this->applyRestriction('monitoring/filter/objects', $query); $this->view->summary = $query; $this->view->column = $form->getValue('state'); diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridhostsQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridhostsQuery.php new file mode 100644 index 000000000..62d92e4b0 --- /dev/null +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridhostsQuery.php @@ -0,0 +1,16 @@ +fetchHistoryColumns = true; + $this->requireVirtualTable('hosts'); + } +} diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php new file mode 100644 index 000000000..e291bba46 --- /dev/null +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php @@ -0,0 +1,16 @@ +fetchHistoryColumns = true; + $this->requireVirtualTable('services'); + } +} diff --git a/modules/monitoring/library/Monitoring/DataView/Eventgridhosts.php b/modules/monitoring/library/Monitoring/DataView/Eventgridhosts.php new file mode 100644 index 000000000..9d9acc9e5 --- /dev/null +++ b/modules/monitoring/library/Monitoring/DataView/Eventgridhosts.php @@ -0,0 +1,7 @@ + Date: Wed, 22 May 2019 13:28:24 -0600 Subject: [PATCH 2/4] Update modules/monitoring/application/controllers/ListController.php Use form value for from, as suggested Co-Authored-By: Jennifer Mourek --- modules/monitoring/application/controllers/ListController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/monitoring/application/controllers/ListController.php b/modules/monitoring/application/controllers/ListController.php index 51cb56550..3c04d8d1f 100644 --- a/modules/monitoring/application/controllers/ListController.php +++ b/modules/monitoring/application/controllers/ListController.php @@ -362,7 +362,7 @@ class ListController extends Controller $orientationBox->applyRequest($this->getRequest()); */ $objectType = $this->getParam('objecttype', 'services'); - $from = date('c', $this->getParam('from', strtotime('midnight 3 months ago'))); + $from = $form->getValue('from'); $query = $this->backend->select()->from( 'eventgrid' . $objectType, array('day', $form->getValue('state')) From 2ecfcd2860537e4a0ec8d8558646cabeb692aa28 Mon Sep 17 00:00:00 2001 From: mdetrano Date: Wed, 22 May 2019 13:28:47 -0600 Subject: [PATCH 3/4] Update modules/monitoring/application/controllers/ListController.php use form value for object type, as suggested Co-Authored-By: Jennifer Mourek --- modules/monitoring/application/controllers/ListController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/monitoring/application/controllers/ListController.php b/modules/monitoring/application/controllers/ListController.php index 3c04d8d1f..c0d8ad03b 100644 --- a/modules/monitoring/application/controllers/ListController.php +++ b/modules/monitoring/application/controllers/ListController.php @@ -361,7 +361,7 @@ class ListController extends Controller ); $orientationBox->applyRequest($this->getRequest()); */ - $objectType = $this->getParam('objecttype', 'services'); + $objectType = $form->getValue('objecttype'); $from = $form->getValue('from'); $query = $this->backend->select()->from( 'eventgrid' . $objectType, From c05d15c4272d7229d5bb4f9b16072e5a1af80b75 Mon Sep 17 00:00:00 2001 From: mdetrano Date: Wed, 22 May 2019 13:29:12 -0600 Subject: [PATCH 4/4] Update modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php extra line fixup, as suggested Co-Authored-By: Jennifer Mourek --- .../Monitoring/Backend/Ido/Query/EventgridservicesQuery.php | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php index e291bba46..424de45a1 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/EventgridservicesQuery.php @@ -4,7 +4,6 @@ namespace Icinga\Module\Monitoring\Backend\Ido\Query; class EventgridservicesQuery extends EventgridQuery { - /** * Join history related columns and tables, services only */