blob: 7fc80bcd9f2315f1ccbf0d7d67cba95a106dfc2a (
plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
<?php
declare(strict_types=1);
namespace OpenTelemetry\SDK\Resource;
use function in_array;
use OpenTelemetry\API\Behavior\LogsMessagesTrait;
use OpenTelemetry\SDK\Common\Attribute\Attributes;
use OpenTelemetry\SDK\Common\Configuration\Configuration;
use OpenTelemetry\SDK\Common\Configuration\KnownValues as Values;
use OpenTelemetry\SDK\Common\Configuration\Variables as Env;
use OpenTelemetry\SDK\Registry;
use RuntimeException;
class ResourceInfoFactory
{
use LogsMessagesTrait;
public static function defaultResource(): ResourceInfo
{
$detectors = Configuration::getList(Env::OTEL_PHP_DETECTORS);
if (in_array(Values::VALUE_ALL, $detectors)) {
// ascending priority: keys from later detectors will overwrite earlier
return (new Detectors\Composite([
new Detectors\Host(),
new Detectors\OperatingSystem(),
new Detectors\Process(),
new Detectors\ProcessRuntime(),
new Detectors\Sdk(),
new Detectors\SdkProvided(),
new Detectors\Composer(),
...Registry::resourceDetectors(),
new Detectors\Environment(),
]))->getResource();
}
$resourceDetectors = [];
foreach ($detectors as $detector) {
switch ($detector) {
case Values::VALUE_DETECTORS_ENVIRONMENT:
$resourceDetectors[] = new Detectors\Environment();
break;
case Values::VALUE_DETECTORS_HOST:
$resourceDetectors[] = new Detectors\Host();
break;
case Values::VALUE_DETECTORS_OS:
$resourceDetectors[] = new Detectors\OperatingSystem();
break;
case Values::VALUE_DETECTORS_PROCESS:
$resourceDetectors[] = new Detectors\Process();
break;
case Values::VALUE_DETECTORS_PROCESS_RUNTIME:
$resourceDetectors[] = new Detectors\ProcessRuntime();
break;
case Values::VALUE_DETECTORS_SDK:
$resourceDetectors[] = new Detectors\Sdk();
break;
case Values::VALUE_DETECTORS_SDK_PROVIDED:
$resourceDetectors[] = new Detectors\SdkProvided();
break;
case Values::VALUE_DETECTORS_COMPOSER:
$resourceDetectors[] = new Detectors\Composer();
break;
case Values::VALUE_NONE:
break;
default:
try {
$resourceDetectors[] = Registry::resourceDetector($detector);
} catch (RuntimeException $e) {
self::logWarning($e->getMessage());
}
}
}
return (new Detectors\Composite($resourceDetectors))->getResource();
}
public static function emptyResource(): ResourceInfo
{
return ResourceInfo::create(Attributes::create([]));
}
}
|