public function createEvent(Request $request, $payload)
 {
     // @todo not sure if the clean process is needed anymore
     $cleanPayload = preg_replace("^\${(.*)}^", '""', $payload);
     $newEvent = json_decode($cleanPayload);
     $event = new RawEvent();
     $identifier = "appDynamics_" . $newEvent->event->application->id . '_';
     // appD . application . healthrule
     if ($newEvent->event->healthRuleEvent == "true") {
         $identifier .= $newEvent->event->healthRule->id;
         $event->setUnique(false);
     } else {
         $identifier .= $newEvent->event->incident->id;
         $event->setUnique(true);
     }
     $event->setIdentifier($identifier);
     $event->setMessage($newEvent->event->summaryMessage);
     if (in_array($newEvent->event->eventType, $this->successStatus)) {
         $event->setStatus(Event::STATUS_SUCCESS);
     } else {
         $event->setStatus(Event::STATUS_FAILURE);
     }
     $event->setSystem($this->translate($newEvent->event->application->name));
     $event->setType("AppDynamics");
     $event->setUrl($newEvent->event->deepLink);
     return $event;
 }
 public function createEvent(Request $request, $payload)
 {
     $newEvent = json_decode($payload);
     $issue = $newEvent->issue;
     $message = $issue->fields->summary;
     $project = $issue->fields->project->key;
     $jiraStatus = $issue->fields->status->name;
     $identifier = "jira_" . $issue->key;
     if (in_array($jiraStatus, $this->successStates)) {
         $status = Event::STATUS_SUCCESS;
     } else {
         $status = Event::STATUS_FAILURE;
     }
     $event = new RawEvent();
     $event->setIdentifier($identifier);
     $event->setMessage($message);
     $event->setSystem($project);
     $event->setStatus($status);
     $parts = parse_url($issue->self);
     $url = $parts["scheme"] . "://" . $parts["host"] . "/browse/" . $newEvent->issue->key;
     $event->setUrl($url);
     $event->setUnique(true);
     $event->setType("jira");
     return $event;
 }
 public function createEvent(Request $request, $payload)
 {
     $newEvent = json_decode($payload);
     if ($newEvent->current_state == self::STATUS_SUCCESS) {
         $status = Event::STATUS_FAILURE;
     } else {
         $status = Event::STATUS_SUCCESS;
     }
     $event = new RawEvent();
     $event->setStatus($status);
     $event->setIdentifier("newrelic_" . $newEvent->policy_name . "_" . $this->translate($newEvent->targets[0]->name));
     $event->setMessage($newEvent->details);
     $event->setSystem($this->translate($newEvent->targets[0]->name));
     $event->setUrl($newEvent->incident_url);
     $event->setType("newrelic");
     $event->setUnique(true);
     return $event;
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->getContainer()->get('doctrine')->getManager();
     $tools = $em->getRepository('KoalamonIncidentDashboardBundle:Tool')->findBy(["active" => true]);
     foreach ($tools as $tool) {
         if (!is_null($tool->getInterval()) && $tool->getInterval() != 0) {
             $eventIdentifier = $em->getRepository('KoalamonIncidentDashboardBundle:EventIdentifier')->findLastEventByTool($tool);
             if (is_null($eventIdentifier)) {
                 continue;
             }
             $event = $eventIdentifier->getLastEvent();
             $interval = $tool->getInterval() + 1;
             $now = new \DateTime();
             $lastEventLimit = $now->sub(new \DateInterval("PT" . $interval . "M"));
             $rawEvent = new RawEvent();
             $rawEvent->setIdentifier('koalamon_tool_intervalcheck_' . $tool->getIdentifier());
             $rawEvent->setSystem('Koalamon');
             $rawEvent->setType('koalamon_intervalcheck');
             $rawEvent->setUnique(false);
             try {
                 $created = $event->getCreated();
             } catch (\Exception $e) {
                 $output->writeln("<error>" . $e->getMessage() . "</error>");
                 $created = new \DateTime();
                 $created->sub(new \DateInterval("P30D"));
             }
             if ($created < $lastEventLimit) {
                 $rawEvent->setStatus(Event::STATUS_FAILURE);
                 $message = "The tool '" . $tool->getName() . "' with id='" . $tool->getId() . "' did not send any events since " . $created->format("d.m.Y H:i:m") . ".";
                 $rawEvent->setMessage($message);
                 $output->writeln("project_id: " . $tool->getProject()->getId() . " (" . $tool->getProject()->getName() . ") -- " . $message);
             } else {
                 $rawEvent->setStatus(Event::STATUS_SUCCESS);
                 $rawEvent->setMessage("The tool '" . $tool->getName() . "' with id='" . $tool->getId() . ' was triggered within the last ' . $interval . ' minutes.');
             }
             try {
                 $this->getContainer()->get('koalamon.project.helper')->addRawEvent($rawEvent, $tool->getProject());
             } catch (\Exception $e) {
                 $output->writeln('Exception: ' . $e->getMessage());
             }
         }
     }
 }
 public function onEventCreate(NewEventEvent $event)
 {
     $currentEvent = $event->getEvent();
     $lastEvent = $event->getLastEvent();
     if ($currentEvent->getType() == self::TOOL_IDENTIFIER) {
         return;
     }
     if (!is_null($lastEvent) && $currentEvent->getStatus() == $lastEvent->getStatus()) {
         return;
     }
     $system = $currentEvent->getEventIdentifier()->getSystem();
     if (is_null($system)) {
         return;
     }
     $tool = $currentEvent->getEventIdentifier()->getTool();
     $status = Event::STATUS_SUCCESS;
     $message = '';
     if ($system->getThreshold() == 0 || $currentEvent->getStatus() == Event::STATUS_SUCCESS) {
         $healthStatus = max(0, $system->getHealthStatus() - $tool->getScore());
     } else {
         $healthStatus = $system->getHealthStatus() + $tool->getScore();
         if ($healthStatus >= $system->getThreshold()) {
             $status = Event::STATUS_FAILURE;
             $message = 'The health status of "' . $system->getName() . '" is critical.';
         }
     }
     $system->setHealthStatus($healthStatus);
     $this->doctrineManager->persist($system);
     $this->doctrineManager->flush();
     $rawEvent = new RawEvent();
     $rawEvent->setSystem($system->getIdentifier());
     $rawEvent->setType(self::TOOL_IDENTIFIER);
     $rawEvent->setUnique(false);
     $rawEvent->setValue($healthStatus);
     $rawEvent->setStatus($status);
     $rawEvent->setMessage($message);
     $rawEvent->setIdentifier(self::TOOL_IDENTIFIER . '_' . $system->getIdentifier());
     $this->container->get('koalamon.project.helper')->addRawEvent($rawEvent, $currentEvent->getEventIdentifier()->getProject());
 }
 public function createEvent(Request $request, $payload)
 {
     $newEvent = json_decode(urldecode($payload));
     if ($request->get('confirmationURL')) {
         $url = trim(preg_replace('/\\s\\s+/', ' ', $request->get('confirmationURL')));
         $content = file_get_contents($url);
         return false;
     }
     if (!property_exists($newEvent, 'alert')) {
         return false;
     }
     $alert = $newEvent->alert;
     $event = new RawEvent();
     $event->setType('monitis');
     $system = str_replace('http://', '', $alert->url);
     $system = str_replace(' ', '', $system);
     $event->setSystem($system);
     if ($alert->alertType === self::STATUS_PROBLEM) {
         $event->setStatus(Event::STATUS_FAILURE);
         if (property_exists($alert, "errorString")) {
             $event->setMessage($alert->errorString);
         } else {
             $event->setMessage('Monitis found an error for ' . $alert->name . '.');
         }
     } else {
         $event->setStatus(Event::STATUS_SUCCESS);
         $event->setMessage("");
     }
     $event->setIdentifier("monitis_" . $system . "_" . $alert->type);
     $event->setUnique(false);
     $event->setUrl('http://dashboard.monitis.com/');
     if (property_exists($alert, 'stepDuration')) {
         $event->setValue($alert->stepDuration);
     }
     return $event;
 }