OpenTelemetry 导出到 Elastic Search(无需 Elastic APM)

sa-*_*afa 6 elasticsearch elastic-stack open-telemetry

我想使用 OpenTelemetry 将跟踪/指标数据导出到 Elastic Search,但我更愿意避免使用 Elastic APM。是否可以?opentelemetry contrib repo显然表明这是可能的,但是,我在 elastic.co 文档中没有找到任何内容。顺便说一句,openapm.io 暗示请参阅此处,OpenTelemetry 可以导出到弹性节拍(这是非常理想的),但同样,我在 Elastic.co 文档中没有找到任何内容。

spa*_*inz 3

经过一段时间的尝试后,我终于让它可以与最新版本的 opentelemetry-collector-contrib 一起使用(在撰写本文时为 0.60.0)。

首先,我使用此处的步骤使用 Docker Compose 创建了一个多节点集群https://www.elastic.co/guide/en/elasticsearch/reference/8.4/docker.html#docker-compose-file。我还必须按照说明将 vm.max_map_count 设置为至少 262144。

然后,使用同一个网络,我使用如下命令启动了 opentelemetry-collector-contrib docker 映像:

docker run --net certs_default --name opentelemetry-collector -v C:\docker\elastic\otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml -p 4317:4317 -p 4318:4318 otel/opentelemetry-collector-contrib:0.60.0
Run Code Online (Sandbox Code Playgroud)

配置文件非常简单:

接收者:
  奥特普:
    协议:
      组组:
      http:

出口商:
  记录:
    日志级别:调试

  弹性搜索/跟踪:
    端点:[https://es01:9200]
    用户: 弹性
    密码:
    api_key:
    :
      insecure_skip_verify:true

服务:
  管道:
    痕迹:
      接收者:[otlp]
      出口商:[elasticsearch/trace]

最后,我刚刚将我的应用程序配置为使用 OtlpExporter:

.AddOtlpExporter(configure =>
{
    configure.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.Grpc;
})
Run Code Online (Sandbox Code Playgroud)

执行这些步骤后,我可以在 Kibana 中看到我的痕迹。现在,如果有一些模板来显示包含所有跨度的单个迹线,那就太好了。