Hi Pasquale,

Thank you for the quick response and sorry for missing the earlier
discussion.

I read through the documentation you linked and unfortunately had no luck
setting this up. I'll try again but if someone has the time and energy to
point out where I'm missing a step, it is appreciated:

application.properties:

camel.jbang.dependencies=camel:opentelemetry,agent:io.opentelemetry.javaagent:opentelemetry-javaagent:1.31.0,io.opentelemetry.instrumentation:opentelemetry-log4j-context-data-2.17-autoconfigure:1.31.0-alpha
camel.opentelemetry.enabled=true

exporting:

camel export --runtime=camel-main --gav=com.foo:acme:1.0-SNAPSHOT
--directory=./publish *

modified src/main/resources/log4j2.properties and copied the example from
docs:

appender.stdout.layout.pattern =  %d{HH:mm:ss.SSS} [%t] %-5level
%logger{36} trace_id=%X{trace_id} span_id=%X{span_id}
trace_flags=%X{trace_flags} - %msg%n

testing:

./mvnw clean package
java -javaagent:agent/opentelemetry-javaagent-1.31.0.jar
 -Dcamel.jbang.version=4.8.3 -Dotel.traces.exporter=none
-Dotel.metrics.exporter=none -Dotel.logs.exporter=otlp
-Dotel.exporter.otlp.endpoint=http://localhost:4317
-Dotel.exporter.otlp.protocol=grpc -Dotel.service.name=otel-test
-Dotel.service.version=1.0.0
-Dotel.service.instance.id=91c4e045-5fbd-4611-8fef-22eb079fb519
-Dotel.instrumentation.log4j-context-data.add-baggage=true -jar
target/acme-1.0-SNAPSHOT.jar

result:

OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader
classes because bootstrap classpath has been appended
[otel.javaagent 2025-02-05 18:01:57:196 +0200] [main] INFO
io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent
- version: 1.31.0
18:01:58.362 [main] INFO  org.apache.camel.main.MainSupport trace_id=
span_id= trace_flags= - Apache Camel (Main) 4.9.0 is starting
18:01:58.448 [main] INFO  org.apache.camel.main.BaseMainSupport trace_id=
span_id= trace_flags= - Classpath scanning enabled from base package:
com.foo.acme
18:01:59.083 [main] INFO  org.apache.camel.main.BaseMainSupport trace_id=
span_id= trace_flags= - Auto-configuration summary
18:01:59.083 [main] INFO  org.apache.camel.main.BaseMainSupport trace_id=
span_id= trace_flags= -     [application.properties]
camel.main.basePackageScan = com.foo.acme
18:01:59.083 [main] INFO  org.apache.camel.main.BaseMainSupport trace_id=
span_id= trace_flags= -     [application.properties]
camel.opentelemetry.enabled = true
18:01:59.403 [main] INFO  org.apache.camel.impl.engine.AbstractCamelContext
trace_id= span_id= trace_flags= - Apache Camel 4.9.0 (camel-1) is starting
18:01:59.405 [main] INFO
 org.apache.camel.opentelemetry.OpenTelemetryTracer trace_id= span_id=
