diff --git a/public/include/classes/monitoring.class.php b/public/include/classes/monitoring.class.php index 4a70e0d6..182e3100 100644 --- a/public/include/classes/monitoring.class.php +++ b/public/include/classes/monitoring.class.php @@ -10,14 +10,24 @@ class Monitoring extends Base { } public function storeUptimeRobotStatus() { - if ($api_key = $this->setting->getValue('monitoring_uptimerobot_private_key')) { + if ($api_keys = $this->setting->getValue('monitoring_uptimerobot_private_key')) { + $aJSONData = array(); $url = 'http://api.uptimerobot.com'; - $target = '/getMonitors?apiKey=' . $api_key . '&format=json&noJsonCallback=1&customUptimeRatio=1&logs=1'; - if (!$json = json_encode($this->tools->getApi($url, $target))) { - $this->setErrorMessage('Failed to run API call: ' . $this->tools->getError()); - return false; + $aMonitors = explode(',', $api_keys); + foreach ($aMonitors as $aData) { + $temp = explode('|', $aData); + $aMonitor['api_key'] = $temp[0]; + $aMonitor['monitor_id'] = $temp[1]; + $target = '/getMonitors?apiKey=' . $aMonitor['api_key'] . '&monitors=' . $aMonitor['monitor_id'] . '&format=json&noJsonCallback=1&customUptimeRatio=1-7-30&logs=1'; + if (!$aMonitorStatus = $this->tools->getApi($url, $target)) { + $this->setErrorMessage('Failed to run API call: ' . $this->tools->getError()); + return false; + } + $aMonitorStatus['monitors']['monitor'][0]['customuptimeratio'] = explode('-', $aMonitorStatus['monitors']['monitor'][0]['customuptimeratio']); + var_dump($aMonitorStatus['monitors']['monitor'][0]); + $aAllMonitorsStatus[] = $aMonitorStatus['monitors']['monitor'][0]; } - if (!$this->setting->setValue('monitoring_uptimerobot_status', $json) || !$this->setting->setValue('monitoring_uptimerobot_lastcheck', time())) { + if (!$this->setting->setValue('monitoring_uptimerobot_status', json_encode($aAllMonitorsStatus)) || !$this->setting->setValue('monitoring_uptimerobot_lastcheck', time())) { $this->setErrorMessage('Failed to store uptime status: ' . $setting->getError()); } } diff --git a/public/include/config/admin_settings.inc.php b/public/include/config/admin_settings.inc.php index f9f7df3b..c8720974 100644 --- a/public/include/config/admin_settings.inc.php +++ b/public/include/config/admin_settings.inc.php @@ -259,9 +259,9 @@ $aSettings['recaptcha'][] = array( $aSettings['monitoring'][] = array( 'display' => 'Uptime Robot Private API Key', 'type' => 'text', 'size' => 25, - 'default' => 'MAIN_API_KEY', + 'default' => '|,|, ...', 'name' => 'monitoring_uptimerobot_private_key', 'value' => $setting->getValue('monitoring_uptimerobot_private_key'), - 'tooltip' => 'Your private key. You can find it in your account as the Main API Key.' + 'tooltip' => 'Create per-monitor API keys and save them here to propagate your uptime statistics.' ); ?> diff --git a/public/templates/mmcFE/statistics/uptime/default.tpl b/public/templates/mmcFE/statistics/uptime/default.tpl index 6e53dbe2..81c2ce76 100644 --- a/public/templates/mmcFE/statistics/uptime/default.tpl +++ b/public/templates/mmcFE/statistics/uptime/default.tpl @@ -4,22 +4,32 @@ - - - - - + + + + + + + + + + + + -{foreach key=key item=item from=$STATUS.monitors.monitor} +{foreach key=key item=item from=$STATUS} {assign var=node value="."|explode:$item.friendlyname} - - - - - + + + + + + + + {/foreach} @@ -29,10 +39,7 @@ diff --git a/public/templates/mpos/statistics/uptime/default.tpl b/public/templates/mpos/statistics/uptime/default.tpl index 39b1e808..0de8c82f 100644 --- a/public/templates/mpos/statistics/uptime/default.tpl +++ b/public/templates/mpos/statistics/uptime/default.tpl @@ -9,18 +9,28 @@ - + + + + + + + + -{foreach key=key item=item from=$STATUS.monitors.monitor} +{foreach key=key item=item from=$STATUS} {assign var=node value="."|explode:$item.friendlyname} - + + + + {/foreach} @@ -33,10 +43,7 @@
LocationServiceState SinceStatusUptimeLocationServiceState SinceStatusUptime
DayWeekMonthAll Time
{$node.1}{$item.log.1.datetime|date_format:"%b %d, %Y %H:%M"}{$CODES[$item.status]}{$node.1}{$item.log.1.datetime|date_format:"%b %d, %Y %H:%M"}{$CODES[$item.status]}
Service Status Status SinceUptimeUptime
DayWeekMonthAll Time
{$node.1} {$CODES[$item.status]} {$item.log.1.datetime|date_format:"%b %d, %Y %H:%M"}