@platformatic/telemetry 2.8.0 → 2.8.1
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/index.js +0 -2
- package/lib/node-http-telemetry.js +36 -7
- package/lib/telemetry-config.js +1 -1
- package/package.json +3 -3
package/index.js
CHANGED
|
@@ -3,13 +3,19 @@ const process = require('node:process')
|
|
|
3
3
|
const opentelemetry = require('@opentelemetry/sdk-node')
|
|
4
4
|
const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http')
|
|
5
5
|
const { Resource } = require('@opentelemetry/resources')
|
|
6
|
-
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions')
|
|
7
6
|
const setupTelemetry = require('./telemetry-config')
|
|
7
|
+
const { ATTR_SERVICE_NAME } = require('@opentelemetry/semantic-conventions')
|
|
8
|
+
const { pino } = require('pino')
|
|
9
|
+
const { workerData } = require('node:worker_threads')
|
|
10
|
+
const { resolve } = require('node:path')
|
|
11
|
+
const { tmpdir } = require('node:os')
|
|
12
|
+
const { statSync, readFileSync } = require('node:fs') // We want to have all this synch
|
|
8
13
|
|
|
9
|
-
const
|
|
14
|
+
const logger = pino()
|
|
15
|
+
|
|
16
|
+
const setupNodeHTTPTelemetry = (opts) => {
|
|
10
17
|
const { serviceName } = opts
|
|
11
|
-
logger.info(`Setting up Node.js
|
|
12
|
-
// We setup the telemetry to init the spanProcessors, then we pass them to the SDK
|
|
18
|
+
logger.info(`Setting up Node.js Open Telemetry instrumentation for service: ${serviceName}`)
|
|
13
19
|
const { spanProcessors } = setupTelemetry(opts, logger)
|
|
14
20
|
const sdk = new opentelemetry.NodeSDK({
|
|
15
21
|
spanProcessors, // https://github.com/open-telemetry/opentelemetry-js/issues/4881#issuecomment-2358059714
|
|
@@ -17,12 +23,11 @@ const setupNodeHTTPTelemetry = (opts, logger) => {
|
|
|
17
23
|
new HttpInstrumentation(),
|
|
18
24
|
],
|
|
19
25
|
resource: new Resource({
|
|
20
|
-
[
|
|
26
|
+
[ATTR_SERVICE_NAME]: serviceName
|
|
21
27
|
})
|
|
22
28
|
})
|
|
23
29
|
sdk.start()
|
|
24
30
|
|
|
25
|
-
// gracefully shut down the SDK on process exit
|
|
26
31
|
process.on('SIGTERM', () => {
|
|
27
32
|
sdk.shutdown()
|
|
28
33
|
.then(() => console.log('Tracing terminated'))
|
|
@@ -30,4 +35,28 @@ const setupNodeHTTPTelemetry = (opts, logger) => {
|
|
|
30
35
|
})
|
|
31
36
|
}
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
let data = null
|
|
39
|
+
const useWorkerData = !!workerData
|
|
40
|
+
|
|
41
|
+
if (useWorkerData) {
|
|
42
|
+
data = workerData
|
|
43
|
+
} else if (process.env.PLT_MANAGER_ID) {
|
|
44
|
+
try {
|
|
45
|
+
const dataPath = resolve(tmpdir(), 'platformatic', 'runtimes', `${process.env.PLT_MANAGER_ID}.json`)
|
|
46
|
+
statSync(dataPath)
|
|
47
|
+
const jsonData = JSON.parse(readFileSync(dataPath, 'utf8'))
|
|
48
|
+
data = jsonData.data
|
|
49
|
+
logger.debug(`Loaded data from ${dataPath}`)
|
|
50
|
+
} catch (e) {
|
|
51
|
+
logger.error('Error reading data from file', e)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (data) {
|
|
56
|
+
logger.info({ data }, 'Setting up telemetry')
|
|
57
|
+
const telemetryConfig = useWorkerData ? data?.serviceConfig?.telemetry : data?.telemetryConfig
|
|
58
|
+
if (telemetryConfig) {
|
|
59
|
+
logger.debug({ telemetryConfig }, 'telemetryConfig')
|
|
60
|
+
setupNodeHTTPTelemetry(telemetryConfig)
|
|
61
|
+
}
|
|
62
|
+
}
|
package/lib/telemetry-config.js
CHANGED
|
@@ -25,7 +25,7 @@ const setupTelemetry = (opts, logger) => {
|
|
|
25
25
|
const exporters = Array.isArray(exporter) ? exporter : [exporter]
|
|
26
26
|
|
|
27
27
|
logger.debug(
|
|
28
|
-
`Setting up telemetry for service: ${serviceName}${version ? ' version: ' + version : ''} with exporter of type ${exporter.type}`
|
|
28
|
+
`Setting up platformatic telemetry for service: ${serviceName}${version ? ' version: ' + version : ''} with exporter of type ${exporter.type}`
|
|
29
29
|
)
|
|
30
30
|
|
|
31
31
|
const provider = new PlatformaticTracerProvider({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platformatic/telemetry",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.1",
|
|
4
4
|
"description": "OpenTelemetry integration for Platformatic",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": "Platformatic Inc. <oss@platformatic.dev> (https://platformatic.dev)",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"@opentelemetry/api": "^1.8.0",
|
|
22
22
|
"@opentelemetry/auto-instrumentations-node": "^0.52.0",
|
|
23
23
|
"@opentelemetry/core": "^1.22.0",
|
|
24
|
-
"@opentelemetry/exporter-trace-otlp-proto": "^0.
|
|
24
|
+
"@opentelemetry/exporter-trace-otlp-proto": "^0.54.0",
|
|
25
25
|
"@opentelemetry/exporter-zipkin": "^1.22.0",
|
|
26
26
|
"@opentelemetry/resources": "^1.22.0",
|
|
27
|
-
"@opentelemetry/sdk-node": "^0.
|
|
27
|
+
"@opentelemetry/sdk-node": "^0.54.0",
|
|
28
28
|
"@opentelemetry/sdk-trace-base": "^1.22.0",
|
|
29
29
|
"@opentelemetry/semantic-conventions": "^1.22.0",
|
|
30
30
|
"fast-uri": "^2.3.0",
|