trace_flags= - OpenTelemetryTracer enabled using instrumentation-name: camel
18:01:59.405 [main] INFO  org.apache.camel.impl.engine.AbstractCamelContext
trace_id= span_id= trace_flags= - Using ThreadPoolFactory:
org.apache.camel.opentelemetry.OpenTelemetryInstrumentedThreadPoolFactory@984de01
18:01:59.408 [main] INFO  org.apache.camel.main.BaseMainSupport trace_id=
span_id= trace_flags= - Property-placeholders summary
18:01:59.408 [main] INFO  org.apache.camel.main.BaseMainSupport trace_id=
span_id= trace_flags= -     [application.properties]
AdditionalMessage = This message comes from the application.properties
18:01:59.408 [main] INFO  org.apache.camel.impl.engine.AbstractCamelContext
trace_id= span_id= trace_flags= - Routes startup (total:1)
18:01:59.409 [main] INFO  org.apache.camel.impl.engine.AbstractCamelContext
trace_id= span_id= trace_flags= -     Started route1 (timer://yaml)
18:01:59.409 [main] INFO  org.apache.camel.impl.engine.AbstractCamelContext
trace_id= span_id= trace_flags= - Apache Camel 4.9.0 (camel-1) started in
5ms (build:0ms init:0ms start:5ms boot:1s14ms)
18:02:00.434 [Camel (camel-1) thread #2 - timer://yaml] INFO  route1
trace_id= span_id= trace_flags= - Hello This message comes from the
application.properties
18:02:03.909 [Camel (camel-1) thread #2 - timer://yaml] INFO  route1
trace_id= span_id= trace_flags= - Hello This message comes from the
application.properties

And this how the collector gets things:

LogRecord #0
ObservedTimestamp: 2025-02-05 16:04:29.483556871 +0000 UTC
Timestamp: 2025-02-05 16:04:29.483552147 +0000 UTC
SeverityText: INFO
SeverityNumber: Info(9)
Body: Str(Hello This message comes from the application.properties)
Trace ID:
Span ID:
Flags: 0

ke 5.2.2025 klo 16.07 Pasquale Congiusti (pasquale.congiu...@gmail.com)
kirjoitti:

> Hi Mikael,
> we discussed about it some times ago in the dev mailing list. The feature
> is deprecated as it is not working correctly due to the specific way each
> telemetry is implemented [1]. However you can always use the specific
> opentelemetry way to do that [2].
>
> Cheers,
> Pasquale.
>
> [1]
> https://camel.apache.org/components/next/others/tracing.html#_mdc_logging
> [2]
>
> https://camel.apache.org/components/next/others/opentelemetry.html#_mdc_logging
>
> On Wed, Feb 5, 2025 at 2:11 PM Mikael Koskinen <mijap...@gmail.com> wrote:
>
> > Hi,
> >
> > Enabling OpenTelemetry in Camel Main is straightforward, thanks to the
> good
> > documentation on Camel JBang's page. I get telemetry, metrics and logs
> > moving.
> >
> > But I have a problem with the logs that the OTEL Collector receives. The
> > logs are missing trace and span ids. I have enabled mdc logging in
> > application.properties:
> >
> >
> >
> > *camel.main.useMdcLogging*
> > And I can see the span_id and trace_id when json logging is enabled:
> >
> >
> >
> {"@timestamp":"2025-02-05T12:06:39.095Z","ecs.version":"1.2.0","log.level":"INFO","message":"Hello
> > This message comes from the
> > application.properties","process.thread.name":"Camel
> > (camel-1) thread #4 -
> >
> >
> timer://yaml","log.logger":"integration.camel.yaml:8","camel.contextId":"otel-test","camel.exchangeId":"FBC40ADA8D08EAB-0000000000000002","camel.messageId":"FBC40ADA8D08EAB-0000000000000002","camel.routeId":"route1","span_id":"6a0dbd5a9773d891","trace_id":"b3499efd42a7ec8971ff04cc19f08d3a"}
> >
> > But on the OTEL Collector side span_id and trace_id are both empty.
> >
> > I enabled OTEL Java Agent's debugging and it displays the following:
> >
> > [otel.javaagent 2025-02-05 14:06:39:096 +0200] [Camel (camel-1) thread
> #4 -
> > timer://yaml] INFO io.opentelemetry.exporter.logging.LoggingSpanExporter
> -
> > 'timer' : b3499efd42a7ec8971ff04cc19f08d3a 6a0dbd5a9773d891 SERVER
> [tracer:
> > camel:] AttributesMap{data={url.path=yaml, component=camel-timer,
> > url.query=period=3500, thread.id=39, camel.uri=timer://yaml?period=3500,
> > thread.name=Camel (camel-1) thread #4 - timer://yaml, url.scheme=timer},
> > capacity=128, totalAddedValues=7}
> >
> > I'm not sure if that is correct. Should the AttributesMap contain the
> > span_id and trace_id? I'm using the Camel LTS version.
> >
> > I would really appreciate it if anyone has any ideas on how to get
> trace_id
> > and span_id correctly to work for logs.
> >
> > Best regards,
> > Mikael
> >
>

Reply via email to