【腾讯云应用性能观测x日志服务】:链路日志关联,加速故障定位

2022-03-24 16:40:14 浏览数 (3)

顾自然

腾讯云监控产品经理,硕士毕业于墨尔本大学。目前主要负责腾讯云业务层监控相关产品策划工作,对应用监控和运维领域有深刻理解。

前言

随着微服务架构的逐渐流行,在熵增且庞杂的系统中准确的定位一个请求的完整生命周期,逐渐成为了研发同学面对的最大的痛点之一,以研发同学自测过程为例,开发同学往往希望在发起测试的 Http/RPC 请求后,能够通过一个简单的方式获取整个测试请求的上下文信息。这其中通常包括相关的上下游链路、各个服务内部请求的方法堆栈,以及链路上打印的日志等数据,对于指标-链路-日志的一体化监控的需求已经迫在眉睫。

可观测性的概念

在定位异常请求时,透过指标定位大方向,快速拉出整个链路的上下文的能力则更为关键,通过方法堆栈以及相关联的日志便能够直接查看导致异常的方法和参数,能够很好的提高排查效率,而这在云原生就被定义为可观测性。

可观测性概念最早由 Apple 的工程师 Cindy Sridharan 提出,作为监控的进一步延伸,可观测性与监控的区别可以总结为:“监控告诉我们系统的哪些部分是工作的。可观测性告诉我们哪里为什么不工作了”。

可观测性被分成三个重要的垂类:

Metrics 指标 :系统内部运行的可描述进程健康情况的聚合信息,可通过指标观测系统整体的健康情况和趋势,例如“吞吐量”“响应时长”等耳熟能详的词汇便为指标。

Tracing 链路 : 提供对系统整个调用链的生命周期,追踪所有分布式框架中,服务接口之间的调用关系;通过链路可帮助研发了解整个生命调用周期中,哪些特定的调用组件影响了整个生命周期的健康。

Logging 日志信息 :当前应用进程特定的处理时间记录,提供应用运行处理执行中的记录,详细解释当前处理进度和运行情况,提供丰富的记录以便排查问题。

理想状态下,可观测性的监控将由发现系统实时问题指标,通过链路应用的上下游多维度分析定位关键问题所在,再通过排查具体问题日志找到根因:

[点击查看大图]

开源社区的三种数据源统一& “链路-日志”关联的难题

近几年的开源社区演变中,先后出现了两种协议可分别规范这几种垂类,分别是来自 Google 的 OpenCensus (可观测 Tracing metris)和 来自 CNCF 的 OpenTracing(可观测 Tracing)由于两种协议的相似,以及对三种垂类的一统观测,融合为大家耳熟能详的 Open Telemetry,旨在打通 Metrics - Tracing - Logging 成为统一的协议。

对于链路 - 日志的统一的重要性,在分布式和微服务框架的快速迭代中越来越盛。对于微服务来说,同样的进程可能会发布在不同的机器和容器中,需要不断登录不同机器或容器去采集日志,并且归纳统一,手动对应到实际的应用中,这是非常繁琐且复杂的。

然而在当前社区的产品解决方案中,还没有三种数据源的完整的解决方案,原因在于同时处理三种数据源的统一存储,展示以及关联分析难以实现。Open-telemetry 首先致力于解决指标-链路的一体化,但对于海量的日志信息,难以将数据源统一关联。

APM-CLS 关联 打通“链路-日志”关联堡垒

腾讯云应用性能观测(APM)作为本身包含“指标-链路”的全链路监控平台,现今已与 CLS 日志监控平台联手打通,实现“指标-链路-日志”的一体化监控,在查看链路详情时关联查看所对应信息,完成 Trace 到 Log 的排查流程。

  • 腾讯云日志服务(Cloud Log Service, CLS)是腾讯云提供一站式的日志数据解决方案。您无需关注扩缩容等资源问题,一分钟快速便捷接入, 即可享受从日志采集、存储到检索、统计分析、监控告警、数据加工、投递、实时消费等全方位稳定可靠的日志服务。支持 200 数据分析函数和 70 数据加工函数。帮助您轻松解决业务问题定位、指标监控、安全审计等日志问题。大大降低日志运维门槛, 提高了日志的应用价值。

