前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Eclipse Che开发环境中使用Jaeger

在Eclipse Che开发环境中使用Jaeger

作者头像
CNCF
发布2019-12-04 14:48:18
8500
发布2019-12-04 14:48:18
举报
文章被收录于专栏:CNCF

作者:Gary Brown

正如Eclipse Che网站上所解释的,“Che将Kubernetes应用程序引入到你的开发环境中,并提供了一个浏览器内IDE,允许你编写、构建、测试和运行应用程序,就像它们在任何机器上运行一样”。然而,在你的生产环境中部署时,可以使用可观察性工具来监视这些相同的应用程序,以了解它们的性能,从而为将来的改进提供帮助。如果我们也能在Che开发环境中利用这些可观察性工具,在对测试(准备阶段)或生产环境进行更改之前识别这些改进机会,不是很好吗?

https://www.eclipse.org/che/

在这篇博客文章中,我们将展示将Jaeger添加到开发工作区是多么简单,并观察应用程序的执行情况。我们将使用che.openshift.io作为主机环境,尽管你可以设置一个本地的Che服务器。

https://www.jaegertracing.io/

http://che.openshift.io/

https://www.eclipse.org/che/docs/che-7/running-che-locally/

创建工作区

Che 7引入了以一种称为devfile的yaml格式定义开发工作区的功能。示例devfile可以在Red Hat开发者GitHub组织中找到。

https://www.eclipse.org/che/docs/che-7/configuring-a-workspace-using-a-devfile/

https://github.com/redhat-developer/devfile

在这篇文章中,我们将使用一个修改过的Spring Boot devfile版本,它将Jaeger一体化后端添加到工作空间中。主要的改变是在commands顶层节点之前添加以下部分:

https://github.com/redhat-developer/devfile/blob/master/getting-started/spring-boot/devfile.yaml

代码语言:javascript
复制
-
    type: dockerimage
    alias: tracing
    image: jaegertracing/all-in-one:latest
    env:
      - name: MEMORY_MAX_TRACES
        value: "5000"
      - name: COLLECTOR_ZIPKIN_HTTP_PORT
        value: "9411"
    memoryLimit: 128Mi
    endpoints:
      - name: 'tracing-ui'
        port: 16686
      - name: 'collector-grpc'
        port: 14250
        attributes:
           public: 'false'
      - name: 'collector-http'
        port: 14268
        attributes:
           public: 'false'
      - name: 'collector-zipkin'
        port: 9411
        attributes:
           public: 'false'
      - name: 'agent-config'
        port: 5778
        attributes:
           public: 'false'
      - name: '6831/udp'
        port: 6831
        attributes:
           public: 'false'
      - name: '6832/udp'
        port: 6832
        attributes:
           public: 'false'
    volumes:
      - name: tmp
        containerPath: /tmp

但是在与che.openshift.io一起使用时,需要进行一些额外的内存限制更改,可以在这里找到devfile的修改版本。

https://gist.github.com/objectiser/a4f00be5433b8a0dd47583589196f19e

在che.openshift.io上启动工作区。打开一个浏览器(由于某些版本的Firefox可能遇到问题,推荐使用Chrome),使用这个url。

http://che.openshift.io/f?url=https://gist.githubusercontent.com/objectiser/667615926a40d6cd8eb675859ddee1a1/raw/06d25e2026d7a689dd8b38a343eec9a9cc431cde/che-spring-boot-devfile.yaml

添加OpenTracing测仪

当工作区最初被打开时,应用程序没有OpenTracing的工具。

可以通过隐式地包含OpenTracing-spring-jaeger-cloud-starter添加OpenTracing测仪,如下面的更新的pom.xml所示,同时将spring-boot-starter-parent版本更新到2.2.0.RELEASE(OpenTracing instrumentation所需要的)。

此依赖项自动对入站和出站HTTP请求进行处理。它还引导Jaeger跟踪程序将跟踪数据报告到Jaeger后端(包括在工作空间中)。跟踪程序的默认配置,将通过UDP向Jaeger代理报告数据,尽管应用程序可以配置为直接通过HTTP向收集器报告数据。

https://github.com/opentracing-contrib/java-spring-jaeger#configuration

最后一步是添加一个属性,将在跟踪数据中定义服务名称。这是通过创建src/main/resources文件夹,然后创建一个包含上面内容的application.properties文件。

跟踪正在运行的应用程序

工作区的右侧是一个立方体符号,当选中它时,将展开树。在User Runtimes/tools节点下有一个名为run webapp的任务。选择此选项将运行Spring Boot应用程序。启动后,将出现一个带有Open Link按钮的窗口。按此按钮启动应用程序的浏览器。

在同一树中,选择User Runtimes/tracing选项tracing-ui,它将在一个单独的浏览器中启动Jaeger UI。

单击浏览器顶部的refresh按钮几次,以在控制台窗口中查看Span reported。

跳到Jaeger UI以查看从应用程序报告的跟踪。

总结

本文演示了如何轻松地将Jaeger的OpenTracing引入到Eclipse Che工作空间中,从而允许开发者在开发期间,从他们的应用程序中获得追踪信息。

虽然这个例子很简单,只从单一服务捕获跟踪,Che所提供的好处是使完整的应用程序(多个服务)中使用相同的工作区,从而生产更多有趣的踪迹,并使开发者能够在完整应用程序的上下文理解他们开发的服务的性能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档