Hi there,
I'm exploring the capabilities of EDOT and I have an issue:
Logs from my spring-boot app
[otel.javaagent 2025-03-10 16:31:10:565 +0100] [OkHttp http://localhost:9200/...] WARN io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export logs. Server responded with HTTP status code 400. Error message: Unable to parse response body, HTTP status message: Bad Request
[otel.javaagent 2025-03-10 16:31:10:571 +0100] [OkHttp TaskRunner] DEBUG okhttp3.internal.concurrent.TaskRunner - Q10004 starting : OkHttp ConnectionPool
[otel.javaagent 2025-03-10 16:31:10:571 +0100] [BatchLogRecordProcessor_WorkerThread-1] DEBUG io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor$Worker - Exporter failed
[otel.javaagent 2025-03-10 16:31:10:571 +0100] [OkHttp ConnectionPool] DEBUG okhttp3.internal.concurrent.TaskRunner - Q10004 run again after 300 s : OkHttp ConnectionPool
[otel.javaagent 2025-03-10 16:31:10:571 +0100] [OkHttp TaskRunner] DEBUG okhttp3.internal.concurrent.TaskRunner - Q10004 finished run in 251 µs: OkHttp ConnectionPool
Can I push directly to Elastic ? Or I need to pass through some collector? I followed the documentation on gitHub and I thought that I can push data directly to ES...
I'm using Java23, SpringBoot 3.4, latest elastic docker image.
Opens a new topic with Proper Subject Line... I suspect there are some specific data type settings... that and I am not sure we support temporality yet.
On the other hand, with OTEL Collector (gateway mode) I understand that we should use exporters.elasticsearch, APM Connector and APM processor to enrich traces and use APM UIs in kibana?
Hi @adminunix I am not sure what the question is.
Perhaps you should open a thread (working in an answered thread is not ideal) , with all the details,m Include the versions, etc and what you are trying to accomplish instead of piecemeal.
There are many valid architectures it depends on what your constraints are and what you are trying to accomplish
The HTTP 400 Bad Request error occurs because the EDOT Java SDK cannot push OTLP data directly to the Elasticsearch port (9200), as Elasticsearch requires a specific translation layer to understand OpenTelemetry protocol buffers. To resolve this, you must route your traffic through either the Elastic APM Server or an OpenTelemetry Collector configured with the elasticsearch exporter, which handles the necessary data mapping and indexing.
Elastic Cloud Only
F) EDOT / OTEL SDK (otlp)-> mOTLP-> ECH (Future, OTEL Native Schema)
mOTLP is the managed OLTP endpoint. We are aiming for mOTLP for ECH Tech Preview Soon...
G) EDOT / OTEL SDK (otlp)> EDOT / OTEL Col -> mOTLP Col - ECH (Future, OTEL Native Schema) )
mOTLP is the managed OLTP endpoint. We are aiming for mOTLP for ECH Tech Preview Soon...
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.