summaryrefslogtreecommitdiff
path: root/classes/tracer.php
diff options
context:
space:
mode:
Diffstat (limited to 'classes/tracer.php')
-rw-r--r--classes/tracer.php38
1 files changed, 21 insertions, 17 deletions
diff --git a/classes/tracer.php b/classes/tracer.php
index eb0ee5eaa..e36b9f947 100644
--- a/classes/tracer.php
+++ b/classes/tracer.php
@@ -8,6 +8,11 @@ use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
use OpenTelemetry\API\Trace\Span;
use OpenTelemetry\SDK\Trace\SpanExporter\InMemoryExporter;
+use OpenTelemetry\SDK\Resource\ResourceInfoFactory;
+use OpenTelemetry\SDK\Resource\ResourceInfo;
+use OpenTelemetry\SDK\Common\Attribute\Attributes;
+use OpenTelemetry\SemConv\ResourceAttributes;
+
class Tracer {
/** @var Tracer $instance */
private static $instance;
@@ -25,18 +30,27 @@ class Tracer {
$exporter = new InMemoryExporter();
}
- $tracerProvider = new TracerProvider(new SimpleSpanProcessor($exporter));
+ $resource = ResourceInfoFactory::emptyResource()->merge(
+ ResourceInfo::create(Attributes::create(
+ [ResourceAttributes::SERVICE_NAME => Config::get(Config::OPENTELEMETRY_SERVICE)]
+ ), ResourceAttributes::SCHEMA_URL),
+ );
+
+ $tracerProvider = new TracerProvider(new SimpleSpanProcessor($exporter), null, $resource);
+
$this->tracer = $tracerProvider->getTracer('io.opentelemetry.contrib.php');
$context = TraceContextPropagator::getInstance()->extract(getallheaders());
- $span = $this->tracer->spanBuilder(Config::get(Config::OPENTELEMETRY_SERVICE))
+ $span = $this->tracer->spanBuilder('root')
->setParent($context)
+ ->setAttribute('http.request', json_encode($_REQUEST))
->startSpan();
- $span->activate();
+ $scope = $span->activate();
- register_shutdown_function(function() use ($span, $tracerProvider) {
+ register_shutdown_function(function() use ($span, $tracerProvider, $scope) {
$span->end();
+ $scope->detach();
$tracerProvider->shutdown();
});
@@ -44,19 +58,11 @@ class Tracer {
/**
* @param string $name
- * @param array<string>|array<string, array<string, mixed>> $tags
- * @param array<string> $args
* @return OpenTelemetry\API\Trace\SpanInterface
*/
- private function _start(string $name, array $tags = [], array $args = []) {
+ private function _start(string $name) {
$span = $this->tracer->spanBuilder($name)->startSpan();
- foreach ($tags as $k => $v) {
- $span->setAttribute($k, $v);
- }
-
- $span->setAttribute("func.args", json_encode($args));
-
$span->activate();
return $span;
@@ -64,12 +70,10 @@ class Tracer {
/**
* @param string $name
- * @param array<string>|array<string, array<string, mixed>> $tags
- * @param array<string> $args
* @return OpenTelemetry\API\Trace\SpanInterface
*/
- public static function start(string $name, array $tags = [], array $args = []) {
- return self::get_instance()->_start($name, $tags, $args);
+ public static function start(string $name) {
+ return self::get_instance()->_start($name);
}
public static function get_instance() : Tracer {