From f04852d92bcf294330eb77631b26e3dbd7d9d264 Mon Sep 17 00:00:00 2001 From: Steve Oliver Date: Sun, 4 Feb 2024 18:15:19 -0800 Subject: [PATCH 1/2] Allow span 'kind' to be set (e.g. CLIENT|SERVER|CONSUMER|PRODUCER) --- src/Contracts/Tracer.php | 2 +- src/Drivers/Zipkin/ZipkinTracer.php | 6 +++++- src/Facades/Trace.php | 2 +- src/Middleware/TraceRequests.php | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Contracts/Tracer.php b/src/Contracts/Tracer.php index c1a43f9..9d61d0e 100644 --- a/src/Contracts/Tracer.php +++ b/src/Contracts/Tracer.php @@ -16,7 +16,7 @@ interface Tracer * @param int|null $timestamp intval(microtime(true) * 1000000) * @return Span */ - public function startSpan(string $name, SpanContext $spanContext = null, ?int $timestamp = null): Span; + public function startSpan(string $name, SpanContext $spanContext = null, ?int $timestamp = null, $kind = null): Span; /** * Retrieve the root span of the service diff --git a/src/Drivers/Zipkin/ZipkinTracer.php b/src/Drivers/Zipkin/ZipkinTracer.php index 527882f..ebe8558 100644 --- a/src/Drivers/Zipkin/ZipkinTracer.php +++ b/src/Drivers/Zipkin/ZipkinTracer.php @@ -181,11 +181,15 @@ public function init(): Tracer * @param string $name * @param SpanContext|null $spanContext * @param int|null $timestamp intval(microtime(true) * 1000000) + * @param string|null $kind * @return Span */ - public function startSpan(string $name, ?SpanContext $spanContext = null, ?int $timestamp = null): Span + public function startSpan(string $name, ?SpanContext $spanContext = null, ?int $timestamp = null, ?string $kind = null): Span { $rawSpan = $this->tracing->getTracer()->nextSpan($spanContext ? $spanContext->getRawContext() : null); + if ($kind) { + $rawSpan->setKind($kind); + } if ($this->rootSpan) { $span = new ZipkinSpan($rawSpan, false); diff --git a/src/Facades/Trace.php b/src/Facades/Trace.php index f6dd5da..3a288bb 100644 --- a/src/Facades/Trace.php +++ b/src/Facades/Trace.php @@ -12,7 +12,7 @@ /** * @see \Vinelab\Tracing\Contracts\Tracer * - * @method static Span startSpan(string $name, SpanContext $spanContext = null, ?int $timestamp = null) + * @method static Span startSpan(string $name, SpanContext $spanContext = null, ?int $timestamp = null, $kind = null) * @method static Span getRootSpan() * @method static Span getCurrentSpan() * @method static string|null getUUID() diff --git a/src/Middleware/TraceRequests.php b/src/Middleware/TraceRequests.php index 2928ec5..46e6887 100644 --- a/src/Middleware/TraceRequests.php +++ b/src/Middleware/TraceRequests.php @@ -49,7 +49,7 @@ public function handle(Request $request, Closure $next) if (!$this->shouldBeExcluded($request->path())) { $spanContext = $this->tracer->extract($request, Formats::ILLUMINATE_HTTP); - $span = $this->tracer->startSpan('Http Request', $spanContext); + $span = $this->tracer->startSpan('Http Request', $spanContext, null, \Zipkin\Kind\SERVER); $this->tagRequestData($span, $request); } From 5c65e9d5eafd206695d5c1e7f5271f2d638d747d Mon Sep 17 00:00:00 2001 From: Steve Oliver Date: Sun, 4 Feb 2024 18:54:45 -0800 Subject: [PATCH 2/2] Update Tracer contract with type for kind --- src/Contracts/Tracer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Contracts/Tracer.php b/src/Contracts/Tracer.php index 9d61d0e..8a79c26 100644 --- a/src/Contracts/Tracer.php +++ b/src/Contracts/Tracer.php @@ -14,9 +14,10 @@ interface Tracer * @param string $name * @param SpanContext|null $spanContext * @param int|null $timestamp intval(microtime(true) * 1000000) + * @param string|null $kind * @return Span */ - public function startSpan(string $name, SpanContext $spanContext = null, ?int $timestamp = null, $kind = null): Span; + public function startSpan(string $name, SpanContext $spanContext = null, ?int $timestamp = null, ?string $kind = null): Span; /** * Retrieve the root span of the service