@effect/opentelemetry 0.60.0 → 4.0.0-beta.0
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/LICENSE +1 -1
- package/dist/{dts/Logger.d.ts → Logger.d.ts} +19 -13
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +76 -0
- package/dist/Logger.js.map +1 -0
- package/dist/Metrics.d.ts +76 -0
- package/dist/Metrics.d.ts.map +1 -0
- package/dist/Metrics.js +59 -0
- package/dist/Metrics.js.map +1 -0
- package/dist/{dts/NodeSdk.d.ts → NodeSdk.d.ts} +12 -9
- package/dist/NodeSdk.d.ts.map +1 -0
- package/dist/{esm/NodeSdk.js → NodeSdk.js} +23 -14
- package/dist/NodeSdk.js.map +1 -0
- package/dist/{dts/Resource.d.ts → Resource.d.ts} +10 -13
- package/dist/Resource.d.ts.map +1 -0
- package/dist/{esm/Resource.js → Resource.js} +12 -13
- package/dist/Resource.js.map +1 -0
- package/dist/Tracer.d.ts +129 -0
- package/dist/Tracer.d.ts.map +1 -0
- package/dist/Tracer.js +391 -0
- package/dist/Tracer.js.map +1 -0
- package/dist/{dts/WebSdk.d.ts → WebSdk.d.ts} +12 -9
- package/dist/WebSdk.d.ts.map +1 -0
- package/dist/WebSdk.js +41 -0
- package/dist/WebSdk.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{esm/index.js → index.js} +4 -20
- package/dist/index.js.map +1 -0
- package/dist/internal/attributes.d.ts +2 -0
- package/dist/internal/attributes.d.ts.map +1 -0
- package/dist/internal/attributes.js +19 -0
- package/dist/internal/attributes.js.map +1 -0
- package/dist/{dts/internal → internal}/metrics.d.ts.map +1 -1
- package/dist/internal/metrics.js +406 -0
- package/dist/internal/metrics.js.map +1 -0
- package/dist/internal/utilities.d.ts +2 -0
- package/dist/internal/utilities.d.ts.map +1 -0
- package/dist/internal/utilities.js +3 -0
- package/dist/internal/utilities.js.map +1 -0
- package/package.json +70 -118
- package/src/Logger.ts +52 -55
- package/src/Metrics.ts +92 -18
- package/src/NodeSdk.ts +67 -64
- package/src/Resource.ts +16 -24
- package/src/Tracer.ts +469 -78
- package/src/WebSdk.ts +59 -51
- package/src/index.ts +7 -26
- package/src/internal/attributes.ts +21 -0
- package/src/internal/metrics.ts +381 -250
- package/src/internal/utilities.ts +5 -0
- package/Logger/package.json +0 -6
- package/Metrics/package.json +0 -6
- package/NodeSdk/package.json +0 -6
- package/Otlp/package.json +0 -6
- package/OtlpLogger/package.json +0 -6
- package/OtlpMetrics/package.json +0 -6
- package/OtlpResource/package.json +0 -6
- package/OtlpTracer/package.json +0 -6
- package/Resource/package.json +0 -6
- package/Tracer/package.json +0 -6
- package/WebSdk/package.json +0 -6
- package/dist/cjs/Logger.js +0 -85
- package/dist/cjs/Logger.js.map +0 -1
- package/dist/cjs/Metrics.js +0 -24
- package/dist/cjs/Metrics.js.map +0 -1
- package/dist/cjs/NodeSdk.js +0 -53
- package/dist/cjs/NodeSdk.js.map +0 -1
- package/dist/cjs/Otlp.js +0 -46
- package/dist/cjs/Otlp.js.map +0 -1
- package/dist/cjs/OtlpLogger.js +0 -158
- package/dist/cjs/OtlpLogger.js.map +0 -1
- package/dist/cjs/OtlpMetrics.js +0 -354
- package/dist/cjs/OtlpMetrics.js.map +0 -1
- package/dist/cjs/OtlpResource.js +0 -136
- package/dist/cjs/OtlpResource.js.map +0 -1
- package/dist/cjs/OtlpTracer.js +0 -229
- package/dist/cjs/OtlpTracer.js.map +0 -1
- package/dist/cjs/Resource.js +0 -75
- package/dist/cjs/Resource.js.map +0 -1
- package/dist/cjs/Tracer.js +0 -87
- package/dist/cjs/Tracer.js.map +0 -1
- package/dist/cjs/WebSdk.js +0 -42
- package/dist/cjs/WebSdk.js.map +0 -1
- package/dist/cjs/index.js +0 -30
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/internal/metrics.js +0 -288
- package/dist/cjs/internal/metrics.js.map +0 -1
- package/dist/cjs/internal/otlpExporter.js +0 -81
- package/dist/cjs/internal/otlpExporter.js.map +0 -1
- package/dist/cjs/internal/tracer.js +0 -299
- package/dist/cjs/internal/tracer.js.map +0 -1
- package/dist/cjs/internal/utils.js +0 -34
- package/dist/cjs/internal/utils.js.map +0 -1
- package/dist/dts/Logger.d.ts.map +0 -1
- package/dist/dts/Metrics.d.ts +0 -29
- package/dist/dts/Metrics.d.ts.map +0 -1
- package/dist/dts/NodeSdk.d.ts.map +0 -1
- package/dist/dts/Otlp.d.ts +0 -31
- package/dist/dts/Otlp.d.ts.map +0 -1
- package/dist/dts/OtlpLogger.d.ts +0 -46
- package/dist/dts/OtlpLogger.d.ts.map +0 -1
- package/dist/dts/OtlpMetrics.d.ts +0 -40
- package/dist/dts/OtlpMetrics.d.ts.map +0 -1
- package/dist/dts/OtlpResource.d.ts +0 -104
- package/dist/dts/OtlpResource.d.ts.map +0 -1
- package/dist/dts/OtlpTracer.d.ts +0 -49
- package/dist/dts/OtlpTracer.d.ts.map +0 -1
- package/dist/dts/Resource.d.ts.map +0 -1
- package/dist/dts/Tracer.d.ts +0 -143
- package/dist/dts/Tracer.d.ts.map +0 -1
- package/dist/dts/WebSdk.d.ts.map +0 -1
- package/dist/dts/index.d.ts +0 -45
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/internal/otlpExporter.d.ts +0 -2
- package/dist/dts/internal/otlpExporter.d.ts.map +0 -1
- package/dist/dts/internal/tracer.d.ts +0 -2
- package/dist/dts/internal/tracer.d.ts.map +0 -1
- package/dist/dts/internal/utils.d.ts +0 -2
- package/dist/dts/internal/utils.d.ts.map +0 -1
- package/dist/esm/Logger.js +0 -75
- package/dist/esm/Logger.js.map +0 -1
- package/dist/esm/Metrics.js +0 -17
- package/dist/esm/Metrics.js.map +0 -1
- package/dist/esm/NodeSdk.js.map +0 -1
- package/dist/esm/Otlp.js +0 -38
- package/dist/esm/Otlp.js.map +0 -1
- package/dist/esm/OtlpLogger.js +0 -150
- package/dist/esm/OtlpLogger.js.map +0 -1
- package/dist/esm/OtlpMetrics.js +0 -346
- package/dist/esm/OtlpMetrics.js.map +0 -1
- package/dist/esm/OtlpResource.js +0 -124
- package/dist/esm/OtlpResource.js.map +0 -1
- package/dist/esm/OtlpTracer.js +0 -221
- package/dist/esm/OtlpTracer.js.map +0 -1
- package/dist/esm/Resource.js.map +0 -1
- package/dist/esm/Tracer.js +0 -80
- package/dist/esm/Tracer.js.map +0 -1
- package/dist/esm/WebSdk.js +0 -33
- package/dist/esm/WebSdk.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/internal/metrics.js +0 -278
- package/dist/esm/internal/metrics.js.map +0 -1
- package/dist/esm/internal/otlpExporter.js +0 -74
- package/dist/esm/internal/otlpExporter.js.map +0 -1
- package/dist/esm/internal/tracer.js +0 -290
- package/dist/esm/internal/tracer.js.map +0 -1
- package/dist/esm/internal/utils.js +0 -23
- package/dist/esm/internal/utils.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/index/package.json +0 -6
- package/src/Otlp.ts +0 -66
- package/src/OtlpLogger.ts +0 -258
- package/src/OtlpMetrics.ts +0 -571
- package/src/OtlpResource.ts +0 -232
- package/src/OtlpTracer.ts +0 -349
- package/src/internal/otlpExporter.ts +0 -124
- package/src/internal/tracer.ts +0 -437
- package/src/internal/utils.ts +0 -31
- /package/dist/{dts/internal → internal}/metrics.d.ts +0 -0
package/src/NodeSdk.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import type * as
|
|
4
|
+
import type * as Otel from "@opentelemetry/api"
|
|
5
5
|
import type { LoggerProviderConfig, LogRecordProcessor } from "@opentelemetry/sdk-logs"
|
|
6
6
|
import type { MetricReader } from "@opentelemetry/sdk-metrics"
|
|
7
7
|
import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base"
|
|
@@ -11,33 +11,35 @@ import type { DurationInput } from "effect/Duration"
|
|
|
11
11
|
import * as Effect from "effect/Effect"
|
|
12
12
|
import { constant, type LazyArg } from "effect/Function"
|
|
13
13
|
import * as Layer from "effect/Layer"
|
|
14
|
-
import { isNonEmpty } from "./internal/
|
|
15
|
-
import * as Logger from "./Logger.
|
|
16
|
-
import * as Metrics from "./Metrics.
|
|
17
|
-
import * as Resource from "./Resource.
|
|
18
|
-
import * as Tracer from "./Tracer.
|
|
14
|
+
import { isNonEmpty } from "./internal/utilities.ts"
|
|
15
|
+
import * as Logger from "./Logger.ts"
|
|
16
|
+
import * as Metrics from "./Metrics.ts"
|
|
17
|
+
import * as Resource from "./Resource.ts"
|
|
18
|
+
import * as Tracer from "./Tracer.ts"
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @since 1.0.0
|
|
22
|
-
* @category
|
|
22
|
+
* @category Models
|
|
23
23
|
*/
|
|
24
24
|
export interface Configuration {
|
|
25
25
|
readonly spanProcessor?: SpanProcessor | ReadonlyArray<SpanProcessor> | undefined
|
|
26
26
|
readonly tracerConfig?: Omit<TracerConfig, "resource"> | undefined
|
|
27
27
|
readonly metricReader?: MetricReader | ReadonlyArray<MetricReader> | undefined
|
|
28
|
+
readonly metricTemporality?: Metrics.TemporalityPreference | undefined
|
|
28
29
|
readonly logRecordProcessor?: LogRecordProcessor | ReadonlyArray<LogRecordProcessor> | undefined
|
|
29
30
|
readonly loggerProviderConfig?: Omit<LoggerProviderConfig, "resource"> | undefined
|
|
31
|
+
readonly loggerMergeWithExisting?: boolean | undefined
|
|
30
32
|
readonly resource?: {
|
|
31
33
|
readonly serviceName: string
|
|
32
34
|
readonly serviceVersion?: string
|
|
33
|
-
readonly attributes?:
|
|
35
|
+
readonly attributes?: Otel.Attributes
|
|
34
36
|
} | undefined
|
|
35
37
|
readonly shutdownTimeout?: DurationInput | undefined
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
/**
|
|
39
41
|
* @since 1.0.0
|
|
40
|
-
* @category
|
|
42
|
+
* @category Layers
|
|
41
43
|
*/
|
|
42
44
|
export const layerTracerProvider = (
|
|
43
45
|
processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
|
|
@@ -45,85 +47,86 @@ export const layerTracerProvider = (
|
|
|
45
47
|
readonly shutdownTimeout?: DurationInput | undefined
|
|
46
48
|
}
|
|
47
49
|
): Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource> =>
|
|
48
|
-
Layer.
|
|
50
|
+
Layer.effect(
|
|
49
51
|
Tracer.OtelTracerProvider,
|
|
50
|
-
Effect.
|
|
51
|
-
Resource.Resource
|
|
52
|
-
(
|
|
53
|
-
Effect.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
(provider) =>
|
|
63
|
-
Effect.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
)
|
|
52
|
+
Effect.gen(function*() {
|
|
53
|
+
const resource = yield* Resource.Resource
|
|
54
|
+
return yield* Effect.acquireRelease(
|
|
55
|
+
Effect.sync(() => {
|
|
56
|
+
const provider = new NodeTracerProvider({
|
|
57
|
+
...(config ?? undefined),
|
|
58
|
+
resource,
|
|
59
|
+
spanProcessors: Array.isArray(processor) ? (processor as any) : [processor]
|
|
60
|
+
})
|
|
61
|
+
return provider
|
|
62
|
+
}),
|
|
63
|
+
(provider) =>
|
|
64
|
+
Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
|
|
65
|
+
Effect.ignore,
|
|
66
|
+
Effect.interruptible,
|
|
67
|
+
Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
|
|
68
|
+
)
|
|
69
|
+
)
|
|
70
|
+
})
|
|
70
71
|
)
|
|
71
72
|
|
|
72
73
|
/**
|
|
73
74
|
* @since 1.0.0
|
|
74
|
-
* @category
|
|
75
|
+
* @category Layers
|
|
75
76
|
*/
|
|
76
77
|
export const layer: {
|
|
77
78
|
/**
|
|
78
79
|
* @since 1.0.0
|
|
79
|
-
* @category
|
|
80
|
+
* @category Layers
|
|
80
81
|
*/
|
|
81
82
|
(evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource>
|
|
82
83
|
/**
|
|
83
84
|
* @since 1.0.0
|
|
84
|
-
* @category
|
|
85
|
+
* @category Layers
|
|
85
86
|
*/
|
|
86
87
|
<R, E>(evaluate: Effect.Effect<Configuration, E, R>): Layer.Layer<Resource.Resource, E, R>
|
|
87
88
|
} = (
|
|
88
89
|
evaluate: LazyArg<Configuration> | Effect.Effect<Configuration, any, any>
|
|
89
90
|
): Layer.Layer<Resource.Resource> =>
|
|
90
|
-
Layer.
|
|
91
|
-
Effect.
|
|
92
|
-
Effect.isEffect(evaluate)
|
|
91
|
+
Layer.unwrap(
|
|
92
|
+
Effect.gen(function*() {
|
|
93
|
+
const config = yield* Effect.isEffect(evaluate)
|
|
93
94
|
? evaluate as Effect.Effect<Configuration>
|
|
94
|
-
: Effect.sync(evaluate)
|
|
95
|
-
(config) => {
|
|
96
|
-
const ResourceLive = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource))
|
|
95
|
+
: Effect.sync(evaluate)
|
|
97
96
|
|
|
98
|
-
|
|
99
|
-
? Layer.provide(
|
|
100
|
-
Tracer.layer,
|
|
101
|
-
layerTracerProvider(config.spanProcessor, {
|
|
102
|
-
...config.tracerConfig,
|
|
103
|
-
shutdownTimeout: config.shutdownTimeout
|
|
104
|
-
})
|
|
105
|
-
)
|
|
106
|
-
: Layer.empty
|
|
97
|
+
const ResourceLive = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource))
|
|
107
98
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
99
|
+
const TracerLive = isNonEmpty(config.spanProcessor)
|
|
100
|
+
? Layer.provide(
|
|
101
|
+
Tracer.layer,
|
|
102
|
+
layerTracerProvider(config.spanProcessor, {
|
|
103
|
+
...config.tracerConfig,
|
|
104
|
+
shutdownTimeout: config.shutdownTimeout
|
|
105
|
+
})
|
|
106
|
+
)
|
|
107
|
+
: Layer.empty
|
|
111
108
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
})
|
|
119
|
-
)
|
|
120
|
-
: Layer.empty
|
|
109
|
+
const MetricsLive = isNonEmpty(config.metricReader)
|
|
110
|
+
? Metrics.layer(constant(config.metricReader), {
|
|
111
|
+
shutdownTimeout: config.shutdownTimeout,
|
|
112
|
+
temporality: config.metricTemporality
|
|
113
|
+
})
|
|
114
|
+
: Layer.empty
|
|
121
115
|
|
|
122
|
-
|
|
123
|
-
|
|
116
|
+
const LoggerLive = isNonEmpty(config.logRecordProcessor)
|
|
117
|
+
? Layer.provide(
|
|
118
|
+
Logger.layer({ mergeWithExisting: config.loggerMergeWithExisting }),
|
|
119
|
+
Logger.layerLoggerProvider(config.logRecordProcessor, {
|
|
120
|
+
...config.loggerProviderConfig,
|
|
121
|
+
shutdownTimeout: config.shutdownTimeout
|
|
122
|
+
})
|
|
124
123
|
)
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
: Layer.empty
|
|
125
|
+
|
|
126
|
+
return Layer.mergeAll(TracerLive, MetricsLive, LoggerLive).pipe(
|
|
127
|
+
Layer.provideMerge(ResourceLive)
|
|
128
|
+
)
|
|
129
|
+
})
|
|
127
130
|
)
|
|
128
131
|
|
|
129
132
|
/**
|
package/src/Resource.ts
CHANGED
|
@@ -6,28 +6,22 @@ import * as Resources from "@opentelemetry/resources"
|
|
|
6
6
|
import * as OtelSemConv from "@opentelemetry/semantic-conventions"
|
|
7
7
|
import * as Arr from "effect/Array"
|
|
8
8
|
import * as Config from "effect/Config"
|
|
9
|
-
import { GenericTag } from "effect/Context"
|
|
10
9
|
import * as Effect from "effect/Effect"
|
|
11
|
-
import { pipe } from "effect/Function"
|
|
12
10
|
import * as Layer from "effect/Layer"
|
|
11
|
+
import * as ServiceMap from "effect/ServiceMap"
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* @since 1.0.0
|
|
16
|
-
* @category
|
|
15
|
+
* @category Services
|
|
17
16
|
*/
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @since 1.0.0
|
|
24
|
-
* @category tag
|
|
25
|
-
*/
|
|
26
|
-
export const Resource = GenericTag<Resource, Resources.Resource>("@effect/opentelemetry/Resource")
|
|
17
|
+
export class Resource extends ServiceMap.Service<
|
|
18
|
+
Resource,
|
|
19
|
+
Resources.Resource
|
|
20
|
+
>()("@effect/opentelemetry/Resource") {}
|
|
27
21
|
|
|
28
22
|
/**
|
|
29
23
|
* @since 1.0.0
|
|
30
|
-
* @category
|
|
24
|
+
* @category Layers
|
|
31
25
|
*/
|
|
32
26
|
export const layer = (config: {
|
|
33
27
|
readonly serviceName: string
|
|
@@ -41,7 +35,7 @@ export const layer = (config: {
|
|
|
41
35
|
|
|
42
36
|
/**
|
|
43
37
|
* @since 1.0.0
|
|
44
|
-
* @category
|
|
38
|
+
* @category Configuration
|
|
45
39
|
*/
|
|
46
40
|
export const configToAttributes = (options: {
|
|
47
41
|
readonly serviceName: string
|
|
@@ -64,7 +58,7 @@ export const configToAttributes = (options: {
|
|
|
64
58
|
|
|
65
59
|
/**
|
|
66
60
|
* @since 1.0.0
|
|
67
|
-
* @category
|
|
61
|
+
* @category Layers
|
|
68
62
|
*/
|
|
69
63
|
export const layerFromEnv = (
|
|
70
64
|
additionalAttributes?:
|
|
@@ -74,10 +68,9 @@ export const layerFromEnv = (
|
|
|
74
68
|
Layer.effect(
|
|
75
69
|
Resource,
|
|
76
70
|
Effect.gen(function*() {
|
|
77
|
-
const serviceName = yield*
|
|
78
|
-
const attributes = yield* pipe(
|
|
79
|
-
Config.
|
|
80
|
-
Config.withDefault(""),
|
|
71
|
+
const serviceName = yield* Config.option(Config.string("OTEL_SERVICE_NAME"))
|
|
72
|
+
const attributes = yield* Config.string("OTEL_RESOURCE_ATTRIBUTES").pipe(
|
|
73
|
+
Config.withDefault(() => ""),
|
|
81
74
|
Config.map((s) => {
|
|
82
75
|
const attrs = s.split(",")
|
|
83
76
|
return Arr.reduce(attrs, {} as OtelApi.Attributes, (acc, attr) => {
|
|
@@ -88,8 +81,7 @@ export const layerFromEnv = (
|
|
|
88
81
|
acc[parts[0].trim()] = parts[1].trim()
|
|
89
82
|
return acc
|
|
90
83
|
})
|
|
91
|
-
})
|
|
92
|
-
Effect.orDie
|
|
84
|
+
})
|
|
93
85
|
)
|
|
94
86
|
if (serviceName._tag === "Some") {
|
|
95
87
|
attributes[OtelSemConv.ATTR_SERVICE_NAME] = serviceName.value
|
|
@@ -98,12 +90,12 @@ export const layerFromEnv = (
|
|
|
98
90
|
Object.assign(attributes, additionalAttributes)
|
|
99
91
|
}
|
|
100
92
|
return Resources.resourceFromAttributes(attributes)
|
|
101
|
-
})
|
|
93
|
+
}).pipe(Effect.orDie)
|
|
102
94
|
)
|
|
103
95
|
|
|
104
96
|
/**
|
|
105
|
-
* @since
|
|
106
|
-
* @category
|
|
97
|
+
* @since 1.0.0
|
|
98
|
+
* @category Layers
|
|
107
99
|
*/
|
|
108
100
|
export const layerEmpty = Layer.succeed(
|
|
109
101
|
Resource,
|