mirror of
https://github.com/datahub-project/datahub.git
synced 2025-06-27 05:03:31 +00:00
fix(opentelemetry): Resolve type mismatch in metrics exporter (#13053)
Co-authored-by: Pedro Silva <pedro@acryl.io>
This commit is contained in:
parent
b37fa03846
commit
c1f6bd171e
@ -226,8 +226,11 @@ project.ext.externalDependency = [
|
|||||||
'opentelemetryApi': 'io.opentelemetry:opentelemetry-api:' + openTelemetryVersion,
|
'opentelemetryApi': 'io.opentelemetry:opentelemetry-api:' + openTelemetryVersion,
|
||||||
'opentelemetrySdk': 'io.opentelemetry:opentelemetry-sdk:' + openTelemetryVersion,
|
'opentelemetrySdk': 'io.opentelemetry:opentelemetry-sdk:' + openTelemetryVersion,
|
||||||
'opentelemetrySdkTrace': 'io.opentelemetry:opentelemetry-sdk-trace:' + openTelemetryVersion,
|
'opentelemetrySdkTrace': 'io.opentelemetry:opentelemetry-sdk-trace:' + openTelemetryVersion,
|
||||||
|
'opentelemetrySdkMetrics': 'io.opentelemetry:opentelemetry-sdk-metrics:' + openTelemetryVersion,
|
||||||
'opentelemetryAutoConfig': 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:' + openTelemetryVersion,
|
'opentelemetryAutoConfig': 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:' + openTelemetryVersion,
|
||||||
'opentelemetryExporter': 'io.opentelemetry:opentelemetry-exporter-otlp:' + openTelemetryVersion,
|
'opentelemetryExporter': 'io.opentelemetry:opentelemetry-exporter-otlp:' + openTelemetryVersion,
|
||||||
|
'openTelemetryExporterLogging': 'io.opentelemetry:opentelemetry-exporter-logging:' + openTelemetryVersion,
|
||||||
|
'openTelemetryExporterCommon': 'io.opentelemetry:opentelemetry-exporter-otlp-common:' + openTelemetryVersion,
|
||||||
'opentelemetryAnnotations': 'io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:2.11.0',
|
'opentelemetryAnnotations': 'io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:2.11.0',
|
||||||
'opentracingJdbc':'io.opentracing.contrib:opentracing-jdbc:0.2.15',
|
'opentracingJdbc':'io.opentracing.contrib:opentracing-jdbc:0.2.15',
|
||||||
'parquet': 'org.apache.parquet:parquet-avro:1.15.1',
|
'parquet': 'org.apache.parquet:parquet-avro:1.15.1',
|
||||||
|
@ -95,6 +95,8 @@ dependencies {
|
|||||||
compileOnly externalDependency.lombok
|
compileOnly externalDependency.lombok
|
||||||
runtimeOnly externalDependency.guicePlay
|
runtimeOnly externalDependency.guicePlay
|
||||||
runtimeOnly externalDependency.opentelemetryExporter
|
runtimeOnly externalDependency.opentelemetryExporter
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterLogging
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterCommon
|
||||||
runtimeOnly (externalDependency.playDocs) {
|
runtimeOnly (externalDependency.playDocs) {
|
||||||
exclude group: 'com.typesafe.akka', module: "akka-http-core_$playScalaVersion"
|
exclude group: 'com.typesafe.akka', module: "akka-http-core_$playScalaVersion"
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,8 @@ dependencies {
|
|||||||
implementation externalDependency.springCore
|
implementation externalDependency.springCore
|
||||||
implementation externalDependency.springKafka
|
implementation externalDependency.springKafka
|
||||||
runtimeOnly externalDependency.opentelemetryExporter
|
runtimeOnly externalDependency.opentelemetryExporter
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterLogging
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterCommon
|
||||||
|
|
||||||
runtimeOnly externalDependency.logbackClassic
|
runtimeOnly externalDependency.logbackClassic
|
||||||
runtimeOnly externalDependency.mariadbConnector
|
runtimeOnly externalDependency.mariadbConnector
|
||||||
|
14
docker/datahub-actions/env/docker.env
vendored
14
docker/datahub-actions/env/docker.env
vendored
@ -36,3 +36,17 @@ DATAHUB_ACTIONS_TEAMS_ENABLED
|
|||||||
DATAHUB_ACTIONS_TEAMS_DATAHUB_BASE_URL
|
DATAHUB_ACTIONS_TEAMS_DATAHUB_BASE_URL
|
||||||
DATAHUB_ACTIONS_TEAMS_WEBHOOK_URL
|
DATAHUB_ACTIONS_TEAMS_WEBHOOK_URL
|
||||||
DATAHUB_ACTIONS_TEAMS_SUPPRESS_SYSTEM_ACTIVITY
|
DATAHUB_ACTIONS_TEAMS_SUPPRESS_SYSTEM_ACTIVITY
|
||||||
|
|
||||||
|
# Uncomment the following to enable monitoring
|
||||||
|
# ENABLE_PROMETHEUS=true
|
||||||
|
# DATAHUB_DEBUG=true
|
||||||
|
# ENABLE_OTEL=true
|
||||||
|
# OTEL_RESOURCE_ATTRIBUTE={"service.name": "datahub-actions"}
|
||||||
|
# OTEL_SERVICE_NAME=datahub-actions
|
||||||
|
# OTEL_LOG_LEVEL=debug
|
||||||
|
# OTEL_METRICS_EXPORTER=console
|
||||||
|
# OTEL_TRACES_EXPORTER=console
|
||||||
|
# OTEL_LOGS_EXPORTER=console
|
||||||
|
# OTEL_SDK_DISABLED=false
|
||||||
|
# OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true
|
||||||
|
# OTEL_PROPAGATORS=tracecontext,baggage
|
14
docker/datahub-frontend/env/docker.env
vendored
14
docker/datahub-frontend/env/docker.env
vendored
@ -69,3 +69,17 @@ ELASTIC_CLIENT_PORT=9200
|
|||||||
# set ELASTIC_CLIENT_USE_SSL=true and uncomment:
|
# set ELASTIC_CLIENT_USE_SSL=true and uncomment:
|
||||||
# ELASTIC_CLIENT_USERNAME=
|
# ELASTIC_CLIENT_USERNAME=
|
||||||
# ELASTIC_CLIENT_PASSWORD=
|
# ELASTIC_CLIENT_PASSWORD=
|
||||||
|
|
||||||
|
# Uncomment the following to enable monitoring
|
||||||
|
# ENABLE_PROMETHEUS=true
|
||||||
|
# DATAHUB_DEBUG=true
|
||||||
|
# ENABLE_OTEL=true
|
||||||
|
# OTEL_RESOURCE_ATTRIBUTE={"service.name": "datahub-frontend"}
|
||||||
|
# OTEL_SERVICE_NAME=datahub-frontend
|
||||||
|
# OTEL_LOG_LEVEL=debug
|
||||||
|
# OTEL_METRICS_EXPORTER=console
|
||||||
|
# OTEL_TRACES_EXPORTER=console
|
||||||
|
# OTEL_LOGS_EXPORTER=console
|
||||||
|
# OTEL_SDK_DISABLED=false
|
||||||
|
# OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true
|
||||||
|
# OTEL_PROPAGATORS=tracecontext,baggage
|
14
docker/datahub-gms/env/docker.env
vendored
14
docker/datahub-gms/env/docker.env
vendored
@ -85,3 +85,17 @@ THEME_V2_DEFAULT=true
|
|||||||
# Uncomment to run a one-time upgrade to migrate legacy default browse path format to latest format
|
# Uncomment to run a one-time upgrade to migrate legacy default browse path format to latest format
|
||||||
# More details can be found at https://datahubproject.io/docs/advanced/browse-paths-upgrade
|
# More details can be found at https://datahubproject.io/docs/advanced/browse-paths-upgrade
|
||||||
# UPGRADE_DEFAULT_BROWSE_PATHS_ENABLED=true
|
# UPGRADE_DEFAULT_BROWSE_PATHS_ENABLED=true
|
||||||
|
|
||||||
|
# Uncomment the following to enable monitoring
|
||||||
|
# ENABLE_PROMETHEUS=true
|
||||||
|
# DATAHUB_DEBUG=true
|
||||||
|
# ENABLE_OTEL=true
|
||||||
|
# OTEL_RESOURCE_ATTRIBUTE={"service.name": "datahub-gms"}
|
||||||
|
# OTEL_SERVICE_NAME=datahub-gms
|
||||||
|
# OTEL_LOG_LEVEL=debug
|
||||||
|
# OTEL_METRICS_EXPORTER=console
|
||||||
|
# OTEL_TRACES_EXPORTER=console
|
||||||
|
# OTEL_LOGS_EXPORTER=console
|
||||||
|
# OTEL_SDK_DISABLED=false
|
||||||
|
# OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true
|
||||||
|
# OTEL_PROPAGATORS=tracecontext,baggage
|
14
docker/datahub-mae-consumer/env/docker.env
vendored
14
docker/datahub-mae-consumer/env/docker.env
vendored
@ -39,3 +39,17 @@ ENTITY_REGISTRY_CONFIG_PATH=/datahub/datahub-mae-consumer/resources/entity-regis
|
|||||||
# ELASTICSEARCH_SSL_KEYSTORE_FILE=
|
# ELASTICSEARCH_SSL_KEYSTORE_FILE=
|
||||||
# ELASTICSEARCH_SSL_KEYSTORE_TYPE=
|
# ELASTICSEARCH_SSL_KEYSTORE_TYPE=
|
||||||
# ELASTICSEARCH_SSL_KEYSTORE_PASSWORD=
|
# ELASTICSEARCH_SSL_KEYSTORE_PASSWORD=
|
||||||
|
|
||||||
|
# Uncomment the following to enable monitoring
|
||||||
|
# ENABLE_PROMETHEUS=true
|
||||||
|
# DATAHUB_DEBUG=true
|
||||||
|
# ENABLE_OTEL=true
|
||||||
|
# OTEL_RESOURCE_ATTRIBUTE={"service.name": "datahub-mae-consumer"}
|
||||||
|
# OTEL_SERVICE_NAME=datahub-mae-consumer
|
||||||
|
# OTEL_LOG_LEVEL=debug
|
||||||
|
# OTEL_METRICS_EXPORTER=console
|
||||||
|
# OTEL_TRACES_EXPORTER=console
|
||||||
|
# OTEL_LOGS_EXPORTER=console
|
||||||
|
# OTEL_SDK_DISABLED=false
|
||||||
|
# OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true
|
||||||
|
# OTEL_PROPAGATORS=tracecontext,baggage
|
14
docker/datahub-mce-consumer/env/docker.env
vendored
14
docker/datahub-mce-consumer/env/docker.env
vendored
@ -47,3 +47,17 @@ UI_INGESTION_ENABLED=false
|
|||||||
# set ELASTICSEARCH_USE_SSL=true and uncomment:
|
# set ELASTICSEARCH_USE_SSL=true and uncomment:
|
||||||
# ELASTICSEARCH_USERNAME=
|
# ELASTICSEARCH_USERNAME=
|
||||||
# ELASTICSEARCH_PASSWORD=
|
# ELASTICSEARCH_PASSWORD=
|
||||||
|
|
||||||
|
# Uncomment the following to enable monitoring
|
||||||
|
# ENABLE_PROMETHEUS=true
|
||||||
|
# DATAHUB_DEBUG=true
|
||||||
|
# ENABLE_OTEL=true
|
||||||
|
# OTEL_RESOURCE_ATTRIBUTE={"service.name": "datahub-mce-consumer"}
|
||||||
|
# OTEL_SERVICE_NAME=datahub-mce-consumer
|
||||||
|
# OTEL_LOG_LEVEL=debug
|
||||||
|
# OTEL_METRICS_EXPORTER=console
|
||||||
|
# OTEL_TRACES_EXPORTER=console
|
||||||
|
# OTEL_LOGS_EXPORTER=console
|
||||||
|
# OTEL_SDK_DISABLED=false
|
||||||
|
# OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true
|
||||||
|
# OTEL_PROPAGATORS=tracecontext,baggage
|
@ -59,6 +59,7 @@ dependencies {
|
|||||||
implementation externalDependency.ebeanAgent
|
implementation externalDependency.ebeanAgent
|
||||||
implementation externalDependency.opentelemetryAnnotations
|
implementation externalDependency.opentelemetryAnnotations
|
||||||
implementation externalDependency.opentelemetrySdkTrace
|
implementation externalDependency.opentelemetrySdkTrace
|
||||||
|
implementation externalDependency.opentelemetrySdkMetrics
|
||||||
implementation externalDependency.resilience4j
|
implementation externalDependency.resilience4j
|
||||||
// Newer Spring libraries require JDK17 classes, allow for JDK11
|
// Newer Spring libraries require JDK17 classes, allow for JDK11
|
||||||
compileOnly externalDependency.springBootAutoconfigureJdk11
|
compileOnly externalDependency.springBootAutoconfigureJdk11
|
||||||
|
@ -30,6 +30,8 @@ dependencies {
|
|||||||
compileOnly externalDependency.lombok
|
compileOnly externalDependency.lombok
|
||||||
implementation externalDependency.logbackClassic
|
implementation externalDependency.logbackClassic
|
||||||
runtimeOnly externalDependency.opentelemetryExporter
|
runtimeOnly externalDependency.opentelemetryExporter
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterLogging
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterCommon
|
||||||
|
|
||||||
testImplementation project(':metadata-dao-impl:kafka-producer')
|
testImplementation project(':metadata-dao-impl:kafka-producer')
|
||||||
testImplementation project(':metadata-jobs:pe-consumer')
|
testImplementation project(':metadata-jobs:pe-consumer')
|
||||||
|
@ -34,6 +34,7 @@ dependencies {
|
|||||||
implementation externalDependency.springKafka
|
implementation externalDependency.springKafka
|
||||||
implementation externalDependency.annotationApi
|
implementation externalDependency.annotationApi
|
||||||
implementation externalDependency.opentelemetrySdkTrace
|
implementation externalDependency.opentelemetrySdkTrace
|
||||||
|
implementation externalDependency.opentelemetrySdkMetrics
|
||||||
|
|
||||||
implementation externalDependency.slf4jApi
|
implementation externalDependency.slf4jApi
|
||||||
compileOnly externalDependency.lombok
|
compileOnly externalDependency.lombok
|
||||||
|
@ -32,6 +32,8 @@ dependencies {
|
|||||||
compileOnly externalDependency.lombok
|
compileOnly externalDependency.lombok
|
||||||
implementation externalDependency.logbackClassic
|
implementation externalDependency.logbackClassic
|
||||||
runtimeOnly externalDependency.opentelemetryExporter
|
runtimeOnly externalDependency.opentelemetryExporter
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterLogging
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterCommon
|
||||||
|
|
||||||
runtimeOnly externalDependency.mariadbConnector
|
runtimeOnly externalDependency.mariadbConnector
|
||||||
runtimeOnly externalDependency.mysqlConnector
|
runtimeOnly externalDependency.mysqlConnector
|
||||||
|
@ -31,6 +31,7 @@ dependencies {
|
|||||||
|
|
||||||
implementation externalDependency.springKafka
|
implementation externalDependency.springKafka
|
||||||
implementation externalDependency.opentelemetrySdkTrace
|
implementation externalDependency.opentelemetrySdkTrace
|
||||||
|
implementation externalDependency.opentelemetrySdkMetrics
|
||||||
|
|
||||||
implementation externalDependency.slf4jApi
|
implementation externalDependency.slf4jApi
|
||||||
compileOnly externalDependency.lombok
|
compileOnly externalDependency.lombok
|
||||||
|
@ -15,6 +15,7 @@ dependencies {
|
|||||||
implementation spec.product.pegasus.restliServer
|
implementation spec.product.pegasus.restliServer
|
||||||
implementation externalDependency.opentelemetryApi
|
implementation externalDependency.opentelemetryApi
|
||||||
implementation externalDependency.opentelemetrySdkTrace
|
implementation externalDependency.opentelemetrySdkTrace
|
||||||
|
implementation externalDependency.opentelemetrySdkMetrics
|
||||||
compileOnly externalDependency.lombok
|
compileOnly externalDependency.lombok
|
||||||
|
|
||||||
annotationProcessor externalDependency.lombok
|
annotationProcessor externalDependency.lombok
|
||||||
|
@ -54,6 +54,7 @@ dependencies {
|
|||||||
implementation externalDependency.opentelemetryApi
|
implementation externalDependency.opentelemetryApi
|
||||||
implementation externalDependency.opentelemetrySdk
|
implementation externalDependency.opentelemetrySdk
|
||||||
implementation externalDependency.opentelemetrySdkTrace
|
implementation externalDependency.opentelemetrySdkTrace
|
||||||
|
implementation externalDependency.opentelemetrySdkMetrics
|
||||||
implementation externalDependency.opentelemetryAutoConfig
|
implementation externalDependency.opentelemetryAutoConfig
|
||||||
|
|
||||||
testImplementation externalDependency.springBootTest
|
testImplementation externalDependency.springBootTest
|
||||||
|
@ -8,6 +8,7 @@ import io.opentelemetry.api.common.Attributes;
|
|||||||
import io.opentelemetry.api.trace.Tracer;
|
import io.opentelemetry.api.trace.Tracer;
|
||||||
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
|
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
|
||||||
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
|
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
|
||||||
|
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
||||||
import io.opentelemetry.sdk.resources.Resource;
|
import io.opentelemetry.sdk.resources.Resource;
|
||||||
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
|
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
|
||||||
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
||||||
@ -51,14 +52,26 @@ public abstract class OpenTelemetryBaseFactory {
|
|||||||
.addTracerProviderCustomizer(
|
.addTracerProviderCustomizer(
|
||||||
(sdkTracerProviderBuilder, configProperties) ->
|
(sdkTracerProviderBuilder, configProperties) ->
|
||||||
sdkTracerProviderBuilder
|
sdkTracerProviderBuilder
|
||||||
.addSpanProcessor(SimpleSpanProcessor.create(TraceContext.LOG_SPAN_EXPORTER))
|
.addSpanProcessor(
|
||||||
|
TraceContext.LOG_SPAN_EXPORTER != null
|
||||||
|
? SimpleSpanProcessor.create(TraceContext.LOG_SPAN_EXPORTER)
|
||||||
|
: SimpleSpanProcessor.create(
|
||||||
|
new MetricSpanExporter())) // Fallback for exporter
|
||||||
.addSpanProcessor(BatchSpanProcessor.builder(new MetricSpanExporter()).build())
|
.addSpanProcessor(BatchSpanProcessor.builder(new MetricSpanExporter()).build())
|
||||||
.setIdGenerator(TraceContext.TRACE_ID_GENERATOR)
|
.setIdGenerator(
|
||||||
|
TraceContext.TRACE_ID_GENERATOR != null
|
||||||
|
? TraceContext.TRACE_ID_GENERATOR
|
||||||
|
: io.opentelemetry.sdk.trace.IdGenerator
|
||||||
|
.random()) // Fallback for ID generator
|
||||||
.setResource(
|
.setResource(
|
||||||
Resource.getDefault()
|
Resource.getDefault()
|
||||||
.merge(
|
.merge(
|
||||||
Resource.create(
|
Resource.create(
|
||||||
Attributes.of(SERVICE_NAME, getApplicationComponent())))))
|
Attributes.of(
|
||||||
|
SERVICE_NAME,
|
||||||
|
getApplicationComponent() != null
|
||||||
|
? getApplicationComponent()
|
||||||
|
: "default-service")))))
|
||||||
.addPropagatorCustomizer(
|
.addPropagatorCustomizer(
|
||||||
(existingPropagator, configProperties) -> {
|
(existingPropagator, configProperties) -> {
|
||||||
// If OTEL_PROPAGATORS is not set or doesn't include tracecontext,
|
// If OTEL_PROPAGATORS is not set or doesn't include tracecontext,
|
||||||
@ -72,7 +85,9 @@ public abstract class OpenTelemetryBaseFactory {
|
|||||||
(metricExporter, configProperties) -> {
|
(metricExporter, configProperties) -> {
|
||||||
String metricsExporter = configProperties.getString("OTEL_METRICS_EXPORTER");
|
String metricsExporter = configProperties.getString("OTEL_METRICS_EXPORTER");
|
||||||
return (metricsExporter == null || metricsExporter.trim().isEmpty())
|
return (metricsExporter == null || metricsExporter.trim().isEmpty())
|
||||||
? null // Return null to disable the exporter
|
? (metricExporter != null
|
||||||
|
? metricExporter
|
||||||
|
: (MetricExporter) new MetricSpanExporter())
|
||||||
: metricExporter;
|
: metricExporter;
|
||||||
})
|
})
|
||||||
.build()
|
.build()
|
||||||
|
@ -39,6 +39,7 @@ dependencies {
|
|||||||
implementation externalDependency.opentelemetryApi
|
implementation externalDependency.opentelemetryApi
|
||||||
implementation externalDependency.opentelemetrySdk
|
implementation externalDependency.opentelemetrySdk
|
||||||
implementation externalDependency.opentelemetrySdkTrace
|
implementation externalDependency.opentelemetrySdkTrace
|
||||||
|
implementation externalDependency.opentelemetrySdkMetrics
|
||||||
|
|
||||||
testImplementation externalDependency.springBootTest
|
testImplementation externalDependency.springBootTest
|
||||||
testImplementation project(':mock-entity-registry')
|
testImplementation project(':mock-entity-registry')
|
||||||
|
@ -44,6 +44,8 @@ dependencies {
|
|||||||
implementation externalDependency.springBootAutoconfigure
|
implementation externalDependency.springBootAutoconfigure
|
||||||
implementation externalDependency.servletApi
|
implementation externalDependency.servletApi
|
||||||
runtimeOnly externalDependency.opentelemetryExporter
|
runtimeOnly externalDependency.opentelemetryExporter
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterLogging
|
||||||
|
runtimeOnly externalDependency.openTelemetryExporterCommon
|
||||||
|
|
||||||
implementation spec.product.pegasus.restliDocgen
|
implementation spec.product.pegasus.restliDocgen
|
||||||
implementation spec.product.pegasus.restliSpringBridge
|
implementation spec.product.pegasus.restliSpringBridge
|
||||||
|
Loading…
x
Reference in New Issue
Block a user