[点击查看大图]

了解更多腾讯云日志服务产品信息:

https://cloud.tencent.com/product/cls

  • 腾讯云应用性能观测(APM)是一款包含指标、日志、链路的一站式应用性能管理平台,基于实时的多语言应用探针全量采集技术,为您提供分布式应用性能分析和故障自检能力,全方位保障系统的可用性和稳定性。协助您在复杂的业务系统快速定位性能问题,降低 MTTR(平均故障恢复时间)。实时了解并追踪应用性能情况,提升用户体验。

[点击查看大图]

点击文末「阅读原文」即可了解更多腾讯云应用性能观测产品信息。

如图所示,在通过指标定位到问题发生的具体链路后,进入链路详情页,呈现出链路整体的调用关系列表,具体每一条调用的具体信息(健康状态,耗时,详细信息等),定位到在整个调用生命周期中,哪个调用步骤出现了问题,并且同步查看该条链路相关的所有日志信息,丰富的日志将更好的判断根因问题。

[点击查看大图]

如何进行 APM-CLS 关联

1. 前置步骤 Step0:

为了保障您日志数据的可靠性以及更高效地使用日志服务,建议您使用 CLS 优化后的接口/Agent上传结构化日志。

结构化日志上报指引:

通过 API/SDK 上报参考: 

https://cloud.tencent.com/document/product/614/59470 (contents  部分)

通过 Agent 上报可参考: 

https://cloud.tencent.com/document/product/614/17419

2. Step1:

i. 在上报 CLS 日志时,注入 TraceID,不同协议和框架间的注入方式有些许差异。

目前 APM 提供了以 logback 方式的最佳实践,引入依赖后修改 logback-spring.xml 中的 Appender - Pattern 格式即可实现。

Skywalking 协议(Java)参考指引:

https://cloud.tencent.com/document/product/1463/68741

自研探针(Java)参考指引:

https://cloud.tencent.com/document/product/1463/68737

ii. 在注入 TraceID 后,可在 CLS 控制台日志详情处,查看到当前日志中包含 TraceID 字段。

3. Step2:

  • 在应用性能观测控制台选择对应的业务系统,在日志关联页面配置相关信息,开启关联日志
  • 选择对应的日志地域、日志集和日志主题。

[点击查看大图]

4. Step3:

在应用性能观测控制台,链路追踪-调用查询中,选择想要查看的 Trace,查看当前 Trace 的调用列表时,点击想查看调用 Span,即可在右侧抽屉页中查看当前关联的日志详情。

[点击查看大图]

详细步骤请参考官网文档:

https://cloud.tencent.com/document/product/1463/68742。

未来展望

随着云原生的发展,从“监控”逐渐进步为更为广阔的“可观测性”领域中,灵活处理指标、链路、日志三种信息及它们的统一观测至关重要。在未来,统一可观测性平台的诉求会越来越多,而 APM 联合 CLS 的应用观测平台将会不断前行,为云原生“可观测性”领域添砖加瓦。

联系我们

如有任何疑问,欢迎加入云监控技术交流群~

应用性能监控相关文章:


欢迎关注腾讯云日志服务公众号~

参考文献:

“监控”与“可观测性”的区别:https://baijiahao.baidu.com/s?id=1717212101409018630

Opentelemetry:https://zhuanlan.zhihu.com/p/382182319

云原生架构下的可观察性的探索和实践:https://blog.csdn.net/SOFAStack/article/details/100013936

云原生可观测性技术现状与发展趋势:https://blog.51cto.com/u_15127575/2719668

1 人点赞