@platformatic/telemetry 3.0.0-alpha.1 → 3.0.0-alpha.3
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.
|
@@ -30,7 +30,11 @@ class FileSpanExporter {
|
|
|
30
30
|
#exportInfo (span) {
|
|
31
31
|
return {
|
|
32
32
|
traceId: span.spanContext().traceId,
|
|
33
|
-
parentId
|
|
33
|
+
// parentId has been removed from otel 2.0, we need to get it from parentSpanContext
|
|
34
|
+
parentSpanContext: {
|
|
35
|
+
traceId: span.parentSpanContext?.traceId,
|
|
36
|
+
spanId: span.parentSpanContext?.spanId
|
|
37
|
+
},
|
|
34
38
|
traceState: span.spanContext().traceState?.serialize(),
|
|
35
39
|
name: span.name,
|
|
36
40
|
id: span.spanContext().spanId,
|
|
@@ -42,7 +46,8 @@ class FileSpanExporter {
|
|
|
42
46
|
events: span.events,
|
|
43
47
|
links: span.links,
|
|
44
48
|
resource: span.resource,
|
|
45
|
-
instrumentationLibrary
|
|
49
|
+
// instrumentationLibrary is deprecated in otel 2.0, we need to use instrumentationScope
|
|
50
|
+
instrumentationScope: span.instrumentationLibrary || span.instrumentationScope
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
53
|
}
|
package/lib/node-telemetry.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const process = require('node:process')
|
|
4
|
+
const { resourceFromAttributes } = require('@opentelemetry/resources')
|
|
4
5
|
const { AsyncLocalStorage } = require('node:async_hooks')
|
|
5
6
|
const opentelemetry = require('@opentelemetry/sdk-node')
|
|
6
|
-
const { Resource } = require('@opentelemetry/resources')
|
|
7
7
|
const FileSpanExporter = require('./file-span-exporter')
|
|
8
8
|
const { ATTR_SERVICE_NAME } = require('@opentelemetry/semantic-conventions')
|
|
9
9
|
const { workerData } = require('node:worker_threads')
|
|
10
10
|
const { resolve } = require('node:path')
|
|
11
11
|
const { tmpdir } = require('node:os')
|
|
12
|
-
const { abstractLogger } = require('@platformatic/
|
|
12
|
+
const { abstractLogger } = require('@platformatic/foundation')
|
|
13
13
|
const { statSync, readFileSync } = require('node:fs') // We want to have all this synch
|
|
14
14
|
const util = require('node:util')
|
|
15
15
|
const { getInstrumentations } = require('./pluggable-instrumentations')
|
|
@@ -99,7 +99,7 @@ const setupNodeHTTPTelemetry = async (opts, serviceDir) => {
|
|
|
99
99
|
new HttpInstrumentation(),
|
|
100
100
|
...additionalInstrumentations
|
|
101
101
|
],
|
|
102
|
-
resource:
|
|
102
|
+
resource: resourceFromAttributes({
|
|
103
103
|
[ATTR_SERVICE_NAME]: serviceName
|
|
104
104
|
})
|
|
105
105
|
})
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const {
|
|
4
|
-
const {
|
|
5
|
-
const {
|
|
3
|
+
const { emptyResource } = require('@opentelemetry/resources')
|
|
4
|
+
const { merge, CompositePropagator, W3CTraceContextPropagator } = require('@opentelemetry/core')
|
|
5
|
+
const { AlwaysOnSampler } = require('@opentelemetry/sdk-trace-base')
|
|
6
|
+
// We need to import the Tracer to write our own TracerProvider that does NOT extend the OpenTelemetry one.
|
|
7
|
+
const { Tracer } = require('@opentelemetry/sdk-trace-base/build/src/Tracer')
|
|
6
8
|
const { MultiSpanProcessor } = require('./multispan-processor')
|
|
7
9
|
|
|
8
10
|
class PlatformaticTracerProvider {
|
|
@@ -20,15 +22,15 @@ class PlatformaticTracerProvider {
|
|
|
20
22
|
},
|
|
21
23
|
config
|
|
22
24
|
)
|
|
23
|
-
this.resource = mergedConfig.resource ??
|
|
25
|
+
this.resource = mergedConfig.resource ?? emptyResource
|
|
24
26
|
this._config = Object.assign({}, mergedConfig, {
|
|
25
27
|
resource: this.resource,
|
|
26
28
|
})
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
// This is the only mandatory API: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#get-a-tracer
|
|
30
|
-
getTracer (name, version
|
|
31
|
-
return new Tracer({ name, version }, this._config, this)
|
|
32
|
+
getTracer (name, version) {
|
|
33
|
+
return new Tracer({ name, version }, this._config, this.resource, this.activeSpanProcessor)
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
addSpanProcessor (spanProcessor) {
|
|
@@ -56,7 +58,6 @@ class PlatformaticTracerProvider {
|
|
|
56
58
|
|
|
57
59
|
forceFlush () {
|
|
58
60
|
// Let's do a fire-and-forget of forceFlush on all the processor for the time being.
|
|
59
|
-
// TODO: manage errors
|
|
60
61
|
this._registeredSpanProcessors.forEach(spanProcessor => spanProcessor.forceFlush())
|
|
61
62
|
}
|
|
62
63
|
|
package/lib/schema.js
CHANGED
package/lib/telemetry-config.js
CHANGED
|
@@ -18,7 +18,7 @@ const {
|
|
|
18
18
|
|
|
19
19
|
const FileSpanExporter = require('./file-span-exporter')
|
|
20
20
|
|
|
21
|
-
const {
|
|
21
|
+
const { resourceFromAttributes } = require('@opentelemetry/resources')
|
|
22
22
|
const { PlatformaticTracerProvider } = require('./platformatic-trace-provider')
|
|
23
23
|
|
|
24
24
|
const { name: moduleName, version: moduleVersion } = require('../package.json')
|
|
@@ -98,7 +98,7 @@ const initTelemetry = (opts, logger) => {
|
|
|
98
98
|
)
|
|
99
99
|
|
|
100
100
|
const provider = new PlatformaticTracerProvider({
|
|
101
|
-
resource:
|
|
101
|
+
resource: resourceFromAttributes({
|
|
102
102
|
[ATTR_SERVICE_NAME]: serviceName,
|
|
103
103
|
[ATTR_SERVICE_VERSION]: version,
|
|
104
104
|
}),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platformatic/telemetry",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.3",
|
|
4
4
|
"description": "OpenTelemetry integration for Platformatic",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": "Platformatic Inc. <oss@platformatic.dev> (https://platformatic.dev)",
|
|
@@ -11,31 +11,34 @@
|
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@databases/pg": "^5.5.0",
|
|
14
|
-
"@opentelemetry/instrumentation-express": "^0.
|
|
15
|
-
"@opentelemetry/instrumentation-pg": "^0.
|
|
16
|
-
"borp": "^0.20.
|
|
17
|
-
"express": "^
|
|
18
|
-
"fastify": "^5.
|
|
19
|
-
"neostandard": "^0.12.
|
|
20
|
-
"protobufjs": "^7.5.
|
|
21
|
-
"typescript": "^5.
|
|
14
|
+
"@opentelemetry/instrumentation-express": "^0.52.0",
|
|
15
|
+
"@opentelemetry/instrumentation-pg": "^0.55.0",
|
|
16
|
+
"borp": "^0.20.1",
|
|
17
|
+
"express": "^5.1.0",
|
|
18
|
+
"fastify": "^5.4.0",
|
|
19
|
+
"neostandard": "^0.12.2",
|
|
20
|
+
"protobufjs": "^7.5.3",
|
|
21
|
+
"typescript": "^5.9.2"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@fastify/swagger": "^9.
|
|
25
|
-
"@opentelemetry/api": "^1.
|
|
26
|
-
"@opentelemetry/core": "^
|
|
27
|
-
"@opentelemetry/exporter-trace-otlp-proto": "^0.
|
|
28
|
-
"@opentelemetry/exporter-zipkin": "^
|
|
29
|
-
"@opentelemetry/instrumentation": "^0.
|
|
30
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
31
|
-
"@opentelemetry/instrumentation-undici": "^0.
|
|
32
|
-
"@opentelemetry/resources": "^
|
|
33
|
-
"@opentelemetry/sdk-node": "^0.
|
|
34
|
-
"@opentelemetry/sdk-trace-base": "^
|
|
35
|
-
"@opentelemetry/semantic-conventions": "1.
|
|
36
|
-
"fast-uri": "^3.0.
|
|
37
|
-
"fastify-plugin": "^5.0.
|
|
38
|
-
"@platformatic/
|
|
24
|
+
"@fastify/swagger": "^9.5.1",
|
|
25
|
+
"@opentelemetry/api": "^1.9.0",
|
|
26
|
+
"@opentelemetry/core": "^2.0.1",
|
|
27
|
+
"@opentelemetry/exporter-trace-otlp-proto": "^0.203.0",
|
|
28
|
+
"@opentelemetry/exporter-zipkin": "^2.0.1",
|
|
29
|
+
"@opentelemetry/instrumentation": "^0.203.0",
|
|
30
|
+
"@opentelemetry/instrumentation-http": "^0.203.0",
|
|
31
|
+
"@opentelemetry/instrumentation-undici": "^0.14.0",
|
|
32
|
+
"@opentelemetry/resources": "^2.0.1",
|
|
33
|
+
"@opentelemetry/sdk-node": "^0.203.0",
|
|
34
|
+
"@opentelemetry/sdk-trace-base": "^2.0.1",
|
|
35
|
+
"@opentelemetry/semantic-conventions": "1.36.0",
|
|
36
|
+
"fast-uri": "^3.0.6",
|
|
37
|
+
"fastify-plugin": "^5.0.1",
|
|
38
|
+
"@platformatic/foundation": "3.0.0-alpha.3"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=22.18.0"
|
|
39
42
|
},
|
|
40
43
|
"scripts": {
|
|
41
44
|
"test": "npm run lint && borp --timeout=120000 --concurrency=1",
|