@live-change/server 0.9.171 → 0.9.174
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 +3 -1
- package/lib/setupTelemetry.js +112 -0
- package/package.json +15 -7
package/index.js
CHANGED
|
@@ -12,6 +12,7 @@ import { setupApiEndpoints, setupEndpointsProxyPaths } from './lib/setupApiEndpo
|
|
|
12
12
|
import setupDbServer from './lib/setupDbServer.js'
|
|
13
13
|
import setupDbClient from './lib/setupDbClient.js'
|
|
14
14
|
import setupApp from './lib/setupApp.js'
|
|
15
|
+
import setupTelemetry from './lib/setupTelemetry.js'
|
|
15
16
|
|
|
16
17
|
import serverDao from './lib/serverDao.js'
|
|
17
18
|
|
|
@@ -31,5 +32,6 @@ export {
|
|
|
31
32
|
setupEndpointsProxyPaths,
|
|
32
33
|
setupDbServer,
|
|
33
34
|
setupDbClient,
|
|
34
|
-
setupApp
|
|
35
|
+
setupApp,
|
|
36
|
+
setupTelemetry
|
|
35
37
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { NodeSDK } from '@opentelemetry/sdk-node'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
getNodeAutoInstrumentations,
|
|
5
|
+
} from '@opentelemetry/auto-instrumentations-node'
|
|
6
|
+
|
|
7
|
+
import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node'
|
|
8
|
+
import {
|
|
9
|
+
PeriodicExportingMetricReader,
|
|
10
|
+
ConsoleMetricExporter,
|
|
11
|
+
} from '@opentelemetry/sdk-metrics'
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
OTLPTraceExporter,
|
|
15
|
+
} from '@opentelemetry/exporter-trace-otlp-proto'
|
|
16
|
+
import {
|
|
17
|
+
OTLPMetricExporter,
|
|
18
|
+
} from '@opentelemetry/exporter-metrics-otlp-proto'
|
|
19
|
+
|
|
20
|
+
import { Resource } from '@opentelemetry/resources'
|
|
21
|
+
|
|
22
|
+
import {
|
|
23
|
+
SEMRESATTRS_SERVICE_NAME,
|
|
24
|
+
SEMRESATTRS_SERVICE_VERSION,
|
|
25
|
+
} from '@opentelemetry/semantic-conventions'
|
|
26
|
+
|
|
27
|
+
import { logs } from '@opentelemetry/api-logs'
|
|
28
|
+
import {
|
|
29
|
+
LoggerProvider,
|
|
30
|
+
SimpleLogRecordProcessor,
|
|
31
|
+
ConsoleLogRecordExporter,
|
|
32
|
+
BatchLogRecordProcessor,
|
|
33
|
+
} from '@opentelemetry/sdk-logs'
|
|
34
|
+
|
|
35
|
+
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http'
|
|
36
|
+
|
|
37
|
+
export default async function setupTelemetry(settings, appConfig = {}) {
|
|
38
|
+
|
|
39
|
+
const { otelUrl, otelHeaders, otelServiceName } = settings
|
|
40
|
+
|
|
41
|
+
if(!otelUrl) {
|
|
42
|
+
console.log("no telemetry DSN provided - skipping telemetry setup")
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const resource = new Resource({
|
|
47
|
+
[SEMRESATTRS_SERVICE_NAME]: otelServiceName || appConfig.clientConfig.name,
|
|
48
|
+
[SEMRESATTRS_SERVICE_VERSION]: appConfig.clientConfig.version,
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
if(otelUrl === 'console') {
|
|
52
|
+
const sdk = new NodeSDK({
|
|
53
|
+
resource,
|
|
54
|
+
traceExporter: new ConsoleSpanExporter(),
|
|
55
|
+
metricReader: new PeriodicExportingMetricReader({
|
|
56
|
+
exporter: new ConsoleMetricExporter(),
|
|
57
|
+
}),
|
|
58
|
+
instrumentations: [getNodeAutoInstrumentations()],
|
|
59
|
+
})
|
|
60
|
+
const loggerProvider = new LoggerProvider({
|
|
61
|
+
resource,
|
|
62
|
+
})
|
|
63
|
+
loggerProvider.addLogRecordProcessor(
|
|
64
|
+
new SimpleLogRecordProcessor(new ConsoleLogRecordExporter())
|
|
65
|
+
)
|
|
66
|
+
logs.setGlobalLoggerProvider(loggerProvider)
|
|
67
|
+
await sdk.start()
|
|
68
|
+
|
|
69
|
+
console.log('OpenTelemetry console setup complete')
|
|
70
|
+
return
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
const address = otelUrl
|
|
75
|
+
const headers = Object.fromEntries(otelHeaders.split(';').map(item => [
|
|
76
|
+
item.slice(0, item.indexOf('=')),
|
|
77
|
+
item.slice(item.indexOf('=') + 1)
|
|
78
|
+
])) // parse headers
|
|
79
|
+
|
|
80
|
+
console.log("OpenTelemetry setup with URL", address, 'and headers', headers)
|
|
81
|
+
|
|
82
|
+
const sdk = new NodeSDK({
|
|
83
|
+
resource,
|
|
84
|
+
traceExporter: new OTLPTraceExporter({
|
|
85
|
+
url: address + '/v1/traces',
|
|
86
|
+
headers,
|
|
87
|
+
}),
|
|
88
|
+
metricReader: new PeriodicExportingMetricReader({
|
|
89
|
+
exporter: new OTLPMetricExporter({
|
|
90
|
+
url: address + '/v1/metrics',
|
|
91
|
+
headers,
|
|
92
|
+
concurrencyLimit: 1
|
|
93
|
+
}),
|
|
94
|
+
}),
|
|
95
|
+
|
|
96
|
+
instrumentations: [getNodeAutoInstrumentations()],
|
|
97
|
+
})
|
|
98
|
+
const loggerProvider = new LoggerProvider({
|
|
99
|
+
resource,
|
|
100
|
+
})
|
|
101
|
+
loggerProvider.addLogRecordProcessor(
|
|
102
|
+
new BatchLogRecordProcessor(new OTLPLogExporter({
|
|
103
|
+
url: address + '/v1/logs',
|
|
104
|
+
headers, // an optional object containing custom headers to be sent with each request
|
|
105
|
+
concurrencyLimit: 1, // an optional limit on pending requests
|
|
106
|
+
}))
|
|
107
|
+
)
|
|
108
|
+
logs.setGlobalLoggerProvider(loggerProvider)
|
|
109
|
+
await sdk.start()
|
|
110
|
+
|
|
111
|
+
console.log("OpenTelemetry setup complete")
|
|
112
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@live-change/server",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.174",
|
|
4
4
|
"description": "Live Change Framework - server",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,12 +22,20 @@
|
|
|
22
22
|
"type": "module",
|
|
23
23
|
"homepage": "https://github.com/live-change/live-change-stack",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@live-change/dao": "^0.9.
|
|
26
|
-
"@live-change/dao-sockjs": "^0.9.
|
|
27
|
-
"@live-change/db-server": "^0.9.
|
|
28
|
-
"@live-change/framework": "^0.9.
|
|
25
|
+
"@live-change/dao": "^0.9.174",
|
|
26
|
+
"@live-change/dao-sockjs": "^0.9.174",
|
|
27
|
+
"@live-change/db-server": "^0.9.174",
|
|
28
|
+
"@live-change/framework": "^0.9.174",
|
|
29
29
|
"@live-change/sockjs": "0.4.1",
|
|
30
|
-
"@live-change/uid": "^0.9.
|
|
30
|
+
"@live-change/uid": "^0.9.174",
|
|
31
|
+
"@opentelemetry/api": "^1.8.0",
|
|
32
|
+
"@opentelemetry/auto-instrumentations-node": "^0.43.0",
|
|
33
|
+
"@opentelemetry/exporter-logs-otlp-http": "^0.52.0",
|
|
34
|
+
"@opentelemetry/exporter-metrics-otlp-proto": "^0.52.0",
|
|
35
|
+
"@opentelemetry/exporter-trace-otlp-proto": "^0.52.0",
|
|
36
|
+
"@opentelemetry/sdk-metrics": "^1.22.0",
|
|
37
|
+
"@opentelemetry/sdk-node": "^0.49.1",
|
|
38
|
+
"@opentelemetry/sdk-trace-node": "^1.22.0",
|
|
31
39
|
"dotenv": "^17.2.1",
|
|
32
40
|
"express": "^4.18.2",
|
|
33
41
|
"express-static-gzip": "2.1.7",
|
|
@@ -39,5 +47,5 @@
|
|
|
39
47
|
"websocket": "^1.0.34",
|
|
40
48
|
"yargs": "^17.7.2"
|
|
41
49
|
},
|
|
42
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "6ebdadad702526df240bd3aa7ac3d97324a0308a"
|
|
43
51
|
}
|