-
Notifications
You must be signed in to change notification settings - Fork 190
/
Environment.php
40 lines (33 loc) · 1.52 KB
/
Environment.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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);
}
}