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