云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式存储_数据库底层_折扣

小七 141 0

使用HashiCorp consur启用分布式跟踪

»介绍本月早些时候,我们与Datadog的合作伙伴共同主办了一个网络研讨会,讨论了使用服务网格实现现代网络的好处以及如何在您的环境中实现跟踪。本次网络研讨会的目的是展示如何启用这些功能,说明变得可见的数据类型,并探讨这些信息如何在缓解潜在问题方面发挥作用。我们的资源库中现在提供了本次网络研讨会的记录,但本博客的目的是探索更高层次上所涵盖的概念,并逐步介绍spans如何在微服务环境中捕获服务请求信息。»可观测性与跟踪本博客假设读者已经熟悉了服务网格的概念和好处。如果您不熟悉这个概念,我们之前发布了一个博客,解释了服务网格的核心原则,另一个博客展示了consur服务网格功能的路线图。这两种方法都有助于你熟悉一般概念,而本博客将特别关注可观察性和跟踪。»可观测性可观测性这一术语来自控制理论,它描述了一种衡量系统内部状态如何从外部输出的知识中推断出来的度量。本质上,服务网格中的可观测性的关键目的是了解服务在哪里运行、数据流的流量模式以及它们之间连接的健康状况。有了这些信息,不仅可以更容易地了解部署中是否发生了故障,还可以为您提供识别网络中更细微故障所需的粒度,例如性能下降、数据包丢失、内存压力,实现服务网格使用户能够从应用程序中提取第7层数据,并将其输入到监控解决方案中,从而可以更清楚地看到问题区域,并帮助在问题变得更广泛之前消除问题。然而,了解问题仅仅是个开始。通过向运行在服务网格中的服务添加分布式跟踪,我们可以获得有关连接请求、成功、重试、超时和失败等在数据平面中移动的更细粒度的详细信息。»追踪分布式跟踪使用户能够在服务通过网格时跟踪其请求,并允许开发人员通过许多工具获得该流程的可视化。在高层次的概述中,这是通过向应用程序或服务添加跟踪程序来实现的。这些跟踪程序然后收集关键元数据,并记录有关此特定服务所经历的操作的计时,并将其存储为一个范围。跨度中捕获的元素包括:标记:此字段捕获跟踪程序跟踪的实例并包含初始请求,例如连接到另一个数据库实例并从中请求值。logs:连接请求的结果。span上下文:捕获有关span的标识信息的位置,例如span_id和tracer_id。一旦创建了一个范围,它就会被跟踪系统(如Zipkin或Jaeger)摄取和聚合,然后这些系统可以输出APM和监视解决方案(如Datadog或Grafana)的信息,并被实时观察。所以下一个问题是,这对我有什么帮助?通过实现跟踪功能,您可以让开发团队更精确地了解导致失败的原因。例如,假设服务A无法连接到服务B。如果我们只知道服务A和B无法通信,则必须一步一步地查看错误从何处开始。在非服务网格环境中,这可能没有问题,因为要检查的服务之间的连接点可能较少。然而,在服务网格中,我们获得的灵活性和规模的增加也带来了更多的复杂性,例如,驻留在不同区域/云中的服务、在不同点连接的更多服务等等,因此,手动搜索连接错误可能会损害这些好处。但是,如果我们在系统中添加了跟踪,我们可以直观地看到我们的服务流,并准确地确定服务A停止与服务B通信的位置,从而更容易地修复错误。现在让我们看一个例子,说明如何配置一个跟踪环境并利用APM检查错误。»工作原理跟踪允许您查看应用程序内部服务到服务调用和内部函数的层次图的方式是由于跨度的遗传性质。每个跨距都有一个唯一的id,每个跨距也带有其父级的id(根跨距没有父级的除外)。考虑下面的简单架构,您有一个入口路由器,它将流量定向到HTTP Web服务,然后Web服务调用基于gRPC的API服务。所有这些都是在服务网格内部运行的,因此除了进入入口的公共流量外,所有其他网络流量都通过服务网格的数据平面。在此环境中启用跟踪时,将按如下方式生成跨距:入口服务接收到一个新的请求,它生成一个根范围,并通过特使代理对Web服务进行调用,包括与span_id相关的特定HTTP报头。Web服务的特使代理接收请求,并创建一个包含从HTTP头解码的父级\u id的范围,即根span_id,然后将请求转发给Web服务。Web服务处理请求并创建自己的范围,同样使用HTTP头中的父信息。然后它通过特使调用上游API服务。因为上游API服务使用gRPC而不是HTTP,所以它不能使用HTTP报头。相反,父范围信息被编码到gRPC元数据中。Web服务的特使代理接收出站请求并创建一个span,因为这是一个gRPC请求,因此它理解有关父项_id的信息被编码到元数据中。它再次将包含父范围信息的请求转发到请求元数据中。API的特使代理接收请求,使用gRPC元数据创建一个span以获取父span id,并将请求转发给本地服务。API服务接收请求,使用gRPC元数据创建一个范围,执行必要的工作并返回。当它们监视的工作完成时,所有跨距都会独立地传输到跟踪系统。由于每个范围都包含原始请求的id,跟踪系统可以将这些数据重新组合到一个跟踪中。如果在请求链的任何一点上,一个span不包括父_id,则跟踪将在此时中断,因为跟踪软件会将没有父_id的span视为根span。»结论当配置正确时,跟踪是consur服务mesh支持的一种非常强大的功能。如前所述,仅仅向应用程序添加跟踪程序并不能提供所需的洞察力和信息。关键是要确保每个跟踪程序都有正确的父级_id,这允许跟踪系统遵循层次结构并创建路径的可视化输出。如果跨接不是以这种方式连接的,那么跟踪系统将无法显示请求的完整端到端的过程,并且数据看起来会支离破碎。如果你想看一个实际的跟踪演示,一定要观看我们最近的Datadog网络研讨会,或者如果你想亲自尝试,我们这里有一个使用Datadog和Jaeger的分布式跟踪的演示。我们选择在这个演示中使用Datadog和Jaeger是因为它们提供了丰富的特性集,但是我们知道并不是每个环境都是相同的,而且您的环境可能使用了不同的技术。Consult service mesh支持大多数主要的跟踪系统,包括开放式跟踪、Honeycomb、Zipkin等。有关HashiCorp Consult的更多信息,请访问我们的产品页面