前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Jupyter笔记本做Jaeger数据分析

用Jupyter笔记本做Jaeger数据分析

作者头像
CNCF
发布2020-03-22 10:41:42
1.2K0
发布2020-03-22 10:41:42
举报
文章被收录于专栏:CNCF

作者:Pavol Loffay

在之前的博客文章,“用Jaeger做数据分析|跟踪告诉我们更多!”,我们已经介绍了我们的数据科学计划和平台。最终目标是在Jaeger项目中开发基于AI/ML的新功能,这将为我们的应用提供新的见解。这种类型的功能也称为AI操作(AI operations,AIOps)。

Jupyter笔记本

Jupyter笔记本为数据实验提供了一个简单的用户界面。我们想使用笔记本完成两个主要的用例:

  • 数据科学家对跟踪数据进行实验的接口
  • 随需应变的事件调查

第一个用例是自解释的。它降低了非基础设施人员连接Jaeger服务器以使用和分析数据的门槛。第二个用例比较复杂。想象一个事件,需要我们分析一条或一组数百或数千跨度的跟踪。这样的分析在用户界面中可能不可行。相反,我们可以编写代码来验证我们的假设。为此,我们开发了基于图形查询语言Gremlin的Trace DSL,以简化跟踪数据的过滤和特征提取。因此,Jaeger用户将能够根据需要使用Trace DSL启动一个Jupyter笔记本,并编写查询和分析。

Jupyter笔记本与Jaeger的例子

在本节中,我们将部署Jaeger Trace DSL和Jupyter笔记本,并对Jaeger服务器编写一个简单的查询。

让我们部署Jaeger、HotROD示例和支持Trace DSL的Jupyter笔记本:

代码语言:javascript
复制
docker run --rm -it -p 16686:16686 --name=jaeger jaegertracing/all-in-one:1.17docker run --rm -it -p 8080:8080 --link=jaeger -e JAEGER_ENDPOINT=http://jaeger:14268/api/traces jaegertracing/example-hotrod:1.17docker run --rm -it -p 8888:8888 -p 4041:4040 -p 9001:9001 --link=jaeger -e JUPYTER_ENABLE_LAB=yes quay.io/jaegertracing/jaeger-analytics-java:latest

如果你想打开当前目录中的笔记本,请将-v ${PWD}:/home/jovyan/work添加到Jupyter笔记本中。这些笔记本在jaegertracing/jaeger-analytics-java仓库中。

现在,在http://localhost:16686打开Jaeger UI,在http://localhost:8080打开HotROD示例,在http://localhost:8888/lab打开Jupyter笔记本。Jupyter实验室的标记写在Jupyter控制台日志中。

为了进行分析,我们必须生成一些数据,因此在HotROD UI中单击蓝色方框来订购汽车来生成良好的跟踪。为了验证跟踪是否到达Jaeger,打开Jaeger UI并从前端服务中搜索跟踪。跟踪应该是这样的:

HotROD示例应用程序的跟踪。

当我们知道数据存储在Jaeger中,我们就可以转移到Jupyter笔记本上,并在那里加载跟踪。Jaeger的笔记本保存在Jupyter目录中。这个目录可以从项目根目录打开,也可以从工作目录打开,要是主机文件系统的笔记本被注入docker容器。

在运行分析之前,我们必须将依赖项加载到笔记本的类路径中。只需单击dependencies单元格使其激活,然后单击顶部导航菜单中的play图标。

用于从jaeger-query加载数据的Jupyter笔记本。

在运行代码之前,我们必须更新变量traceIdStr以指向HotROD应用程序前面生成的一个跟踪。

用于从jaeger-query加载数据的Jupyter笔记本。

结果写在代码单元格下面。在这种情况下,跟踪的高度为3,前端和服务器服务之间的计算网络延迟为0.00102 ms。延迟很小,因为所有服务都作为同一进程的一部分运行,并且没有实际的网络开销。

最后一个代码单元显示了Trace DSL与Apache Gremlin的直接使用。Gremlin是一种图形遍历语言,它扩展tracetraverse alsource.class并添加了用于跟踪过滤和特征提取的方法。例如,它添加了一个像hasName(String name)的方法来根据操作名筛选span。在我们的示例中,查询验证具有给定操作名称的两个span是否直接或间接连接,或者换句话说,其中一个是另一个的后代。

用于从jaeger-query加载数据的Jupyter笔记本。

总结

我们看到使用gRPC生成的stub部署Jupyter笔记本并编写对Jaeger服务器的简单查询是多么容易。该特性提供了一个功能强大的接口,可以根据从Jaeger服务器检索到的跟踪编写自定义查询和假设分析。该示例可以很容易地扩展,以收集来自Kafka的跟踪流并在实时数据上进行实验。

欢迎任何反馈!在我们的Jaeger Gitter频道上与我们联系,或者简单地打开一个问题,并分享你的反馈或想法。

https://gitter.im/jaegertracing/Lobby

https://github.com/jaegertracing/jaeger-analytics-java

参考文献

  • Jaeger Java analytics: https://github.com/jaegertracing/jaeger-analytics-java
  • Data analytics with Jaeger blog post: https://medium.com/jaegertracing/data-analytics-with-jaeger-aka-traces-tell-us-more-973669e6f848
  • Apache Gremlin documentation: http://tinkerpop.apache.org/docs/current/reference/
  • Jaeger HotROD example application demo: https://medium.com/opentracing/take-opentracing-for-a-hotrod-ride-f6e3141f7941
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档