// the find
elastic/apm-server
APM Server is the intake endpoint for Elastic APM agents — it receives trace, error, log, and metric data and writes it into Elasticsearch data streams. It's not a standalone APM solution; it only makes sense if you're already running the Elastic Stack or Elastic Cloud. Think of it as a specialized shipper, not a backend.
Genuine OpenTelemetry support: the server speaks the OTLP protocol natively, so you can point OTel SDKs directly at it without a collector in between. The aggregation layer pre-computes service-level metrics (throughput, error rate, latency histograms) before indexing, which keeps query costs sane at scale. The agent config fetch endpoint lets you change sampling rates and other settings in Kibana and have them propagate to running agents without a redeploy. The integration test suite spins up real Elasticsearch clusters via Terraform and tests upgrade paths — not common for infrastructure-adjacent Go projects.
Completely locked to Elasticsearch as a backend; if you want to send APM data to Grafana Tempo or anything else, you need a separate OTel collector pipeline and this repo becomes irrelevant. The dependency on libbeat (the Elastic Beats framework) is load-bearing and non-trivial — `make update-beats` copies files directly into the tree, which makes the dependency boundary blurry and upgrades unpredictable. Running it outside Elastic Agent requires manually pre-installing index templates and ILM policies via Kibana, which is poorly documented and breaks silently if skipped. Star count (1.2k) is misleadingly low for a project that handles production APM traffic for many large orgs — it reflects that most users interact with it through Elastic Agent, not this repo directly.