1
superfa 261 天前
刚好看到这个,不过这个可能我解答不了(因为我只是个测试)。
我就说说我们做的:我们自己对于 OT 探针采集的数据,经过 collector 上报到我们自己的可观测产品里面.你是不是能考虑在每个 trace 都加上要给对应的 id ,然后日志里面能对这个 id 进行关联,这样是不是能解决问题。 |
3
superfa 261 天前
@oldboy627 emmm....,这个就属于开发范畴了,我解释不来。
我们自己是生成了一个 Tracid ,对应每笔数据。用 MD5 格式。 如果觉得难搞,可以考虑采购 APM 产品(我们公司主要就做这个,当然你也可以考虑其他竞品,反正最终能解决你问题就行) |
4
jamel 261 天前
otel 可以实现 日志、跟踪、指标 导出到一个地方,elastic 已经全面支持 otel 了。不需要特意将 traceId 打入到 apm 中。实际上 apm 接受 otel 数据的时候 就会转换好,里面已经有 traceId 了。
|
5
oldboy627 OP 使用 apm 产品的话,似乎就简单多了,可以把日志,metrics ,trace 都发送到 apm 服务器中,自动就关联起来了,直接查看到。
|
6
jamel 261 天前
都用 sdk 了,为啥 日志不也让 otel 给你做了
|
7
jamel 261 天前
是用 otel 的时候,优先考虑 出口商。otel 官网 有列出来 所有支持的出口商
|
8
oldboy627 OP @jamel 是这样的,elastic 8 版本支持了,可以在 trace 旁边查看日志,但是我们架构师想要的是,使用 fluentbit 收集应用日志,然后在 fluentbit 的 output 根据错误级别来创建 elastic 索引,比如 app-error ,app-info 等索引,开发可以还像以前方式去查看。 直接都发送到 apm 中,索引就变成了一个。
|
10
oldboy627 OP @jamel 这个说来话长,因为之前应用还是传统方式部署的服务器上的,otel sdk 只使用了 trace 部分,日志部分还是 filebeat 来收集的。现在要容器化,打算使用 otel collector 来实现这些,减少对代码的侵入性。
|
11
xderam 261 天前
“查看对应的 trace 的时候,可以跳到对应的日志中。”最终要实现这个吧?这个的描述有点模糊。比如说是点击 traceid ,直接打开一个 url ,然后跳转一个新页将含有这个 traceid 的日志都显示出来?还是在一页里自动现实?响应速度要多少?技术实现有很多,估计症结在于“开发可以还像以前方式去查看”这个卡点。
|
12
oldboy627 OP @xderam 这个是在 apm 点击 trace 的时候,比如 post 请求,可以看到相关信息,还可以关联到这个 post 请求对应的日志。 是这个需求,其实这个我已经在 elastic apm8 里面测试过了,trace 请求和日志可以关联起来。
现在还是想保留以前的一部分,kibaba 可以选择 index(app-error ,app-info ,app-warn )等索引查看,又想 trace 和日志进行关联。 |
13
xderam 261 天前
@oldboy627 那这个其实就是为了保留以前的 10%的需求,而需要花费 90%的成本来实现了。(技术没有什么不能被实现的 逃。。。
而且也是一个不顾新东西的使用场景,不愿意改变既有的操作习惯。既要又要的问题。如上所说,技术上应该可以实现,但成本可能比较高。比如双写,比如改造 kibana 的界面,比如自研。。。。 不过,这些留给贵司的架构师自己评估吧。已经超纲了。 |
14
RedisMasterNode 261 天前
爬了一下楼,听起来楼主的意思只是说,现在 Trace 部分是没问题的但是 Log 部分缺少 TraceID 在上面。
这个不管怎么弄都是关联不了的,要推动的事情是先让研发把 Log 里面的 Metadata 字段补齐,例如 TraceID (、SpanID ),这些数据采集之后想怎么关联、在哪里关联都很容易。 如果问题在于日志本身不具备 TraceID ,或者没有任何可标识一次请求的 ID ,那怎么搞都没用 orz |
15
oldboy627 OP @RedisMasterNode 老哥理解的没错。Trace 部分已经通过 OTEL SDK 实现了,在 Elastic APM 里查看信息。Log 这部分并没有集成 OTEL SDK ,所以还是普通的 json log 。想问问有没有可能通过日志里某个业务字段(比如 requestid)进行关联呢?
|
16
leojia 260 天前
java 的程序可以直接通过 MDC 将 traceId 和 spanId 记录到日志中,其他语言的不了解
|
17
moonheart 260 天前 via Android
日志框架可以和 trace 框架集成,日志输出的时候自动获取当前上下文的 traceid 并且输出到结构化日志中,都有比较成熟的方案,可以看看你们用的日志框架是否支持
|
18
RedisMasterNode 260 天前
将日志中的 ID 附带到 Trace Span 中,或者将 TraceID 附带到日志中。听起来后者会更快更容易实现。
@oldboy627 |