ttrss/vendor/open-telemetry/sdk/Resource/Detectors/Environment.php

41 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace OpenTelemetry\SDK\Resource\Detectors;
use OpenTelemetry\SDK\Common\Attribute\Attributes;
use OpenTelemetry\SDK\Common\Configuration\Configuration;
use OpenTelemetry\SDK\Common\Configuration\Variables;
use OpenTelemetry\SDK\Resource\ResourceDetectorInterface;
use OpenTelemetry\SDK\Resource\ResourceInfo;
use OpenTelemetry\SemConv\ResourceAttributes;
/**
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md#specifying-resource-information-via-an-environment-variable
*/
final class Environment implements ResourceDetectorInterface
{
public function getResource(): ResourceInfo
{
$attributes = Configuration::has(Variables::OTEL_RESOURCE_ATTRIBUTES)
? self::decode(Configuration::getMap(Variables::OTEL_RESOURCE_ATTRIBUTES, []))
: [];
//@see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/sdk-environment-variables.md#general-sdk-configuration
$serviceName = Configuration::has(Variables::OTEL_SERVICE_NAME)
? Configuration::getString(Variables::OTEL_SERVICE_NAME)
: null;
if ($serviceName) {
$attributes[ResourceAttributes::SERVICE_NAME] = $serviceName;
}
return ResourceInfo::create(Attributes::create($attributes), ResourceAttributes::SCHEMA_URL);
}
private static function decode(array $attributes): array
{
return array_map('urldecode', $attributes);
}
}