确实,没有适用于 Elastic APM 的 Elixir 代理 - 您可以对此问题投赞成票,以使该主题得到更多关注。
正如您所发现的,您可以同时使用 OpenTelemetry。为此,请运行 OpenTelemetry contrib 收集器(otel 收集器)并将其配置为导出到-文档中elastic
有完整说明以及此示例配置:
receivers:
otlp:
endpoint: localhost:55680
processors:
batch:
timeout: 1s
send_batch_size: 1024
exporters:
elastic:
apm_server_url: "https://elasticapm.example.com"
secret_token: "ESS_TOKEN"
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [elastic]
在您的应用程序中,使用opentelemetry exporter配置跟踪器。
此时,您的应用程序中将有一个跟踪器将跟踪发送到 otel 收集器。从那里,跟踪将通过 APM 服务器导出到 Elastic Stack。总之:your app -> otel collector -> apm-server -> elasticsearch
Erlang/Elixir 代理文档有用于启动和装饰 span的示例代码。