function handle($queue, Scalr_Messaging_Msg $message, $rawMessage) { $dbserver = DBServer::LoadByID($message->getServerId()); if ($message instanceof Scalr_Messaging_Msg_ExecScriptResult) { try { $this->db->Execute("INSERT DELAYED INTO scripting_log SET \n\t\t\t\t\tfarmid = ?,\n\t\t\t\t\tserver_id = ?, \n\t\t\t\t\tevent = ?,\n\t\t\t\t\tmessage = ?, \n\t\t\t\t\tdtadded = NOW() \n\t\t\t\t", array($dbserver->farmId, $message->getServerId(), $message->eventName, sprintf("Script '%s' execution result (Time: %s s, Exit code: %s). %s %s", $message->scriptName, round($message->timeElapsed, 2), $message->returnCode, base64_decode($message->stderr), base64_decode($message->stdout)))); if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->SetProperty(SERVER_PROPERTIES::SZR_VESION, $message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } } catch (Exception $e) { $this->logger->warn($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_Log) { foreach ($message->entries as $entry) { try { $this->db->Execute("INSERT DELAYED INTO logentries SET \n\t\t\t\t\t\tserverid = ?, \n\t\t\t\t\t\tmessage = ?, \n\t\t\t\t\t\tseverity = ?, \n\t\t\t\t\t\ttime = ?, \n\t\t\t\t\t\tsource = ?, \n\t\t\t\t\t\tfarmid = ?\n\t\t\t\t\t", array($message->getServerId(), $entry->msg, self::$severityCodes[$entry->level], time(), $entry->name, $dbserver->farmId)); if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->SetProperty(SERVER_PROPERTIES::SZR_VESION, $message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } } catch (Exception $e) { $this->logger->error($e->getMessage()); } } } elseif ($message instanceof Scalr_Messaging_Msg_RebundleLog) { try { $this->db->Execute("INSERT INTO bundle_task_log SET \n\t\t\t\t\tbundle_task_id = ?,\n\t\t\t\t\tdtadded = NOW(),\n\t\t\t\t\tmessage = ?\n\t\t\t\t", array($message->bundleTaskId, $message->message)); } catch (Exception $e) { $this->logger->error($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_DeployLog) { try { $this->db->Execute("INSERT INTO dm_deployment_task_logs SET \n\t\t\t\t\t`dm_deployment_task_id` = ?,\n\t\t\t\t\t`dtadded` = NOW(),\n\t\t\t\t\t`message` = ?\n\t\t\t\t", array($message->deployTaskId, $message->message)); } catch (Exception $e) { } } elseif ($message instanceof Scalr_Messaging_Msg_OperationDefinition) { try { if ($message->name == 'Execute scripts') { return; } $this->db->Execute("INSERT INTO server_operations SET \n\t\t\t\t\t`id` = ?,\n\t\t\t\t\t`server_id` = ?,\n\t\t\t\t\t`timestamp` = ?,\n\t\t\t\t\t`status`\t= ?,\n\t\t\t\t\t`name` = ?,\n\t\t\t\t\t`phases` = ?\n\t\t\t\t", array($message->id, $dbserver->serverId, time(), 'running', $message->name, json_encode($message->phases))); } catch (Exception $e) { } } elseif ($message instanceof Scalr_Messaging_Msg_OperationProgress) { try { if ($message->warning) { $msg = $message->warning->message; $trace = $message->warning->trace; $handler = $message->warning->handler; } $this->db->Execute("INSERT INTO server_operation_progress SET \n\t\t\t\t\t`operation_id` = ?,\n\t\t\t\t\t`timestamp` = ?,\n\t\t\t\t\t`phase` = ?,\n\t\t\t\t\t`step` = ?,\n\t\t\t\t\t`status` = ?,\n\t\t\t\t\t`message`= ?,\n\t\t\t\t\t`trace` = ?,\n\t\t\t\t\t`handler` = ?,\n\t\t\t\t\t`progress` = ?,\n\t\t\t\t\t`stepno` = ? \n\t\t\t\t\tON DUPLICATE KEY UPDATE status = ?, progress = ?, trace = ?, handler = ?, message = ?\n\t\t\t\t", array($message->id, $message->getTimestamp(), $message->phase, $message->step, $message->status, $msg, $trace, $handler, $message->progress, $message->stepno, $message->status, $message->progress, $trace, $handler, $msg)); } catch (Exception $e) { } } }
function handle($queue, Scalr_Messaging_Msg $message, $rawMessage) { $this->logger->info(sprintf("Received message '%s' from server '%s'", $message->getName(), $message->getServerId())); try { $this->db->Execute("INSERT INTO messages SET\n\t\t\t\tmessageid = ?,\n\t\t\t\tmessage = ?,\n\t\t\t\tserver_id = ?,\n\t\t\t\tdtlasthandleattempt = NOW(),\n\t\t\t\ttype = ?,\n\t\t\t\tisszr = ?\n\t\t\t", array($message->messageId, $rawMessage, $message->getServerId(), "in", 1)); } catch (Exception $e) { // Message may be already delivered. // urlopen issue on scalarizr side: // QueryEnvError: <urlopen error [Errno 4] Interrupted system call> if (strpos($e->getMessage(), 'Duplicate entry') === false) { throw $e; } } }
function handle($queue, Scalr_Messaging_Msg $message, $rawMessage, $type = 'xml') { $this->logger->info(sprintf("Received message '%s' from server '%s'", $message->getName(), $message->getServerId())); try { $this->db->Execute("INSERT INTO messages SET\n messageid = ?,\n message = ?,\n server_id = ?,\n dtadded = NOW(),\n type = ?,\n ipaddress = ?,\n message_name = ?,\n message_format = ?\n ", array($message->messageId, $rawMessage, $message->getServerId(), "in", $_SERVER['REMOTE_ADDR'], $message->getName(), $type)); } catch (Exception $e) { // Message may be already delivered. // urlopen issue on scalarizr side: // QueryEnvError: <urlopen error [Errno 4] Interrupted system call> if (strpos($e->getMessage(), 'Duplicate entry') === false) { throw $e; } } }
function handle($queue, Scalr_Messaging_Msg $message, $rawMessage) { $dbserver = DBServer::LoadByID($message->getServerId()); if ($message instanceof Scalr_Messaging_Msg_ExecScriptResult) { try { $storage = \Scalr::config('scalr.system.scripting.logs_storage'); if (!$message->executionId || $storage == 'scalr') { $msg = sprintf("STDERR: %s \n\n STDOUT: %s", base64_decode($message->stderr), base64_decode($message->stdout)); } if ($message->scriptPath) { $name = stristr($message->scriptPath, '/usr/local/bin/scalr-scripting') ? $message->scriptName : $message->scriptPath; } else { $name = $message->scriptName; } $this->db->Execute("INSERT DELAYED INTO scripting_log SET\n farmid = ?,\n server_id = ?,\n event = ?,\n message = ?,\n dtadded = NOW(),\n script_name = ?,\n event_server_id = ?,\n exec_time = ?,\n exec_exitcode = ?,\n event_id = ?,\n execution_id = ?,\n run_as = ?\n ", array($dbserver->farmId, $message->getServerId(), $message->eventName, $msg, $name, $message->eventServerId, round($message->timeElapsed, 2), $message->returnCode, $message->eventId, $message->executionId, $message->runAs)); if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } if ($message->eventId) { $updateTotal = ''; if ($message->returnCode == 130) { $field = 'scripts_timedout'; } elseif ($message->returnCode != 0) { $field = 'scripts_failed'; } else { $field = 'scripts_completed'; } if (stristr($name, '[Scalr built-in]')) { $updateTotal = ', `scripts_total` = `scripts_total`+1'; } $this->db->Execute("UPDATE events SET `{$field}` = `{$field}`+1 {$updateTotal} WHERE event_id = ?", array($message->eventId)); } } catch (Exception $e) { $this->logger->fatal($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_Log) { try { if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } } catch (Exception $e) { } foreach ($message->entries as $entry) { try { if (self::$severityCodes[$entry->level] < 3) { continue; } $tm = date('YmdH'); $hash = md5("{$message->getServerId()}:{$entry->msg}:{$dbserver->farmId}:{$entry->name}:{$tm}", true); $this->db->Execute("INSERT DELAYED INTO logentries SET\n `id` = ?,\n `serverid` = ?,\n `message` = ?,\n `severity` = ?,\n `time` = ?,\n `source` = ?,\n `farmid` = ?\n ON DUPLICATE KEY UPDATE cnt = cnt + 1, `time` = ?\n ", array($hash, $message->getServerId(), $entry->msg, self::$severityCodes[$entry->level], time(), $entry->name, $dbserver->farmId, time())); } catch (Exception $e) { $this->logger->error($e->getMessage()); } } } elseif ($message instanceof Scalr_Messaging_Msg_RebundleLog) { try { $this->db->Execute("INSERT INTO bundle_task_log SET\n bundle_task_id = ?,\n dtadded = NOW(),\n message = ?\n ", array($message->bundleTaskId, $message->message)); } catch (Exception $e) { $this->logger->error($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_DeployLog) { try { $this->db->Execute("INSERT INTO dm_deployment_task_logs SET\n `dm_deployment_task_id` = ?,\n `dtadded` = NOW(),\n `message` = ?\n ", array($message->deployTaskId, $message->message)); } catch (Exception $e) { } } }
function handle($queue, Scalr_Messaging_Msg $message, $rawMessage) { $dbserver = DBServer::LoadByID($message->getServerId()); if ($message instanceof Scalr_Messaging_Msg_ExecScriptResult) { try { $storage = \Scalr::config('scalr.system.scripting.logs_storage'); if (!$message->executionId || $storage == 'scalr') { $msg = sprintf("STDERR: %s \n\n STDOUT: %s", base64_decode($message->stderr), base64_decode($message->stdout)); } if ($message->scriptPath) { $name = stristr($message->scriptPath, '/usr/local/bin/scalr-scripting') ? $message->scriptName : $message->scriptPath; } else { $name = $message->scriptName; } $this->db->Execute("INSERT DELAYED INTO scripting_log SET\n farmid = ?,\n server_id = ?,\n event = ?,\n message = ?,\n dtadded = NOW(),\n script_name = ?,\n event_server_id = ?,\n exec_time = ?,\n exec_exitcode = ?,\n event_id = ?,\n execution_id = ?,\n run_as = ?\n ", array($dbserver->farmId, $message->getServerId(), $message->eventName, $msg, $name, $message->eventServerId, round($message->timeElapsed, 2), $message->returnCode, $message->eventId, $message->executionId, $message->runAs)); if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } } catch (Exception $e) { $this->logger->fatal($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_Log) { try { if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } } catch (Exception $e) { } foreach ($message->entries as $entry) { try { if (self::$severityCodes[$entry->level] < 3) { continue; } $tm = date('YmdH'); $hash = md5("{$message->getServerId()}:{$entry->msg}:{$dbserver->farmId}:{$entry->name}:{$tm}", true); $this->db->Execute("INSERT DELAYED INTO logentries SET\n `id` = ?,\n `serverid` = ?,\n `message` = ?,\n `severity` = ?,\n `time` = ?,\n `source` = ?,\n `farmid` = ?\n ON DUPLICATE KEY UPDATE cnt = cnt + 1, `time` = ?\n ", array($hash, $message->getServerId(), $entry->msg, self::$severityCodes[$entry->level], time(), $entry->name, $dbserver->farmId, time())); } catch (Exception $e) { $this->logger->error($e->getMessage()); } } } elseif ($message instanceof Scalr_Messaging_Msg_RebundleLog) { try { $this->db->Execute("INSERT INTO bundle_task_log SET\n bundle_task_id = ?,\n dtadded = NOW(),\n message = ?\n ", array($message->bundleTaskId, $message->message)); } catch (Exception $e) { $this->logger->error($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_DeployLog) { try { $this->db->Execute("INSERT INTO dm_deployment_task_logs SET\n `dm_deployment_task_id` = ?,\n `dtadded` = NOW(),\n `message` = ?\n ", array($message->deployTaskId, $message->message)); } catch (Exception $e) { } } /*elseif ($message instanceof Scalr_Messaging_Msg_OperationDefinition) { try { if ($message->name == 'Execute scripts') return; $this->db->Execute("INSERT INTO server_operations SET `id` = ?, `server_id` = ?, `timestamp` = ?, `status` = ?, `name` = ?, `phases` = ? ", array( $message->id, $dbserver->serverId, time(), 'running', $message->name, json_encode($message->phases) )); } catch (Exception $e) {} } elseif ($message instanceof Scalr_Messaging_Msg_OperationProgress) { try { $opName = $this->db->GetOne("SELECT name FROM server_operations WHERE id = ? LIMIT 1", array($message->id)); if (!$opName || ($opName != 'Initialization' && $opName != 'Grow MySQL/Percona data volume')) return; if ($message->warning) { $msg = $message->warning->message; $trace = $message->warning->trace; $handler = $message->warning->handler; } $this->db->Execute("INSERT INTO server_operation_progress SET `operation_id` = ?, `timestamp` = ?, `phase` = ?, `step` = ?, `status` = ?, `message`= ?, `trace` = ?, `handler` = ?, `progress` = ?, `stepno` = ? ON DUPLICATE KEY UPDATE status = ?, progress = ?, trace = ?, handler = ?, message = ? ", array( $message->id, $message->getTimestamp(), $message->phase, $message->step, $message->status, $msg, $trace, $handler, $message->progress, $message->stepno, // $message->status, $message->progress, $trace, $handler, $msg )); } catch (Exception $e) {} }*/ }
function handle($queue, Scalr_Messaging_Msg $message, $rawMessage) { $dbserver = DBServer::LoadByID($message->getServerId()); $msg = ''; if ($message instanceof Scalr_Messaging_Msg_ExecScriptResult) { try { $storage = \Scalr::config('scalr.system.scripting.logs_storage'); if (!$message->executionId || $storage == 'scalr') { $msg = sprintf("STDERR: %s \n\n STDOUT: %s", base64_decode($message->stderr), base64_decode($message->stdout)); } if ($message->scriptPath) { $name = stristr($message->scriptPath, 'C:\\Windows\\TEMP\\scalr-scripting') || stristr($message->scriptPath, '/usr/local/bin/scalr-scripting') || preg_match('/fatmouse-agent\\/tasks\\/[^\\/]+\\/[^\\/]+\\/bin/', $message->scriptPath) ? $message->scriptName : $message->scriptPath; } else { $name = $message->scriptName; } $log = new OrchestrationLog(); if (strpos($message->eventName, 'Scheduler (TaskID: ') === 0) { $type = OrchestrationLog::TYPE_SCHEDULER; $log->taskId = filter_var($message->eventName, FILTER_SANITIZE_NUMBER_INT); } else { if ($message->eventName == 'Manual') { $type = OrchestrationLog::TYPE_MANUAL; } else { $type = OrchestrationLog::TYPE_EVENT; } } $log->farmId = $dbserver->farmId; $log->serverId = $message->getServerId(); $log->type = $type; $log->message = $msg; $log->added = new DateTime('now'); $log->scriptName = $name; $log->execTime = round($message->timeElapsed, 2); $log->execExitCode = $message->returnCode; $log->eventId = $message->eventId; $log->eventServerId = $message->eventServerId; $log->executionId = $message->executionId; $log->runAs = $message->runAs; $log->save(); if ($type === OrchestrationLog::TYPE_MANUAL) { $logManual = OrchestrationLogManualScript::findOne([['executionId' => $message->executionId], ['serverId' => $message->getServerId()]]); /* @var $logManual OrchestrationLogManualScript */ if ($logManual && empty($logManual->orchestrationLogId)) { $logManual->orchestrationLogId = $log->id; $logManual->save(); } } if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } if ($message->eventId) { $updateTotal = ''; if ($message->returnCode == 130) { $field = 'scripts_timedout'; } elseif ($message->returnCode != 0) { $field = 'scripts_failed'; } else { $field = 'scripts_completed'; } if (stristr($name, '[Scalr built-in]')) { $updateTotal = ', `scripts_total` = `scripts_total`+1'; } $this->db->Execute("UPDATE events SET `{$field}` = `{$field}`+1 {$updateTotal} WHERE event_id = ?", [$message->eventId]); } } catch (Exception $e) { $this->logger->fatal($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_Log) { try { if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } } catch (Exception $e) { } foreach ($message->entries as $entry) { if (self::$severityCodes[$entry->level] < 3) { continue; } $level = $entry->level === "WARNING" ? "warn" : strtolower($entry->level); \Scalr::getContainer()->logger($entry->name)->{$level}(new FarmLogMessage($dbserver, !empty($entry->msg) ? $entry->msg : null)); } } elseif ($message instanceof Scalr_Messaging_Msg_RebundleLog) { try { $this->db->Execute("INSERT INTO bundle_task_log SET\n bundle_task_id = ?,\n dtadded = NOW(),\n message = ?\n ", [$message->bundleTaskId, $message->message]); } catch (Exception $e) { $this->logger->error($e->getMessage()); } } }
function handle($queue, Scalr_Messaging_Msg $message, $rawMessage) { $dbserver = DBServer::LoadByID($message->getServerId()); $msg = ''; if ($message instanceof Scalr_Messaging_Msg_ExecScriptResult) { try { $storage = \Scalr::config('scalr.system.scripting.logs_storage'); if (!$message->executionId || $storage == 'scalr') { $msg = sprintf("STDERR: %s \n\n STDOUT: %s", base64_decode($message->stderr), base64_decode($message->stdout)); } if ($message->scriptPath) { $name = stristr($message->scriptPath, '/usr/local/bin/scalr-scripting') || preg_match('/fatmouse-agent\\/tasks\\/[^\\/]+\\/[^\\/]+\\/bin/', $message->scriptPath) ? $message->scriptName : $message->scriptPath; } else { $name = $message->scriptName; } $this->db->Execute("INSERT INTO scripting_log SET\n farmid = ?,\n server_id = ?,\n event = ?,\n message = ?,\n dtadded = NOW(),\n script_name = ?,\n event_server_id = ?,\n exec_time = ?,\n exec_exitcode = ?,\n event_id = ?,\n execution_id = ?,\n run_as = ?\n ", array($dbserver->farmId, $message->getServerId(), $message->eventName, $msg, $name, $message->eventServerId, round($message->timeElapsed, 2), $message->returnCode, $message->eventId, $message->executionId, $message->runAs)); if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } if ($message->eventId) { $updateTotal = ''; if ($message->returnCode == 130) { $field = 'scripts_timedout'; } elseif ($message->returnCode != 0) { $field = 'scripts_failed'; } else { $field = 'scripts_completed'; } if (stristr($name, '[Scalr built-in]')) { $updateTotal = ', `scripts_total` = `scripts_total`+1'; } $this->db->Execute("UPDATE events SET `{$field}` = `{$field}`+1 {$updateTotal} WHERE event_id = ?", array($message->eventId)); } } catch (Exception $e) { $this->logger->fatal($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_Log) { try { if ($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]) { DBServer::LoadByID($message->getServerId())->setScalarizrVersion($message->meta[Scalr_Messaging_MsgMeta::SZR_VERSION]); } } catch (Exception $e) { } foreach ($message->entries as $entry) { if (self::$severityCodes[$entry->level] < 3) { continue; } $level = $entry->level === "WARNING" ? "warn" : strtolower($entry->level); \Scalr::getContainer()->logger($entry->name)->{$level}(new FarmLogMessage($dbserver->farmId, $entry->msg, $message->getServerId())); } } elseif ($message instanceof Scalr_Messaging_Msg_RebundleLog) { try { $this->db->Execute("INSERT INTO bundle_task_log SET\n bundle_task_id = ?,\n dtadded = NOW(),\n message = ?\n ", array($message->bundleTaskId, $message->message)); } catch (Exception $e) { $this->logger->error($e->getMessage()); } } elseif ($message instanceof Scalr_Messaging_Msg_DeployLog) { try { $this->db->Execute("INSERT INTO dm_deployment_task_logs SET\n `dm_deployment_task_id` = ?,\n `dtadded` = NOW(),\n `message` = ?\n ", array($message->deployTaskId, $message->message)); } catch (Exception $e) { } } }