Code Monkey home page Code Monkey logo

elasticapmreceiver's Introduction

Elastic APM Receiver

An experimental OpenTelemetry Collector receiver for Elastic APM trace data.

Elastic APM agents export telemetry data to Elastic APM Server via the Events Intake API. With this receiver, agents can point to an OpenTelemetry Collector instance instead and export trace data to any backend supported by OpenTelemetry.

Metrics and logs are currently not supported.

Elastic RUM JS Agent to OpenTelemetry Collector to Jaeger

This is a proof of concept. It is not intended for production use.

Getting Started

โš ๏ธ This receiver must be built from source. See Build for instructions.

The receiver can be configured using the following settings:

  • endpoint the URI where this receiver can be contacted (default: 0.0.0.0:8200)
  • events_url_path the path to the Events Intake V2 endpoint (default: /intake/v2/events)
  • rum_events_url_path the path to the RUM Events Intake V2 endpoint (default: /intake/v2/rum/events)
  • max_event_size_bytes the maximum size of an event in bytes (default: 300KiB)
  • batch_size the maximum number of events to process in a single batch (default: 10)

See OTel Collector Server Configuration for more options (e.g. CORS, TLS, Headers, Auth).

Build

Use OpenTelemetry Collector Builder to build a binary with this receiver included.

Extend builder-config.yaml to include a receiver configuration for the Elastic APM receiver. For example:

receivers:
  - gomod: github.com/flachesis/elasticapmreceiver v0.0.0

Then build the binary:

$ ocb --config builder-config.yaml

How it works

This receiver depends heavily on the latest elastic/apm-data package to process incoming requests and convert them into an APMEvent struct. This struct is then converted to an OpenTelemetry span and scheduled for export.

  • The Elastic APM RUM JS Agent exports transactions with a duration attribute, without a timestamp attribute. Traditionally, APM Server is in charge of setting the timestamp attribute elastic/apm-server#723. Equivalently, this receiver sets the timestamp attribute to the current time.

  • Elastic APM Agents periodically poll APM Server for configuration changes. This receiver does not support this feature.

elasticapmreceiver's People

Contributors

ldgrp avatar flachesis avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.