dd-trace
Version:
Datadog APM tracing client for JavaScript
79 lines (68 loc) • 2.2 kB
JavaScript
/**
* Protobuf Loader for OpenTelemetry Logs, Traces, and Metrics
*
* This module loads protobuf definitions for OpenTelemetry logs, traces, and metrics.
*
* VERSION SUPPORT:
* - OTLP Protocol: v1.7.0
* - Protobuf Definitions: v1.7.0 (vendored from opentelemetry-proto)
* - Other versions are not supported
*
* Reference:
* - https://github.com/open-telemetry/opentelemetry-proto (v1.7.0)
*/
const path = require('path')
const protobuf = require('../../../../../vendor/dist/protobufjs')
let _root = null
let protoLogsService = null
let protoSeverityNumber = null
let protoTraceService = null
let protoSpanKind = null
let protoMetricsService = null
let protoAggregationTemporality = null
function getProtobufTypes () {
if (_root) {
return {
protoLogsService,
protoSeverityNumber,
protoTraceService,
protoSpanKind,
protoMetricsService,
protoAggregationTemporality,
}
}
// Load the proto files
const protoDir = __dirname
const protoFiles = [
'common.proto',
'resource.proto',
'logs.proto',
'logs_service.proto',
'trace.proto',
'trace_service.proto',
'metrics.proto',
'metrics_service.proto',
].map(file => path.join(protoDir, file))
_root = protobuf.loadSync(protoFiles)
// Get the message types for logs
protoLogsService = _root.lookupType('opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest')
protoSeverityNumber = _root.lookupEnum('opentelemetry.proto.logs.v1.SeverityNumber')
// Get the message types for traces
protoTraceService = _root.lookupType('opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest')
protoSpanKind = _root.lookupEnum('opentelemetry.proto.trace.v1.SpanKind')
// Get the message types for metrics
protoMetricsService = _root.lookupType('opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest')
protoAggregationTemporality = _root.lookupEnum('opentelemetry.proto.metrics.v1.AggregationTemporality')
return {
protoLogsService,
protoSeverityNumber,
protoTraceService,
protoSpanKind,
protoMetricsService,
protoAggregationTemporality,
}
}
module.exports = {
getProtobufTypes,
}