1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | exports.buildSamplerFromEnv = exports.DEFAULT_CONFIG = void 0;
|
19 | const api_1 = require("@opentelemetry/api");
|
20 | const core_1 = require("@opentelemetry/core");
|
21 | const env = core_1.getEnv();
|
22 | const FALLBACK_OTEL_TRACES_SAMPLER = core_1.TracesSamplerValues.AlwaysOn;
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 | exports.DEFAULT_CONFIG = {
|
30 | sampler: buildSamplerFromEnv(env),
|
31 | forceFlushTimeoutMillis: 30000,
|
32 | spanLimits: {
|
33 | attributeCountLimit: core_1.getEnv().OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
|
34 | linkCountLimit: core_1.getEnv().OTEL_SPAN_LINK_COUNT_LIMIT,
|
35 | eventCountLimit: core_1.getEnv().OTEL_SPAN_EVENT_COUNT_LIMIT,
|
36 | },
|
37 | };
|
38 |
|
39 |
|
40 |
|
41 |
|
42 | function buildSamplerFromEnv(env = core_1.getEnv()) {
|
43 | switch (env.OTEL_TRACES_SAMPLER) {
|
44 | case core_1.TracesSamplerValues.AlwaysOn:
|
45 | return new core_1.AlwaysOnSampler();
|
46 | case core_1.TracesSamplerValues.AlwaysOff:
|
47 | return new core_1.AlwaysOffSampler();
|
48 | case core_1.TracesSamplerValues.ParentBasedAlwaysOn:
|
49 | return new core_1.ParentBasedSampler({
|
50 | root: new core_1.AlwaysOnSampler(),
|
51 | });
|
52 | case core_1.TracesSamplerValues.ParentBasedAlwaysOff:
|
53 | return new core_1.ParentBasedSampler({
|
54 | root: new core_1.AlwaysOffSampler(),
|
55 | });
|
56 | case core_1.TracesSamplerValues.TraceIdRatio:
|
57 | return new core_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(env));
|
58 | case core_1.TracesSamplerValues.ParentBasedTraceIdRatio:
|
59 | return new core_1.ParentBasedSampler({
|
60 | root: new core_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(env)),
|
61 | });
|
62 | default:
|
63 | api_1.diag.error(`OTEL_TRACES_SAMPLER value "${env.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}".`);
|
64 | return new core_1.AlwaysOnSampler();
|
65 | }
|
66 | }
|
67 | exports.buildSamplerFromEnv = buildSamplerFromEnv;
|
68 | const DEFAULT_RATIO = 1;
|
69 | function getSamplerProbabilityFromEnv(env) {
|
70 | if (env.OTEL_TRACES_SAMPLER_ARG === undefined ||
|
71 | env.OTEL_TRACES_SAMPLER_ARG === '') {
|
72 | api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`);
|
73 | return DEFAULT_RATIO;
|
74 | }
|
75 | const probability = Number(env.OTEL_TRACES_SAMPLER_ARG);
|
76 | if (isNaN(probability)) {
|
77 | api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${env.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.`);
|
78 | return DEFAULT_RATIO;
|
79 | }
|
80 | if (probability < 0 || probability > 1) {
|
81 | api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${env.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`);
|
82 | return DEFAULT_RATIO;
|
83 | }
|
84 | return probability;
|
85 | }
|
86 |
|
\ | No newline at end of file |