From 6ea782f59d0758ece90a8982913569e32d425a65 Mon Sep 17 00:00:00 2001 From: Alexandre Allier Date: Fri, 10 Oct 2025 10:51:17 +0200 Subject: [PATCH] feat: EB-27204 Add opentelemetry --- EventSubscriber/LogRequestSubscriber.php | 70 ------------------ EventSubscriber/LogTerminateSubscriber.php | 72 ------------------- .../Formatter/TokenCollectionFormatter.php | 52 -------------- Monolog/Handler/OpentelemetryHandler.php | 16 +++++ Resources/config/services.xml | 26 +------ composer.json | 14 +++- 6 files changed, 29 insertions(+), 221 deletions(-) delete mode 100755 EventSubscriber/LogRequestSubscriber.php delete mode 100755 EventSubscriber/LogTerminateSubscriber.php delete mode 100644 Monolog/Formatter/TokenCollectionFormatter.php create mode 100644 Monolog/Handler/OpentelemetryHandler.php diff --git a/EventSubscriber/LogRequestSubscriber.php b/EventSubscriber/LogRequestSubscriber.php deleted file mode 100755 index 8e1ec7e..0000000 --- a/EventSubscriber/LogRequestSubscriber.php +++ /dev/null @@ -1,70 +0,0 @@ -logger = new NullLogger(); - } - - public function onKernelRequest(RequestEvent $event): void - { - memory_reset_peak_usage(); - - $request = $event->getRequest(); - $request->attributes->set('__start_time', microtime(true)); - - $isContentExceed = $this->isContentExceedMaxSize($request->getContent()); - - if (!$isContentExceed) { - $this->logger->info( - 'Start request', - [ - 'method' => $request->getMethod(), - 'request_uri' => $request->getRequestUri(), - 'headers' => $request->headers->all(), - 'query' => $request->query->all(), - 'request' => $request->request->all(), - 'content' => $request->getContent(), - 'memory' => memory_get_usage(), - ], - ); - - return; - } - - $this->logger->warning( - 'Start request (long request content)', - [ - 'method' => $request->getMethod(), - 'request_uri' => $request->getRequestUri(), - 'headers' => $request->headers->all(), - 'query' => $request->query->all(), - 'request' => $request->request->all(), - 'content' => $this->splitContent($request->getContent()), - 'memory' => memory_get_usage(), - ], - ); - } - - public static function getSubscribedEvents(): array - { - return [ - KernelEvents::REQUEST => ['onKernelRequest'], - ]; - } -} diff --git a/EventSubscriber/LogTerminateSubscriber.php b/EventSubscriber/LogTerminateSubscriber.php deleted file mode 100755 index a57f8af..0000000 --- a/EventSubscriber/LogTerminateSubscriber.php +++ /dev/null @@ -1,72 +0,0 @@ -logger = new NullLogger(); - } - - public function onKernelTerminate(TerminateEvent $event): void - { - $request = $event->getRequest(); - $startTime = $request->attributes->get('__start_time', 0); - - $content = $event->getResponse()->getContent() !== false ? $event->getResponse()->getContent() : ''; - - $isContentExceed = $this->isContentExceedMaxSize($content); - - if (!$isContentExceed) { - $this->logger->info( - 'Finish request', - [ - 'method' => $request->getMethod(), - 'request_uri' => $request->getRequestUri(), - 'headers' => $request->headers->all(), - 'query' => $request->query->all(), - 'response' => $content, - 'time' => microtime(true) - $startTime, - 'memory_peak' => memory_get_peak_usage(), - 'memory' => memory_get_usage(), - ], - ); - - return; - } - - $this->logger->info( - 'Finish request (long response content)', - [ - 'method' => $request->getMethod(), - 'request_uri' => $request->getRequestUri(), - 'headers' => $request->headers->all(), - 'query' => $request->query->all(), - 'response' => $this->splitContent($content), - 'time' => microtime(true) - $startTime, - 'memory_peak' => memory_get_peak_usage(), - 'memory' => memory_get_usage(), - ], - ); - } - - public static function getSubscribedEvents(): array - { - return [ - KernelEvents::TERMINATE => ['onKernelTerminate'], - ]; - } -} diff --git a/Monolog/Formatter/TokenCollectionFormatter.php b/Monolog/Formatter/TokenCollectionFormatter.php deleted file mode 100644 index 96a5d91..0000000 --- a/Monolog/Formatter/TokenCollectionFormatter.php +++ /dev/null @@ -1,52 +0,0 @@ -format = str_replace( - '%token_collection%', - $this->getFormattedPlaceholder(), - $this->originalFormat ?? '', - ); - - return parent::format($record); - } - - protected function getFormattedPlaceholder(): string - { - $tokens = $this->tokenCollection->getTokens(); - - if (0 === \count($tokens)) { - return ''; - } - - return implode( - ' ', - array_map( - static fn (Token $token): string => sprintf('%%extra.token_%s%%', $token->getName()), - $tokens, - ), - ); - } -} diff --git a/Monolog/Handler/OpentelemetryHandler.php b/Monolog/Handler/OpentelemetryHandler.php new file mode 100644 index 0000000..9d907f6 --- /dev/null +++ b/Monolog/Handler/OpentelemetryHandler.php @@ -0,0 +1,16 @@ + - - - - - - - %ets_global_log.log_format% - - - - %ets_global_log.handlers.slack.jira_url% @@ -72,6 +61,7 @@ + %ets_global_log.handlers.slack.token% @@ -93,19 +83,5 @@ - - - - - - - - - - - - - - diff --git a/composer.json b/composer.json index 9ca0566..7218141 100644 --- a/composer.json +++ b/composer.json @@ -7,13 +7,23 @@ "php": "^8.4", "ext-json": "*", "ext-mbstring": "*", - "graylog2/gelf-php": "^2.0", + "ext-grpc": "*", + "ext-protobuf": "*", + "ext-opentelemetry": "*", "symfony/config": "^7.0", "symfony/console": "^7.0", "symfony/dependency-injection": "^7.0", "symfony/http-client": "^7.0", "symfony/http-kernel": "^7.0", - "symfony/monolog-bundle": "^3.10" + "symfony/monolog-bundle": "^3.10", + "open-telemetry/exporter-otlp": "^1.3", + "open-telemetry/opentelemetry-auto-symfony": "^1.0", + "open-telemetry/opentelemetry-logger-monolog": "^1.1", + "open-telemetry/sdk": "^1.7", + "open-telemetry/transport-grpc": "^1.1", + "open-telemetry/opentelemetry-auto-mongodb": "^0.1.1", + "open-telemetry/opentelemetry-auto-ext-amqp": "^0.0.6", + "open-telemetry/opentelemetry-auto-pdo": "^0.2.0" }, "require-dev": { "etsglobal/php-static-analysis": "^3.3",