Skip to content

Commit 965e015

Browse files
committed
wip: otel
1 parent c93898d commit 965e015

8 files changed

+9
-58
lines changed

.idea/laravel-open-telemetry.iml

+3-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/php.xml

+3-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/otel.php

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?php
22

3-
use OpenTelemetry\SemConv\ResourceAttributes;
43
use Overtrue\LaravelOpenTelemetry\Watchers;
54

65
return [

src/Middlewares/MeasureRequest.php

-45
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,8 @@
66
use Illuminate\Http\Request;
77
use OpenTelemetry\API\Trace\SpanInterface;
88
use OpenTelemetry\API\Trace\StatusCode;
9-
use OpenTelemetry\Context\Context;
10-
use OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator;
11-
use OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator;
129
use OpenTelemetry\SemConv\TraceAttributes;
1310
use Overtrue\LaravelOpenTelemetry\Facades\Measure;
14-
use Overtrue\LaravelOpenTelemetry\Support\ResponsePropagationSetter;
1511
use Overtrue\LaravelOpenTelemetry\Traits\InteractWithHttpHeaders;
1612
use Symfony\Component\HttpFoundation\Response;
1713
use Throwable;
@@ -34,18 +30,12 @@ public function handle(Request $request, Closure $next, ?string $name = null)
3430
);
3531

3632
$span = Measure::activeSpan()->setAttributes($this->getRequestSpanAttributes($request));
37-
$context = Context::getCurrent();
3833

3934
try {
4035
$response = $next($request);
4136

4237
$this->recordHeaders($span, $request);
4338

44-
if ($response instanceof Response) {
45-
$this->recordHttpResponseToSpan($span, $response);
46-
$this->propagateHeaderToResponse($context, $response);
47-
}
48-
4939
// Add trace id to response header if configured.
5040
if ($traceIdHeaderName = config('otel.response_trace_header_name')) {
5141
$response->headers->set($traceIdHeaderName, Measure::traceId());
@@ -60,41 +50,6 @@ public function handle(Request $request, Closure $next, ?string $name = null)
6050
}
6151
}
6252

63-
protected function recordHttpResponseToSpan(SpanInterface $span, Response $response): void
64-
{
65-
$span->setAttribute(TraceAttributes::NETWORK_PROTOCOL_VERSION, $response->getProtocolVersion());
66-
$span->setAttribute(TraceAttributes::HTTP_RESPONSE_STATUS_CODE, $response->getStatusCode());
67-
68-
if (($content = $response->getContent()) !== false) {
69-
$span->setAttribute(TraceAttributes::HTTP_RESPONSE_BODY_SIZE, strlen($content));
70-
}
71-
72-
$this->recordHeaders($span, $response);
73-
74-
if ($response->isSuccessful()) {
75-
$span->setStatus(StatusCode::STATUS_OK);
76-
}
77-
78-
if ($response->isServerError() || $response->isClientError()) {
79-
$span->setStatus(StatusCode::STATUS_ERROR);
80-
}
81-
}
82-
83-
protected function propagateHeaderToResponse($context, Response $response): void
84-
{
85-
// Propagate `server-timing` header to response, if ServerTimingPropagator is present
86-
if (class_exists('OpenTelemetry\Contrib\Propagation\ServerTiming\ServerTimingPropagator')) {
87-
$prop = new ServerTimingPropagator();
88-
$prop->inject($response, ResponsePropagationSetter::instance(), $context);
89-
}
90-
91-
// Propagate `traceresponse` header to response, if TraceResponsePropagator is present
92-
if (class_exists('OpenTelemetry\Contrib\Propagation\TraceResponse\TraceResponsePropagator')) {
93-
$prop = new TraceResponsePropagator();
94-
$prop->inject($response, ResponsePropagationSetter::instance(), $context);
95-
}
96-
}
97-
9853
protected function recordHeaders(SpanInterface $span, Request|Response $http): SpanInterface
9954
{
10055
$prefix = match (true) {

src/Support/CarbonClock.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@ public static function carbonToNanos(CarbonInterface $carbon): int
3030
{
3131
return (int) $carbon->getPreciseTimestamp(6) * 1000;
3232
}
33-
}
33+
}

src/Support/Measure.php

+1-5
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@
55
use Closure;
66
use Illuminate\Contracts\Foundation\Application;
77
use OpenTelemetry\API\Globals;
8-
use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
98
use OpenTelemetry\API\Trace\Span;
109
use OpenTelemetry\API\Trace\SpanContextValidator;
1110
use OpenTelemetry\API\Trace\SpanInterface;
1211
use OpenTelemetry\Context\Context;
1312
use OpenTelemetry\Context\ContextInterface;
14-
use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
1513
use OpenTelemetry\Context\ScopeInterface;
16-
use OpenTelemetry\SDK\Propagation\PropagatorFactory;
17-
use OpenTelemetry\SDK\Registry;
1814

1915
class Measure
2016
{
@@ -90,7 +86,7 @@ public function traceId(): ?string
9086

9187
public function propagator()
9288
{
93-
return (new PropagatorFactory())->create();
89+
return Globals::propagator();
9490
}
9591

9692
public function propagationHeaders(?ContextInterface $context = null): array

src/Support/ResponsePropagationSetter.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@ public function set(&$carrier, string $key, string $value): void
2727

2828
$carrier->headers->set($key, $value);
2929
}
30-
}
30+
}

src/Support/SpanBuilder.php

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use OpenTelemetry\API\Trace\SpanContextInterface;
88
use OpenTelemetry\API\Trace\SpanInterface;
99
use OpenTelemetry\Context\ContextInterface;
10-
use OpenTelemetry\SDK\Common\Time\SystemClock;
1110

1211
// this file is copied from https://github.com/keepsuit/laravel-opentelemetry/blob/main/src/Support/SpanBuilder.php
1312
class SpanBuilder

0 commit comments

Comments
 (0)