智能标签采集器(谷歌开发了开源Dapper链路追踪组件,一套大型软件系统可能)

优采云 发布时间: 2022-02-12 15:30

  智能标签采集器(谷歌开发了开源Dapper链路追踪组件,一套大型软件系统可能)

  在现有的微服务架构下,一个大型的软件系统可能覆盖数十个服务单元,服务之间的调用错综复杂。可能是一个客户请求需要调用N个服务,形成一个业务闭环。遇到 bug 时,开发者不得不对每个服务日志一一查看。整个过程耗时耗力、效率低下,甚至可能导致系统长时间不可用,直接造成大量业务损失。

  针对这一现象,Google 开发了开源的 Dapper 链接跟踪组件,并于 2010 年发表了论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》。

  这个文章自问世以来一直是业界链路跟踪的标杆和理论基础,具有很大的参考价值。著名的链接跟踪组件——Uber 的 Jeager、Twitter 的 Zipkin、阿里的 Eagleeye、Skywalking 和 ddtrace 等都是基于本文开发的。

  简单来说,链接跟踪就是跟踪一个请求从发布到被响应的全过程,了解每个请求的详细过程,比如哪些服务参与,参与的顺序是什么,每个服务参与的次数已调用数据库。这样,当出现异常问题时,开发者可以快速定位问题根源,快速解决问题。

  链接跟踪优势:

  链路跟踪技术受到市场的热烈欢迎,相关监控产品层出不穷。但是由于技术细节的实现,各有各的特点(比如不同的数据编码格式(json/protobuf/thrift等)和不同的数据传输方式(http/udp/rpc等)),不同同语言的SDK等API),各个产品和各个客户端的互通性很差。为了解决这个问题,出现了 OpenTracing。OpenTracing 开发了一套独立于平台和独立于供应商的链接跟踪 API 规范。只要每个实施链路跟踪技术的制造商都遵守规范,当需要从一种技术实现切换到另一种技术实现时,不会有特别多的额外工作。

  OpenTracing GitHub 网址:

  OpenTracing 的出现减少了开发和编码的工作量。但是,随着云计算技术的不断发展,企业系统和产品结构的不断调整,企业仍然无法摆脱在数据格式转换、存储方式、前端UI界面风格等方面的差异。漏洞难以定位,数据难以监控。

  那么有没有一款可以兼容市面上主流的链路追踪技术,并且可以多维度分析展示数据的产品呢?

  3步有趣的链接跟踪,轻松定位错误!

  来自中国的DataFlux——一站式数据监控云平台,不仅兼容Jeager、Zipkin、Skywalking、ddtrace等主流技术,还帮助用户专注于业务发展,更直观、专业、高效地展示数据监控分析结果。

  在 DataFlux 上,我们可以通过以下三个步骤执行分布式链路跟踪:

  DataKit 打开链接数据采集

  在 DataFlux 中有一个专门用于处理各种数据的工具采集 - DataKit。对于链接数据,它提供了四种类型的采集器对应不同的技术实现:traceJaeger、traceZipkin、traceSkywalking和ddtrace。这里我们以ddtrace为例,它不需要代码埋藏,我们将介绍它在Linux平台上的基本使用。

  《3分钟快速安装DataKit采集器》

  安装 DataKit 后,在 /usr/local/cloudcare/dataflux/datakit/conf.d/ddtrace/ 目录下复制一份 ddtrace link data采集 配置。

  $ sudo cp ddtrace.conf.sample ddtrace.conf

  编辑 ddtrace.conf:

  #[inputs.ddtrace]

# path = "/v0.4/traces" # ddtrace 链路数据接收路径,默认与ddtrace官方定义的路径相同

# [inputs.ddtrace.tags] # 自定义标签组

# tag1 = "tag1" # 自定义标签1

# tag2 = "tag2" # 自定义标签2

# tag3 = "tag3" # 自定义标签3

# env = "your_env_name" # 设置环境名

# version = "your_version" # 设置版本信息

  至此,链接数据采集配置完毕,重启DataKit即可。

  #toc27

  打开需要监控的应用

  通过ddtarce采集数据需要根据当前项目开发语言参考对应的帮助文档Datadog Tracing。

  下面以 Python 应用程序为例:

  第一步,安装相关依赖

  pip install ddtrace

  第二步,在应用初始化时设置上报地址

  import os

from ddtrace import tracer

#通过环境变量设置服务名

os.environ["DD_SERVICE"] = "your_service_name"

#通过环境变量设置项目名,环境名,版本号

os.environ["DD_TAGS"] = "project:your_project_name,env=test,version=v1"

#设置链路数据datakit接收地址,

tracer.configure(

# datakit IP 地址

hostname="127.0.0.1",

# datakit http 服务端口号

port="9529",

)

  第三步,打开应用

  ddtrace-run python your_app.py

  如果通过gunicorn运行,需要在应用初始化的时候进行如下配置,否则会生成相同的traceID

  patch(gevent=True)

  与其他语言应用类似,配置成功后约1-2分钟可在DataFlux Studio的“链接跟踪”中查看相关链接数据。

  除了在应用初始化时设置项目名、环境名和版本号,还可以通过以下两种方式设置:

  export DD_TAGS="project:your_project_name,env=test,version=v1"

  [inputs.ddtrace]

path = "/v0.4/traces" # ddtrace 链路数据接收路径,默认与ddtrace官方定义的路径相同

[inputs.ddtrace.tags] # 自定义标签组

project = "your_project_name" # 设置项目名

env = "your_env_name" # 设置环境名

version = "your_version" # 设置版本信息

  查看链接数据采集

  接下来,我们可以在DataFlux平台上看到对应的链接数据:

  与每个服务相关的统计信息:

  

  通话详情:

  

  服务之间的调用关系:

  

  随着科技的普及和发展,链接跟踪技术将直接对企业或个人系统异常、业务Bug等问题的解决产生重大影响,也将成为越来越多企业或个人开发者的开发共识.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线