# Ndjson into APM

**URL:** <https://discuss.elastic.co/t/ndjson-into-apm/381827>\
**Category:** APM\
**Tags:** open-telemetry\
**Created:** [September 10, 2025, 9:35am UTC](https://discuss.elastic.co/t/ndjson-into-apm/381827 "2025-09-10T09:35:48Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rnx](https://avatars.discourse-cdn.com/v4/letter/r/6de8d8/32.png) [@Rnx](https://discuss.elastic.co/u/Rnx)\
**Post date:** [September 10, 2025, 9:35am UTC](https://discuss.elastic.co/t/ndjson-into-apm/381827/1 "2025-09-10T09:35:48Z")

</div>

How to ingest ndjson into APM server?  
We have an open telemetry data written (in ndjson) in the single file, which should be continuously loaded and sent to the APM.  
We can’t use Filebeat as it has no APM output. We could use Logstash, as it has http output, but we are not sure about the output format. What about other possibilities?

---

<div class="post-metadata">

**Author:** ![Sophia\_Solomon](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sophia_solomon/32/141226_2.png) [@Sophia\_Solomon](https://discuss.elastic.co/u/Sophia_Solomon)\
**Post date:** [October 16, 2025, 3:10pm UTC](https://discuss.elastic.co/t/ndjson-into-apm/381827/2 "2025-10-16T15:10:28Z")

</div>

Hi @Rnx ,

Other possibilities are covered in these docs, especially for ndjson → [Elastic APM events intake API | Elastic Docs](https://www.elastic.co/docs/solutions/observability/apm/elastic-apm-events-intake-api) . You should be able to Ctrl+F for “ndjson”.

Try this article and let me know what you think. What output format would be ideal for your project?

---

<div class="post-metadata">

**Author:** ![Rnx](https://avatars.discourse-cdn.com/v4/letter/r/6de8d8/32.png) [@Rnx](https://discuss.elastic.co/u/Rnx)\
**Post date:** [October 16, 2025, 7:23pm UTC](https://discuss.elastic.co/t/ndjson-into-apm/381827/3 "2025-10-16T19:23:22Z")

</div>

Hello Sophia, thanks for the reply. In theory, the API intake works very well. In practice, you need a “sophisticated” tool to use it, as the command line tools such as “curl” are either terribly slow to use, or not reliable enough (dealing with network/server errors, etc.).

But, there is one solution to my problem - use the “OTEL Collector CONTRIB”, with otlp exporter. I am giving weight to word CONTRIB, as it is the only fork of OTEL suitable to handle the load and be reliable enough. [GitHub - open-telemetry/opentelemetry-collector-contrib: Contrib repository for the OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector-contrib)
