@effect/opentelemetry 4.0.0-beta.1 → 4.0.0-beta.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/NodeSdk.d.ts +89 -17
- package/dist/NodeSdk.d.ts.map +1 -1
- package/dist/NodeSdk.js +31 -8
- package/dist/NodeSdk.js.map +1 -1
- package/dist/OtelLogger.d.ts +99 -0
- package/dist/OtelLogger.d.ts.map +1 -0
- package/dist/OtelLogger.js +139 -0
- package/dist/OtelLogger.js.map +1 -0
- package/dist/{Metrics.d.ts → OtelMetrics.d.ts} +45 -21
- package/dist/OtelMetrics.d.ts.map +1 -0
- package/dist/{Metrics.js → OtelMetrics.js} +27 -12
- package/dist/OtelMetrics.js.map +1 -0
- package/dist/OtelTracer.d.ts +186 -0
- package/dist/OtelTracer.d.ts.map +1 -0
- package/dist/{Tracer.js → OtelTracer.js} +129 -72
- package/dist/OtelTracer.js.map +1 -0
- package/dist/Resource.d.ts +57 -13
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +48 -13
- package/dist/Resource.js.map +1 -1
- package/dist/WebSdk.d.ts +82 -13
- package/dist/WebSdk.d.ts.map +1 -1
- package/dist/WebSdk.js +28 -7
- package/dist/WebSdk.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/internal/attributes.js +5 -0
- package/dist/internal/attributes.js.map +1 -1
- package/dist/internal/metrics.js +5 -5
- package/dist/internal/metrics.js.map +1 -1
- package/package.json +22 -18
- package/src/NodeSdk.ts +90 -18
- package/src/OtelLogger.ts +193 -0
- package/src/{Metrics.ts → OtelMetrics.ts} +45 -21
- package/src/{Tracer.ts → OtelTracer.ts} +161 -101
- package/src/Resource.ts +58 -14
- package/src/WebSdk.ts +83 -14
- package/src/index.ts +12 -12
- package/src/internal/attributes.ts +7 -0
- package/src/internal/metrics.ts +7 -7
- package/dist/Logger.d.ts +0 -48
- package/dist/Logger.d.ts.map +0 -1
- package/dist/Logger.js +0 -76
- package/dist/Logger.js.map +0 -1
- package/dist/Metrics.d.ts.map +0 -1
- package/dist/Metrics.js.map +0 -1
- package/dist/Tracer.d.ts +0 -129
- package/dist/Tracer.d.ts.map +0 -1
- package/dist/Tracer.js.map +0 -1
- package/src/Logger.ts +0 -124
|
@@ -5,19 +5,33 @@ import { Resource } from "./Resource.js";
|
|
|
5
5
|
/**
|
|
6
6
|
* Creates an OpenTelemetry metric producer from Effect metrics.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* **When to use**
|
|
9
|
+
*
|
|
10
|
+
* Use when you need a `MetricProducer` for manually wiring Effect metrics into
|
|
11
|
+
* OpenTelemetry instead of using the scoped `layer` helper.
|
|
12
|
+
*
|
|
13
|
+
* **Details**
|
|
14
|
+
*
|
|
15
|
+
* Requires the current OpenTelemetry `Resource`, captures the current Effect
|
|
16
|
+
* context, and uses cumulative temporality by default. Pass `"delta"` for
|
|
17
|
+
* interval-based values.
|
|
18
|
+
*
|
|
19
|
+
* @see {@link registerProducer} for attaching a producer to metric readers
|
|
20
|
+
* @see {@link layer} for creating and registering a producer in a scoped layer
|
|
21
|
+
*
|
|
22
|
+
* @category constructors
|
|
23
|
+
* @since 4.0.0
|
|
10
24
|
*/
|
|
11
25
|
export const makeProducer = temporality => Effect.gen(function* () {
|
|
12
26
|
const resource = yield* Resource;
|
|
13
|
-
const services = yield* Effect.
|
|
27
|
+
const services = yield* Effect.context();
|
|
14
28
|
return new MetricProducerImpl(resource, services, temporality);
|
|
15
29
|
});
|
|
16
30
|
/**
|
|
17
31
|
* Registers a metric producer with one or more metric readers.
|
|
18
32
|
*
|
|
19
|
-
* @
|
|
20
|
-
* @
|
|
33
|
+
* @category constructors
|
|
34
|
+
* @since 4.0.0
|
|
21
35
|
*/
|
|
22
36
|
export const registerProducer = (self, metricReader, options) => Effect.acquireRelease(Effect.sync(() => {
|
|
23
37
|
const reader = metricReader();
|
|
@@ -28,16 +42,17 @@ export const registerProducer = (self, metricReader, options) => Effect.acquireR
|
|
|
28
42
|
/**
|
|
29
43
|
* Creates a Layer that registers a metric producer with metric readers.
|
|
30
44
|
*
|
|
31
|
-
*
|
|
45
|
+
* **Example** (Creating a metrics layer with temporality)
|
|
46
|
+
*
|
|
32
47
|
* ```ts
|
|
33
|
-
* import {
|
|
48
|
+
* import { OtelMetrics } from "@effect/opentelemetry"
|
|
34
49
|
* import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"
|
|
35
50
|
* import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"
|
|
36
51
|
*
|
|
37
52
|
* const metricExporter = new OTLPMetricExporter({ url: "<your-otel-url>" })
|
|
38
53
|
*
|
|
39
54
|
* // Use delta temporality for backends like Datadog or Dynatrace
|
|
40
|
-
* const metricsLayer =
|
|
55
|
+
* const metricsLayer = OtelMetrics.layer(
|
|
41
56
|
* () => new PeriodicExportingMetricReader({
|
|
42
57
|
* exporter: metricExporter,
|
|
43
58
|
* exportIntervalMillis: 10000
|
|
@@ -46,14 +61,14 @@ export const registerProducer = (self, metricReader, options) => Effect.acquireR
|
|
|
46
61
|
* )
|
|
47
62
|
*
|
|
48
63
|
* // Use cumulative temporality for backends like Prometheus (default)
|
|
49
|
-
* const cumulativeLayer =
|
|
64
|
+
* const cumulativeLayer = OtelMetrics.layer(
|
|
50
65
|
* () => new PeriodicExportingMetricReader({ exporter: metricExporter }),
|
|
51
66
|
* { temporality: "cumulative" }
|
|
52
67
|
* )
|
|
53
68
|
* ```
|
|
54
69
|
*
|
|
55
|
-
* @
|
|
56
|
-
* @
|
|
70
|
+
* @category layers
|
|
71
|
+
* @since 4.0.0
|
|
57
72
|
*/
|
|
58
73
|
export const layer = (evaluate, options) => Layer.effectDiscard(Effect.flatMap(makeProducer(options?.temporality), producer => registerProducer(producer, evaluate, options)));
|
|
59
|
-
//# sourceMappingURL=
|
|
74
|
+
//# sourceMappingURL=OtelMetrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtelMetrics.js","names":["Effect","Layer","MetricProducerImpl","Resource","makeProducer","temporality","gen","resource","services","context","registerProducer","self","metricReader","options","acquireRelease","sync","reader","readers","Array","isArray","forEach","setMetricProducer","promise","Promise","all","map","shutdown","pipe","ignore","interruptible","timeoutOption","shutdownTimeout","layer","evaluate","effectDiscard","flatMap","producer"],"sources":["../src/OtelMetrics.ts"],"sourcesContent":[null],"mappings":"AAcA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,QAAQ,QAAQ,eAAe;AAkBxC;;;;;;;;;;;;;;;;;;;;AAoBA,OAAO,MAAMC,YAAY,GAAIC,WAAmC,IAC9DL,MAAM,CAACM,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAG,OAAOJ,QAAQ;EAChC,MAAMK,QAAQ,GAAG,OAAOR,MAAM,CAACS,OAAO,EAAS;EAC/C,OAAO,IAAIP,kBAAkB,CAACK,QAAQ,EAAEC,QAAQ,EAAEH,WAAW,CAAC;AAChE,CAAC,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMK,gBAAgB,GAAGA,CAC9BC,IAAoB,EACpBC,YAA6E,EAC7EC,OAEC,KAEDb,MAAM,CAACc,cAAc,CACnBd,MAAM,CAACe,IAAI,CAAC,MAAK;EACf,MAAMC,MAAM,GAAGJ,YAAY,EAAE;EAC7B,MAAMK,OAAO,GAAwBC,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAQ;EACrFC,OAAO,CAACG,OAAO,CAAEJ,MAAM,IAAKA,MAAM,CAACK,iBAAiB,CAACV,IAAI,CAAC,CAAC;EAC3D,OAAOM,OAAO;AAChB,CAAC,CAAC,EACDA,OAAO,IACNjB,MAAM,CAACsB,OAAO,CAAC,MACbC,OAAO,CAACC,GAAG,CACTP,OAAO,CAACQ,GAAG,CAAET,MAAM,IAAKA,MAAM,CAACU,QAAQ,EAAE,CAAC,CAC3C,CACF,CAACC,IAAI,CACJ3B,MAAM,CAAC4B,MAAM,EACb5B,MAAM,CAAC6B,aAAa,EACpB7B,MAAM,CAAC8B,aAAa,CAACjB,OAAO,EAAEkB,eAAe,IAAI,IAAI,CAAC,CACvD,CACJ;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,OAAO,MAAMC,KAAK,GAAGA,CACnBC,QAAyE,EACzEpB,OAGC,KAEDZ,KAAK,CAACiC,aAAa,CAAClC,MAAM,CAACmC,OAAO,CAChC/B,YAAY,CAACS,OAAO,EAAER,WAAW,CAAC,EACjC+B,QAAQ,IAAK1B,gBAAgB,CAAC0B,QAAQ,EAAEH,QAAQ,EAAEpB,OAAO,CAAC,CAC5D,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridges Effect tracing into OpenTelemetry by installing an Effect `Tracer`
|
|
3
|
+
* that creates OpenTelemetry spans, records attributes, events, links, errors,
|
|
4
|
+
* and status, and keeps OpenTelemetry context active while traced effects run.
|
|
5
|
+
* Use this module when an application already has an OpenTelemetry
|
|
6
|
+
* `TracerProvider`, or when the Node and Web SDK layers should expose Effect
|
|
7
|
+
* spans to OTLP, console, or other OpenTelemetry-compatible exporters.
|
|
8
|
+
*
|
|
9
|
+
* The layer constructors wire Effect's tracer service to either the global
|
|
10
|
+
* OpenTelemetry tracer provider or an explicitly provided `OtelTracer`. This
|
|
11
|
+
* module does not create exporters or span processors by itself, so spans are
|
|
12
|
+
* exported only when the provider has been configured by the application or by
|
|
13
|
+
* the Node/Web SDK layers. Parentage is taken from Effect spans first and can
|
|
14
|
+
* also attach to the active OpenTelemetry context, while `makeExternalSpan` and
|
|
15
|
+
* `withSpanContext` are the entry points for continuing an incoming remote
|
|
16
|
+
* trace. Preserve `traceFlags` and `traceState` when building external spans;
|
|
17
|
+
* otherwise sampling defaults to sampled and trace state cannot be propagated.
|
|
18
|
+
*
|
|
19
|
+
* @since 4.0.0
|
|
20
|
+
*/
|
|
21
|
+
import * as Otel from "@opentelemetry/api";
|
|
22
|
+
import * as Cause from "effect/Cause";
|
|
23
|
+
import * as Context from "effect/Context";
|
|
24
|
+
import * as Effect from "effect/Effect";
|
|
25
|
+
import * as Layer from "effect/Layer";
|
|
26
|
+
import * as Tracer from "effect/Tracer";
|
|
27
|
+
import { Resource } from "./Resource.ts";
|
|
28
|
+
declare const OtelTracer_base: Context.ServiceClass<OtelTracer, "@effect/opentelemetry/Tracer", Otel.Tracer>;
|
|
29
|
+
/**
|
|
30
|
+
* Context service containing the OpenTelemetry `Tracer` used to create spans for Effect tracing.
|
|
31
|
+
*
|
|
32
|
+
* @category services
|
|
33
|
+
* @since 4.0.0
|
|
34
|
+
*/
|
|
35
|
+
export declare class OtelTracer extends OtelTracer_base {
|
|
36
|
+
}
|
|
37
|
+
declare const OtelTracerProvider_base: Context.ServiceClass<OtelTracerProvider, "@effect/opentelemetry/Tracer/OtelTracerProvider", Otel.TracerProvider>;
|
|
38
|
+
/**
|
|
39
|
+
* Context service containing the OpenTelemetry `TracerProvider` used to obtain tracers.
|
|
40
|
+
*
|
|
41
|
+
* @category services
|
|
42
|
+
* @since 4.0.0
|
|
43
|
+
*/
|
|
44
|
+
export declare class OtelTracerProvider extends OtelTracerProvider_base {
|
|
45
|
+
}
|
|
46
|
+
declare const OtelTraceFlags_base: Context.ServiceClass<OtelTraceFlags, "@effect/opentelemetry/Tracer/OtelTraceFlags", Otel.TraceFlags>;
|
|
47
|
+
/**
|
|
48
|
+
* Context service containing OpenTelemetry trace flags used when constructing external span contexts.
|
|
49
|
+
*
|
|
50
|
+
* @category services
|
|
51
|
+
* @since 4.0.0
|
|
52
|
+
*/
|
|
53
|
+
export declare class OtelTraceFlags extends OtelTraceFlags_base {
|
|
54
|
+
}
|
|
55
|
+
declare const OtelTraceState_base: Context.ServiceClass<OtelTraceState, "@effect/opentelemetry/Tracer/OtelTraceState", Otel.TraceState>;
|
|
56
|
+
/**
|
|
57
|
+
* Context service containing OpenTelemetry trace state used when constructing external span contexts.
|
|
58
|
+
*
|
|
59
|
+
* @category services
|
|
60
|
+
* @since 4.0.0
|
|
61
|
+
*/
|
|
62
|
+
export declare class OtelTraceState extends OtelTraceState_base {
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Creates an Effect `Tracer` implementation backed by the configured OpenTelemetry tracer.
|
|
66
|
+
*
|
|
67
|
+
* @category constructors
|
|
68
|
+
* @since 4.0.0
|
|
69
|
+
*/
|
|
70
|
+
export declare const make: Effect.Effect<Tracer.Tracer, never, OtelTracer>;
|
|
71
|
+
/**
|
|
72
|
+
* Creates an Effect external span from an OpenTelemetry span context, preserving trace flags and trace state when provided.
|
|
73
|
+
*
|
|
74
|
+
* @category constructors
|
|
75
|
+
* @since 4.0.0
|
|
76
|
+
*/
|
|
77
|
+
export declare const makeExternalSpan: (options: {
|
|
78
|
+
readonly traceId: string;
|
|
79
|
+
readonly spanId: string;
|
|
80
|
+
readonly traceFlags?: number | undefined;
|
|
81
|
+
readonly traceState?: string | Otel.TraceState | undefined;
|
|
82
|
+
}) => Tracer.ExternalSpan;
|
|
83
|
+
/**
|
|
84
|
+
* Layer that provides the current global OpenTelemetry tracer provider.
|
|
85
|
+
*
|
|
86
|
+
* @category layers
|
|
87
|
+
* @since 4.0.0
|
|
88
|
+
*/
|
|
89
|
+
export declare const layerGlobalProvider: Layer.Layer<OtelTracerProvider>;
|
|
90
|
+
/**
|
|
91
|
+
* Layer that creates an OpenTelemetry tracer from the provided tracer provider and resource metadata.
|
|
92
|
+
*
|
|
93
|
+
* @category layers
|
|
94
|
+
* @since 4.0.0
|
|
95
|
+
*/
|
|
96
|
+
export declare const layerTracer: Layer.Layer<OtelTracer, never, OtelTracerProvider | Resource>;
|
|
97
|
+
/**
|
|
98
|
+
* Layer that creates an OpenTelemetry tracer from the global tracer provider and the current resource.
|
|
99
|
+
*
|
|
100
|
+
* @category layers
|
|
101
|
+
* @since 4.0.0
|
|
102
|
+
*/
|
|
103
|
+
export declare const layerGlobalTracer: Layer.Layer<OtelTracer, never, Resource>;
|
|
104
|
+
/**
|
|
105
|
+
* Layer that installs an Effect tracer backed by the global OpenTelemetry tracer provider.
|
|
106
|
+
*
|
|
107
|
+
* @category layers
|
|
108
|
+
* @since 4.0.0
|
|
109
|
+
*/
|
|
110
|
+
export declare const layerGlobal: Layer.Layer<OtelTracer, never, Resource>;
|
|
111
|
+
/**
|
|
112
|
+
* Layer that installs the Effect tracer using an `OtelTracer` already provided in the environment.
|
|
113
|
+
*
|
|
114
|
+
* @category layers
|
|
115
|
+
* @since 4.0.0
|
|
116
|
+
*/
|
|
117
|
+
export declare const layerWithoutOtelTracer: Layer.Layer<never, never, OtelTracer>;
|
|
118
|
+
/**
|
|
119
|
+
* Layer that creates an OpenTelemetry tracer from a provider and resource, then installs it as the Effect tracer.
|
|
120
|
+
*
|
|
121
|
+
* **When to use**
|
|
122
|
+
*
|
|
123
|
+
* Use when you already provide an `OtelTracerProvider` and a `Resource`, and
|
|
124
|
+
* want Effect spans backed by a tracer derived from them.
|
|
125
|
+
*
|
|
126
|
+
* @see {@link layerTracer} for creating only the OpenTelemetry tracer service
|
|
127
|
+
* @see {@link layerGlobal} for installing the Effect tracer from the global provider
|
|
128
|
+
* @see {@link layerWithoutOtelTracer} for installing an already-provided `OtelTracer`
|
|
129
|
+
*
|
|
130
|
+
* @category layers
|
|
131
|
+
* @since 4.0.0
|
|
132
|
+
*/
|
|
133
|
+
export declare const layer: Layer.Layer<OtelTracer, never, OtelTracerProvider | Resource>;
|
|
134
|
+
/**
|
|
135
|
+
* Gets the current OpenTelemetry span.
|
|
136
|
+
*
|
|
137
|
+
* **Details**
|
|
138
|
+
*
|
|
139
|
+
* This accessor works with both the official OpenTelemetry API, such as
|
|
140
|
+
* `Tracer.layer` and `NodeSdk.layer`, and the lightweight OTLP module, such as
|
|
141
|
+
* `OtlpTracer.layer`. When using OTLP, the returned span is a wrapper that
|
|
142
|
+
* conforms to the OpenTelemetry `Span` interface.
|
|
143
|
+
*
|
|
144
|
+
* @category accessors
|
|
145
|
+
* @since 4.0.0
|
|
146
|
+
*/
|
|
147
|
+
export declare const currentOtelSpan: Effect.Effect<Otel.Span, Cause.NoSuchElementError>;
|
|
148
|
+
/**
|
|
149
|
+
* Sets an effect's parent span from the given OpenTelemetry `SpanContext`.
|
|
150
|
+
*
|
|
151
|
+
* **When to use**
|
|
152
|
+
*
|
|
153
|
+
* Use when you need an effect to continue a trace from a parent span context
|
|
154
|
+
* produced by OpenTelemetry instrumentation outside Effect.
|
|
155
|
+
*
|
|
156
|
+
* @category propagation
|
|
157
|
+
* @since 4.0.0
|
|
158
|
+
*/
|
|
159
|
+
export declare const withSpanContext: {
|
|
160
|
+
/**
|
|
161
|
+
* Sets an effect's parent span from the given OpenTelemetry `SpanContext`.
|
|
162
|
+
*
|
|
163
|
+
* **When to use**
|
|
164
|
+
*
|
|
165
|
+
* Use when you need an effect to continue a trace from a parent span context
|
|
166
|
+
* produced by OpenTelemetry instrumentation outside Effect.
|
|
167
|
+
*
|
|
168
|
+
* @category propagation
|
|
169
|
+
* @since 4.0.0
|
|
170
|
+
*/
|
|
171
|
+
(spanContext: Otel.SpanContext): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>;
|
|
172
|
+
/**
|
|
173
|
+
* Sets an effect's parent span from the given OpenTelemetry `SpanContext`.
|
|
174
|
+
*
|
|
175
|
+
* **When to use**
|
|
176
|
+
*
|
|
177
|
+
* Use when you need an effect to continue a trace from a parent span context
|
|
178
|
+
* produced by OpenTelemetry instrumentation outside Effect.
|
|
179
|
+
*
|
|
180
|
+
* @category propagation
|
|
181
|
+
* @since 4.0.0
|
|
182
|
+
*/
|
|
183
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, spanContext: Otel.SpanContext): Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>;
|
|
184
|
+
};
|
|
185
|
+
export {};
|
|
186
|
+
//# sourceMappingURL=OtelTracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtelTracer.d.ts","sourceRoot":"","sources":["../src/OtelTracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,75 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Bridges Effect tracing into OpenTelemetry by installing an Effect `Tracer`
|
|
3
|
+
* that creates OpenTelemetry spans, records attributes, events, links, errors,
|
|
4
|
+
* and status, and keeps OpenTelemetry context active while traced effects run.
|
|
5
|
+
* Use this module when an application already has an OpenTelemetry
|
|
6
|
+
* `TracerProvider`, or when the Node and Web SDK layers should expose Effect
|
|
7
|
+
* spans to OTLP, console, or other OpenTelemetry-compatible exporters.
|
|
8
|
+
*
|
|
9
|
+
* The layer constructors wire Effect's tracer service to either the global
|
|
10
|
+
* OpenTelemetry tracer provider or an explicitly provided `OtelTracer`. This
|
|
11
|
+
* module does not create exporters or span processors by itself, so spans are
|
|
12
|
+
* exported only when the provider has been configured by the application or by
|
|
13
|
+
* the Node/Web SDK layers. Parentage is taken from Effect spans first and can
|
|
14
|
+
* also attach to the active OpenTelemetry context, while `makeExternalSpan` and
|
|
15
|
+
* `withSpanContext` are the entry points for continuing an incoming remote
|
|
16
|
+
* trace. Preserve `traceFlags` and `traceState` when building external spans;
|
|
17
|
+
* otherwise sampling defaults to sampled and trace state cannot be propagated.
|
|
18
|
+
*
|
|
19
|
+
* @since 4.0.0
|
|
3
20
|
*/
|
|
4
21
|
import * as Otel from "@opentelemetry/api";
|
|
5
22
|
import * as OtelSemConv from "@opentelemetry/semantic-conventions";
|
|
6
23
|
import * as Cause from "effect/Cause";
|
|
24
|
+
import * as Context from "effect/Context";
|
|
7
25
|
import * as Effect from "effect/Effect";
|
|
8
26
|
import * as Exit from "effect/Exit";
|
|
9
27
|
import { constTrue, dual } from "effect/Function";
|
|
10
28
|
import * as Layer from "effect/Layer";
|
|
29
|
+
import * as Option from "effect/Option";
|
|
11
30
|
import * as Predicate from "effect/Predicate";
|
|
12
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
13
31
|
import * as Tracer from "effect/Tracer";
|
|
14
|
-
import { recordToAttributes, unknownToAttributeValue } from "./internal/attributes.js";
|
|
32
|
+
import { nanosToHrTime, recordToAttributes, unknownToAttributeValue } from "./internal/attributes.js";
|
|
15
33
|
import { Resource } from "./Resource.js";
|
|
16
34
|
// =============================================================================
|
|
17
35
|
// Service Definitions
|
|
18
36
|
// =============================================================================
|
|
19
37
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
38
|
+
* Context service containing the OpenTelemetry `Tracer` used to create spans for Effect tracing.
|
|
39
|
+
*
|
|
40
|
+
* @category services
|
|
41
|
+
* @since 4.0.0
|
|
22
42
|
*/
|
|
23
|
-
export class OtelTracer extends /*#__PURE__*/
|
|
43
|
+
export class OtelTracer extends /*#__PURE__*/Context.Service()("@effect/opentelemetry/Tracer") {}
|
|
24
44
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
45
|
+
* Context service containing the OpenTelemetry `TracerProvider` used to obtain tracers.
|
|
46
|
+
*
|
|
47
|
+
* @category services
|
|
48
|
+
* @since 4.0.0
|
|
27
49
|
*/
|
|
28
|
-
export class OtelTracerProvider extends /*#__PURE__*/
|
|
50
|
+
export class OtelTracerProvider extends /*#__PURE__*/Context.Service()("@effect/opentelemetry/Tracer/OtelTracerProvider") {}
|
|
29
51
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
52
|
+
* Context service containing OpenTelemetry trace flags used when constructing external span contexts.
|
|
53
|
+
*
|
|
54
|
+
* @category services
|
|
55
|
+
* @since 4.0.0
|
|
32
56
|
*/
|
|
33
|
-
export class OtelTraceFlags extends /*#__PURE__*/
|
|
57
|
+
export class OtelTraceFlags extends /*#__PURE__*/Context.Service()("@effect/opentelemetry/Tracer/OtelTraceFlags") {}
|
|
34
58
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
59
|
+
* Context service containing OpenTelemetry trace state used when constructing external span contexts.
|
|
60
|
+
*
|
|
61
|
+
* @category services
|
|
62
|
+
* @since 4.0.0
|
|
37
63
|
*/
|
|
38
|
-
export class OtelTraceState extends /*#__PURE__*/
|
|
64
|
+
export class OtelTraceState extends /*#__PURE__*/Context.Service()("@effect/opentelemetry/Tracer/OtelTraceState") {}
|
|
39
65
|
// =============================================================================
|
|
40
66
|
// Constructors
|
|
41
67
|
// =============================================================================
|
|
42
68
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
69
|
+
* Creates an Effect `Tracer` implementation backed by the configured OpenTelemetry tracer.
|
|
70
|
+
*
|
|
71
|
+
* @category constructors
|
|
72
|
+
* @since 4.0.0
|
|
45
73
|
*/
|
|
46
74
|
export const make = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.service(OtelTracer), tracer => Tracer.make({
|
|
47
75
|
span(options) {
|
|
@@ -56,24 +84,28 @@ export const make = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.service(OtelTrac
|
|
|
56
84
|
}
|
|
57
85
|
}));
|
|
58
86
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
87
|
+
* Creates an Effect external span from an OpenTelemetry span context, preserving trace flags and trace state when provided.
|
|
88
|
+
*
|
|
89
|
+
* @category constructors
|
|
90
|
+
* @since 4.0.0
|
|
61
91
|
*/
|
|
62
92
|
export const makeExternalSpan = options => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (typeof options.traceState === "string") {
|
|
68
|
-
try {
|
|
69
|
-
const traceState = Otel.createTraceState(options.traceState);
|
|
70
|
-
annotations = ServiceMap.add(annotations, OtelTraceState, traceState);
|
|
71
|
-
} catch {
|
|
72
|
-
//
|
|
93
|
+
const annotations = Context.mutate(Context.empty(), annotations => {
|
|
94
|
+
let next = annotations;
|
|
95
|
+
if (options.traceFlags !== undefined) {
|
|
96
|
+
next = Context.add(next, OtelTraceFlags, options.traceFlags);
|
|
73
97
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
98
|
+
if (typeof options.traceState === "string") {
|
|
99
|
+
try {
|
|
100
|
+
next = Context.add(next, OtelTraceState, Otel.createTraceState(options.traceState));
|
|
101
|
+
} catch {
|
|
102
|
+
//
|
|
103
|
+
}
|
|
104
|
+
} else if (options.traceState) {
|
|
105
|
+
next = Context.add(next, OtelTraceState, options.traceState);
|
|
106
|
+
}
|
|
107
|
+
return next;
|
|
108
|
+
});
|
|
77
109
|
return {
|
|
78
110
|
_tag: "ExternalSpan",
|
|
79
111
|
traceId: options.traceId,
|
|
@@ -86,13 +118,17 @@ export const makeExternalSpan = options => {
|
|
|
86
118
|
// Layers
|
|
87
119
|
// =============================================================================
|
|
88
120
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
121
|
+
* Layer that provides the current global OpenTelemetry tracer provider.
|
|
122
|
+
*
|
|
123
|
+
* @category layers
|
|
124
|
+
* @since 4.0.0
|
|
91
125
|
*/
|
|
92
126
|
export const layerGlobalProvider = /*#__PURE__*/Layer.sync(OtelTracerProvider, () => Otel.trace.getTracerProvider());
|
|
93
127
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
128
|
+
* Layer that creates an OpenTelemetry tracer from the provided tracer provider and resource metadata.
|
|
129
|
+
*
|
|
130
|
+
* @category layers
|
|
131
|
+
* @since 4.0.0
|
|
96
132
|
*/
|
|
97
133
|
export const layerTracer = /*#__PURE__*/Layer.effect(OtelTracer, /*#__PURE__*/Effect.gen(function* () {
|
|
98
134
|
const resource = yield* Resource;
|
|
@@ -100,23 +136,40 @@ export const layerTracer = /*#__PURE__*/Layer.effect(OtelTracer, /*#__PURE__*/Ef
|
|
|
100
136
|
return provider.getTracer(resource.attributes[OtelSemConv.ATTR_SERVICE_NAME], resource.attributes[OtelSemConv.ATTR_SERVICE_VERSION]);
|
|
101
137
|
}));
|
|
102
138
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
139
|
+
* Layer that creates an OpenTelemetry tracer from the global tracer provider and the current resource.
|
|
140
|
+
*
|
|
141
|
+
* @category layers
|
|
142
|
+
* @since 4.0.0
|
|
105
143
|
*/
|
|
106
144
|
export const layerGlobalTracer = /*#__PURE__*/layerTracer.pipe(/*#__PURE__*/Layer.provide(layerGlobalProvider));
|
|
107
145
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
146
|
+
* Layer that installs an Effect tracer backed by the global OpenTelemetry tracer provider.
|
|
147
|
+
*
|
|
148
|
+
* @category layers
|
|
149
|
+
* @since 4.0.0
|
|
110
150
|
*/
|
|
111
151
|
export const layerGlobal = /*#__PURE__*/Layer.effect(Tracer.Tracer, make).pipe(/*#__PURE__*/Layer.provideMerge(layerGlobalTracer));
|
|
112
152
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
153
|
+
* Layer that installs the Effect tracer using an `OtelTracer` already provided in the environment.
|
|
154
|
+
*
|
|
155
|
+
* @category layers
|
|
156
|
+
* @since 4.0.0
|
|
115
157
|
*/
|
|
116
158
|
export const layerWithoutOtelTracer = /*#__PURE__*/Layer.effect(Tracer.Tracer, make);
|
|
117
159
|
/**
|
|
118
|
-
*
|
|
119
|
-
*
|
|
160
|
+
* Layer that creates an OpenTelemetry tracer from a provider and resource, then installs it as the Effect tracer.
|
|
161
|
+
*
|
|
162
|
+
* **When to use**
|
|
163
|
+
*
|
|
164
|
+
* Use when you already provide an `OtelTracerProvider` and a `Resource`, and
|
|
165
|
+
* want Effect spans backed by a tracer derived from them.
|
|
166
|
+
*
|
|
167
|
+
* @see {@link layerTracer} for creating only the OpenTelemetry tracer service
|
|
168
|
+
* @see {@link layerGlobal} for installing the Effect tracer from the global provider
|
|
169
|
+
* @see {@link layerWithoutOtelTracer} for installing an already-provided `OtelTracer`
|
|
170
|
+
*
|
|
171
|
+
* @category layers
|
|
172
|
+
* @since 4.0.0
|
|
120
173
|
*/
|
|
121
174
|
export const layer = /*#__PURE__*/layerWithoutOtelTracer.pipe(/*#__PURE__*/Layer.provideMerge(layerTracer));
|
|
122
175
|
// =============================================================================
|
|
@@ -125,16 +178,17 @@ export const layer = /*#__PURE__*/layerWithoutOtelTracer.pipe(/*#__PURE__*/Layer
|
|
|
125
178
|
const bigint1e6 = /*#__PURE__*/BigInt(1_000_000);
|
|
126
179
|
const bigint1e9 = /*#__PURE__*/BigInt(1_000_000_000);
|
|
127
180
|
/**
|
|
128
|
-
*
|
|
181
|
+
* Gets the current OpenTelemetry span.
|
|
129
182
|
*
|
|
130
|
-
*
|
|
131
|
-
* `NodeSdk.layer`, etc.) and the lightweight OTLP module (`OtlpTracer.layer`).
|
|
183
|
+
* **Details**
|
|
132
184
|
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
185
|
+
* This accessor works with both the official OpenTelemetry API, such as
|
|
186
|
+
* `Tracer.layer` and `NodeSdk.layer`, and the lightweight OTLP module, such as
|
|
187
|
+
* `OtlpTracer.layer`. When using OTLP, the returned span is a wrapper that
|
|
188
|
+
* conforms to the OpenTelemetry `Span` interface.
|
|
135
189
|
*
|
|
136
|
-
* @since 1.0.0
|
|
137
190
|
* @category accessors
|
|
191
|
+
* @since 4.0.0
|
|
138
192
|
*/
|
|
139
193
|
export const currentOtelSpan = /*#__PURE__*/Effect.clockWith(clock => Effect.map(Effect.currentSpan, span => OtelSpanTypeId in span ? span.span : makeOtelSpan(span, clock)));
|
|
140
194
|
const makeOtelSpan = (span, clock) => {
|
|
@@ -197,7 +251,9 @@ const makeOtelSpan = (span, clock) => {
|
|
|
197
251
|
recordException(exception, timeInput) {
|
|
198
252
|
const time = convertOtelTimeInput(timeInput, clock);
|
|
199
253
|
const cause = Cause.fail(exception);
|
|
200
|
-
const error = Cause.prettyErrors(cause
|
|
254
|
+
const error = Cause.prettyErrors(cause, {
|
|
255
|
+
includeCauseInStack: true
|
|
256
|
+
})[0];
|
|
201
257
|
span.event(error.message, time, {
|
|
202
258
|
"exception.type": error.name,
|
|
203
259
|
"exception.message": error.message,
|
|
@@ -219,13 +275,15 @@ const convertOtelTimeInput = (input, clock) => {
|
|
|
219
275
|
return BigInt(seconds) * bigint1e9 + BigInt(nanos);
|
|
220
276
|
};
|
|
221
277
|
/**
|
|
222
|
-
*
|
|
278
|
+
* Sets an effect's parent span from the given OpenTelemetry `SpanContext`.
|
|
223
279
|
*
|
|
224
|
-
*
|
|
225
|
-
* attach to a parent span.
|
|
280
|
+
* **When to use**
|
|
226
281
|
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
282
|
+
* Use when you need an effect to continue a trace from a parent span context
|
|
283
|
+
* produced by OpenTelemetry instrumentation outside Effect.
|
|
284
|
+
*
|
|
285
|
+
* @category propagation
|
|
286
|
+
* @since 4.0.0
|
|
229
287
|
*/
|
|
230
288
|
export const withSpanContext = /*#__PURE__*/dual(2, (self, spanContext) => Effect.withParentSpan(self, makeExternalSpan(spanContext)));
|
|
231
289
|
// =============================================================================
|
|
@@ -261,7 +319,7 @@ export class OtelSpan {
|
|
|
261
319
|
this.links = options.links;
|
|
262
320
|
this.kind = options.kind;
|
|
263
321
|
const active = contextApi.active();
|
|
264
|
-
this.parent = options.
|
|
322
|
+
this.parent = options.root !== true ? Option.orElse(options.parent, () => getOtelParent(traceApi, active, options.annotations)) : options.parent;
|
|
265
323
|
this.span = tracer.startSpan(options.name, {
|
|
266
324
|
startTime: nanosToHrTime(options.startTime),
|
|
267
325
|
links: options.links.length > 0 ? options.links.map(link => ({
|
|
@@ -269,7 +327,7 @@ export class OtelSpan {
|
|
|
269
327
|
attributes: recordToAttributes(link.attributes)
|
|
270
328
|
})) : undefined,
|
|
271
329
|
kind: kindMap[this.kind]
|
|
272
|
-
}, this.parent ? populateContext(active, this.parent, options.annotations) : Otel.trace.deleteSpan(active));
|
|
330
|
+
}, Option.isSome(this.parent) ? populateContext(active, this.parent.value, options.annotations) : Otel.trace.deleteSpan(active));
|
|
273
331
|
const spanContext = this.span.spanContext();
|
|
274
332
|
this.spanId = spanContext.spanId;
|
|
275
333
|
this.traceId = spanContext.traceId;
|
|
@@ -312,7 +370,9 @@ export class OtelSpan {
|
|
|
312
370
|
this.span.setAttribute("span.label", "⚠︎ Interrupted");
|
|
313
371
|
this.span.setAttribute("status.interrupted", true);
|
|
314
372
|
} else {
|
|
315
|
-
const errors = Cause.prettyErrors(exit.cause
|
|
373
|
+
const errors = Cause.prettyErrors(exit.cause, {
|
|
374
|
+
includeCauseInStack: true
|
|
375
|
+
});
|
|
316
376
|
if (errors.length > 0) {
|
|
317
377
|
for (const error of errors) {
|
|
318
378
|
this.span.recordException(error, hrTime);
|
|
@@ -336,18 +396,15 @@ export class OtelSpan {
|
|
|
336
396
|
}
|
|
337
397
|
}
|
|
338
398
|
const isSampled = traceFlags => (traceFlags & Otel.TraceFlags.SAMPLED) === Otel.TraceFlags.SAMPLED;
|
|
339
|
-
const nanosToHrTime = timestamp => {
|
|
340
|
-
return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)];
|
|
341
|
-
};
|
|
342
399
|
const getOtelParent = (tracer, context, annotations) => {
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
return
|
|
400
|
+
const otelParent = tracer.getSpan(context)?.spanContext();
|
|
401
|
+
if (!otelParent) return Option.none();
|
|
402
|
+
return Option.some(Tracer.externalSpan({
|
|
346
403
|
spanId: otelParent.spanId,
|
|
347
404
|
traceId: otelParent.traceId,
|
|
348
405
|
sampled: (otelParent.traceFlags & 1) === 1,
|
|
349
406
|
annotations
|
|
350
|
-
})
|
|
407
|
+
}));
|
|
351
408
|
};
|
|
352
409
|
const makeSpanContext = (span, annotations) => {
|
|
353
410
|
const traceFlags = makeTraceFlags(span, annotations);
|
|
@@ -365,27 +422,27 @@ const makeTraceFlags = (span, annotations) => {
|
|
|
365
422
|
if (Predicate.isNotUndefined(annotations)) {
|
|
366
423
|
traceFlags = extractTraceService(span, annotations, OtelTraceFlags);
|
|
367
424
|
if (Predicate.isUndefined(traceFlags)) {
|
|
368
|
-
traceFlags =
|
|
425
|
+
traceFlags = Context.getOrUndefined(span.annotations, OtelTraceFlags);
|
|
369
426
|
}
|
|
370
427
|
}
|
|
371
|
-
return traceFlags ?? Otel.TraceFlags.SAMPLED;
|
|
428
|
+
return traceFlags ?? (span.sampled ? Otel.TraceFlags.SAMPLED : Otel.TraceFlags.NONE);
|
|
372
429
|
};
|
|
373
430
|
const makeTraceState = (span, annotations) => {
|
|
374
431
|
let traceState;
|
|
375
432
|
if (Predicate.isNotUndefined(annotations)) {
|
|
376
433
|
traceState = extractTraceService(span, annotations, OtelTraceState);
|
|
377
434
|
if (Predicate.isUndefined(traceState)) {
|
|
378
|
-
traceState =
|
|
435
|
+
traceState = Context.getOrUndefined(span.annotations, OtelTraceState);
|
|
379
436
|
}
|
|
380
437
|
}
|
|
381
438
|
return traceState;
|
|
382
439
|
};
|
|
383
440
|
const extractTraceService = (parent, annotations, service) => {
|
|
384
|
-
const instance =
|
|
441
|
+
const instance = Context.getOrUndefined(annotations, service);
|
|
385
442
|
if (Predicate.isNotUndefined(instance)) {
|
|
386
443
|
return instance;
|
|
387
444
|
}
|
|
388
|
-
return
|
|
445
|
+
return Context.getOrUndefined(parent.annotations, service);
|
|
389
446
|
};
|
|
390
447
|
const populateContext = (context, span, annotations) => span instanceof OtelSpan ? Otel.trace.setSpan(context, span.span) : Otel.trace.setSpanContext(context, makeSpanContext(span, annotations));
|
|
391
|
-
//# sourceMappingURL=
|
|
448
|
+
//# sourceMappingURL=OtelTracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtelTracer.js","names":["Otel","OtelSemConv","Cause","Context","Effect","Exit","constTrue","dual","Layer","Option","Predicate","Tracer","nanosToHrTime","recordToAttributes","unknownToAttributeValue","Resource","OtelTracer","Service","OtelTracerProvider","OtelTraceFlags","OtelTraceState","make","map","service","tracer","span","options","OtelSpan","context","trace","primitive","fiber","currentSpan","undefined","with","populateContext","active","makeExternalSpan","annotations","mutate","empty","next","traceFlags","add","traceState","createTraceState","_tag","traceId","spanId","sampled","isNotUndefined","isSampled","layerGlobalProvider","sync","getTracerProvider","layerTracer","effect","gen","resource","provider","getTracer","attributes","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","layerGlobalTracer","pipe","provide","layerGlobal","provideMerge","layerWithoutOtelTracer","layer","bigint1e6","BigInt","bigint1e9","currentOtelSpan","clockWith","clock","OtelSpanTypeId","makeOtelSpan","spanContext","TraceFlags","SAMPLED","NONE","isRemote","exit","void","self","setAttribute","key","value","attribute","setAttributes","Object","entries","addEvent","name","startTime","arguments","length","event","convertOtelTimeInput","addLink","link","addLinks","links","setStatus","status","SpanStatusCode","ERROR","die","message","updateName","end","endTime","time","isRecording","recordException","exception","timeInput","cause","fail","error","prettyErrors","includeCauseInStack","stack","input","currentTimeNanosUnsafe","Math","round","Date","getTime","seconds","nanos","withSpanContext","withParentSpan","kindMap","SpanKind","INTERNAL","CLIENT","SERVER","PRODUCER","CONSUMER","kind","Map","parent","constructor","contextApi","traceApi","root","orElse","getOtelParent","startSpan","makeSpanContext","isSome","deleteSpan","set","push","hrTime","code","OK","hasInterruptsOnly","pretty","errors","otelParent","getSpan","none","some","externalSpan","makeTraceFlags","makeTraceState","extractTraceService","isUndefined","getOrUndefined","instance","setSpan","setSpanContext"],"sources":["../src/OtelTracer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|