mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 17:19:37 +02:00
Merge pull request #10227 from overleaf/spd-td-opentelementry
Add opentelemetry to dev environment GitOrigin-RevId: 31a8234197337a264412b411429692525793c8b0
This commit is contained in:
committed by
Copybot
parent
5b9261e13e
commit
3d9c8f80f4
@@ -3,6 +3,7 @@ const os = require('os')
|
||||
const ExpressCompression = require('compression')
|
||||
const promClient = require('prom-client')
|
||||
const promWrapper = require('./prom_wrapper')
|
||||
const tracing = require('./tracing')
|
||||
|
||||
const DEFAULT_APP_NAME = 'unknown'
|
||||
|
||||
@@ -29,6 +30,9 @@ function configure(opts = {}) {
|
||||
*/
|
||||
function initialize(appName, opts = {}) {
|
||||
appName = appName || DEFAULT_APP_NAME
|
||||
if (tracing.tracingEnabled()) {
|
||||
tracing.initialize(appName)
|
||||
}
|
||||
configure({ ...opts, appName })
|
||||
collectDefaultMetrics({ timeout: 5000, prefix: '' })
|
||||
promWrapper.setupSweeping()
|
||||
|
||||
@@ -8,8 +8,17 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@google-cloud/debug-agent": "^5.1.2",
|
||||
"@google-cloud/opentelemetry-cloud-trace-exporter": "^1.1.0",
|
||||
"@google-cloud/profiler": "^4.1.3",
|
||||
"@google-cloud/trace-agent": "^5.1.1",
|
||||
"@opentelemetry/api": "^1.0.4",
|
||||
"@opentelemetry/auto-instrumentations-node": "^0.28.0",
|
||||
"@opentelemetry/exporter-collector": "^0.25.0",
|
||||
"@opentelemetry/exporter-jaeger": "^1.2.0",
|
||||
"@opentelemetry/exporter-trace-otlp-http": "^0.28.0",
|
||||
"@opentelemetry/resources": "^1.2.0",
|
||||
"@opentelemetry/sdk-node": "^0.28.0",
|
||||
"@opentelemetry/semantic-conventions": "^1.2.0",
|
||||
"compression": "^1.7.4",
|
||||
"prom-client": "^11.1.3",
|
||||
"yn": "^3.1.1"
|
||||
|
||||
58
libraries/metrics/tracing.js
Normal file
58
libraries/metrics/tracing.js
Normal file
@@ -0,0 +1,58 @@
|
||||
const opentelemetry = require('@opentelemetry/sdk-node')
|
||||
const {
|
||||
getNodeAutoInstrumentations,
|
||||
} = require('@opentelemetry/auto-instrumentations-node')
|
||||
const {
|
||||
diag,
|
||||
DiagConsoleLogger,
|
||||
DiagLogLevel,
|
||||
trace,
|
||||
} = require('@opentelemetry/api')
|
||||
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger')
|
||||
const { Resource } = require('@opentelemetry/resources')
|
||||
const {
|
||||
SemanticResourceAttributes,
|
||||
} = require('@opentelemetry/semantic-conventions')
|
||||
const GCP = require('@google-cloud/opentelemetry-cloud-trace-exporter')
|
||||
|
||||
let tracer
|
||||
|
||||
function tracingEnabled() {
|
||||
return process.env.GCP_OPENTELEMETRY || process.env.JAEGER_OPENTELEMETRY
|
||||
}
|
||||
|
||||
function initialize(appName) {
|
||||
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO)
|
||||
|
||||
const resource = new Resource({
|
||||
[SemanticResourceAttributes.SERVICE_NAME]: appName,
|
||||
[SemanticResourceAttributes.SERVICE_NAMESPACE]: 'Overleaf',
|
||||
'host.type': 'VM',
|
||||
})
|
||||
|
||||
let exporter
|
||||
if (process.env.GCP_OPENTELEMETRY) {
|
||||
exporter = new GCP.TraceExporter()
|
||||
} else if (process.env.JAEGER_OPENTELEMETRY) {
|
||||
exporter = new JaegerExporter({ host: process.env.JAEGER_HOST || 'jaeger' })
|
||||
} else {
|
||||
return
|
||||
}
|
||||
|
||||
const sdk = new opentelemetry.NodeSDK({
|
||||
traceExporter: exporter,
|
||||
logger: console,
|
||||
|
||||
instrumentations: [getNodeAutoInstrumentations()],
|
||||
resource,
|
||||
})
|
||||
|
||||
tracer = trace.getTracer(appName)
|
||||
sdk.start()
|
||||
}
|
||||
|
||||
function getTracer() {
|
||||
return tracer
|
||||
}
|
||||
|
||||
module.exports = { initialize, getTracer, tracingEnabled }
|
||||
Reference in New Issue
Block a user