目前我们打算使用 Opentelemetry 实现可观测性,现在已经使用了 OpenTelemetry SDK 来实现了 trace 部分,trace 收集被发送到 elastic 的 apm 服务器。现在要进行容器化迁移到 K8S ,同时使用 OpenTelemetry Collector 来自动化注入并收集 trace ,metrics ,使用 fluent-bit 来收集日志。现在有几个问题不太清楚,想问问一下。 1.trace 和日志要如何关联? 目前我们使用 fluent-bit 来收集应用日志,发送到 elasticsearch 中, fluent-bit 会根据日志类型在 elastic 中创建对应索引; trace 则是发送到 apm 中,可以在 apm 中看到 trace 的信息,那么这两者之间如何能关联起来呢,查看对应的 trace 的时候,可以跳到对应的日志中。
刚好看到这个,不过这个可能我解答不了(因为我只是个测试)。 我就说说我们做的:我们自己对于 OT 探针采集的数据,经过 collector 上报到我们自己的可观测产品里面.你是不是能考虑在每个 trace 都加上要给对应的 id ,然后日志里面能对这个 id 进行关联,这样是不是能解决问题。
@oldboy627 emmm....,这个就属于开发范畴了,我解释不来。 我们自己是生成了一个 Tracid ,对应每笔数据。用 MD5 格式。 如果觉得难搞,可以考虑采购 APM 产品(我们公司主要就做这个,当然你也可以考虑其他竞品,反正最终能解决你问题就行)
otel 可以实现 日志、跟踪、指标 导出到一个地方,elastic 已经全面支持 otel 了。不需要特意将 traceId 打入到 apm 中。实际上 apm 接受 otel 数据的时候 就会转换好,里面已经有 traceId 了。
@jamel 是这样的,elastic 8 版本支持了,可以在 trace 旁边查看日志,但是我们架构师想要的是,使用 fluentbit 收集应用日志,然后在 fluentbit 的 output 根据错误级别来创建 elastic 索引,比如 app-error ,app-info 等索引,开发可以还像以前方式去查看。 直接都发送到 apm 中,索引就变成了一个。