getExternalParam('autoclean'); $arrResult = $this->_getMonitorStatusData($strService); if ($intClean){ $this->_getCleanMonitorStatusData($strService, $intClean); } return $arrResult; } /** * This method returns array containing monitor status data * * @method _getMonitorStatusData * @param $strService * @return array * @access private */ private function _getMonitorStatusData($strService = '') { $sGroupBy = '%Y-%m-%d %H:%i:%s'; $oObservation = CS::getRecord('Monitorobservation'); $iLastHours = 0.1; $sQuery = '' . 'Select ' . 'date_format(Timestamp, "' . $sGroupBy . '") as Date, ' . 'max(Value) as Val, ' . 'min(ValueWarning) as WaVal, ' . 'min(ValueCritical) as CrVal, ' . 'max(State) as State, ' . 'Unit ,' . 'Service,' . 'REPLACE (ObserverPlugin, \'Observer\', \'\') as Plugin ' . 'From ' . $oObservation->getClassName() . ' mos INNER JOIN ' . CS::getTablePrefix() . 'Monitorobserver mo ON mo.MonitorobserverID = mos.MonitorobserverID ' . 'Where 1=1 ' . 'and (TIMESTAMPDIFF(HOUR, Timestamp, Now()) < ' . $iLastHours . ') ' . (($strService) ? ' and service like (\''.$strService.'.%\') ' : ' ') . 'Group By date, service order by Timestamp asc;'; $aLogs = CS::queryValue($sQuery); $aRet = array(); foreach ($aLogs as $aLog) { list($strVendor, $strService) = explode('.', $aLog['Service']); if (!$strService) { $strService = $strVendor; $strVendor = 'Core'; } if (is_numeric($aLog['Value'])) $aLog['Value'] = (float) $aLog['Value']; if (!$aLog['Service']) continue; $aLog['Plugin'] = str_replace ('CS18', '', $aLog['Plugin']); $aRet[$strVendor][$aLog['Plugin']][ucfirst(strtolower($strService))] = $aLog; } return array('CS' => $aRet); } /** * This method returns array containing monitor status data * * @method _getMonitorStatusData * @param $sServices * @return array * @access private */ private function _getCleanMonitorStatusData($strService, $intClean) { if (!$intClean) return false; $oObservation = CS::getRecord('Monitorobservation'); $sQuery = '' . 'DELETE ' . 'FROM ' . $oObservation->getClassName() . ' ' . "WHERE Timestamp < '".date("Y-m-d H:i:s", mktime()-24*3600*$intClean)."'" . (($strService) ? ' and service like (\''.$strService.'.%\') ' : ' '); Database::query($sQuery); return true; } }