From e7d117e1b6e321d8d898bbee4c5a79dd3f2fb24f Mon Sep 17 00:00:00 2001 From: Marc DeTrano Date: Thu, 4 Jan 2018 09:09:35 -0600 Subject: [PATCH] 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 @@ +