关于云计算:分布式调用链跟踪工具Jaeger两分钟极速体验

1次阅读

共计 2784 个字符,预计需要花费 7 分钟才能阅读完成。

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;

对于 Jaeger 开发系列(java 版)

  • 本文属于《Jaeger 开发系列》,是第一篇,该系列是欣宸原创,旨在通过实战演练与 Java 程序员一起熟练掌握 Jaeger 相干的技术,使之在分布式系统中施展巨作用;
  • 全系列由浅入深、从基本功能到深度定制都会波及,心愿这个系列能随同您一起成长,为您提供一些及时的参考;

本篇概览

  • 作为《Jaeger 开发系列》的开篇,咱们先花一分钟理解 Jaeger 的基本概念,再用三十秒工夫实现部署,而后三十秒体验基本功能,以最轻松的姿态和情绪开启 Java 程序员的 Jaeger 之旅;
  • 以下是我这里执行本篇实战的环境和软件:
  • 电脑:MacBook Pro,macOS Big Sur (11.5.2)— 您也能够应用 Linux,如 Ubuntu 或者 CentOS
  • Docker:20.10.7
  • JDK:8u301
  • 接下来先从 Jaeger 的基本概念开始吧;

对于 Jaeger

  • Jaeger 是一套开源的分布式调用链跟踪计划,由 Uber 创立,起初捐献给 CNCF(云原生计算基金会),官网地址:https://www.jaegertracing.io/

  • Jaeger 的后端、Web 端、本地库等都恪守了 OpenTracing standard
  • 在 OpenTracing 规范中,一个工作的逻辑单元被称为 <font color=”blue”>span</font>,它有本人的名称、开始工夫、时长、标签等个性,如下图:

  • 上面是官网给出的 Jaeger 架构图(这是没有应用 kafka 做缓冲的版本),最上层一行表明 Jaeger 反对的语言类型,可见利用应用了 SDK 后,业务的 span 被送到 jaeger-agent(通过 UDP 协定),而后被推送到 jaeger-collector,数据被 jaeger-collector 写入数据库(DB),这样,用户通过浏览器拜访 jaeger-query,就能看到具体的调用链追踪后果了,另外,红色虚线是管制信号(例如采样相干的参数):

对于本次体验

  • 明天的体验环境由以下内容形成,有个名为 <font color=”blue”>jaeger-service-provider</font> 的 web 利用,其 web 接口被拜访时,它会操作 redis,而后将本次服务的数据上报到 Jaeger,而后咱们就能够在 Jaeger 上看到本次服务的详细情况了:

极速部署 jaeger 体验环境

  • 请确保您的 docker-compose 性能能够失常应用
  • 创立文件 <font color=”blue”>docker-compose.yml</font>,内容如下:
version: '3.0'

networks:
  jaeger-tutorials-net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

services:
  jaeger:
    image: jaegertracing/all-in-one:1.26
    container_name: jaeger
    #选择网络
    networks:
      - jaeger-tutorials-net
    #抉择端口
    ports:
      - 16686:16686/tcp
    restart: always
  redis:
    image: redis:6.2.5
    container_name: redis
    #选择网络
    networks:
      - jaeger-tutorials-net
    restart: always
  jaeger-service-provider:
    image: bolingcavalry/jaeger-service-provider:0.0.1
    container_name: jaeger-service-provider
    #抉择端口
    ports:
      - 8088:8080/tcp
    #选择网络
    networks:
      - jaeger-tutorials-net
    restart: always
  • 在 docker-compose.yml 所在目录执行命令 <font color=”blue”>docker-compose up -d</font>,会立刻开始下载三个镜像,而后启动服务:
Creating network "jaeger-service-provider_jaeger-tutorials-net" with driver "bridge"
Creating jaeger                  ... done
Creating jaeger-service-provider ... done
Creating redis                   ... done
  • 至此,jaeger 体验环境曾经部署结束,咱们来体验吧

体验 jaeger 性能

  • 用浏览器拜访:<font color=”blue”>http://localhost:16686/search</font>,映入眼帘的 Jaeger 页面如下,相熟 golang 的同学都分明图标意味着什么(对于欣宸这样的 Java 铁粉,多想看到那里是一杯热咖啡啊 …):

  • 从后面的架构图得悉,<font color=”blue”>jaeger-query</font> 就是以后页面的 server 服务,它本人也通过 Jaeger 上报了本身被应用的状况,如下图所示,终于见到了 trace 和 span:

  • 接下来能够调用咱们部署的服务了,浏览器拜访:http://localhost:8088/hello,失常状况下收到返回的工夫戳:

  • 再刷新 Jaeger 的页面,如下图所示,咱们的服务和 trace 名称都赫然在列,看来上报数据失效了,点击下图右上角红框中的圆点:

  • 点击那个红点后,进入对应 trace 的详情页,如下图:

  • 至此,咱们实现了 Jaeger 的入门常识学习和理论体验,如果您对外部的实现细节感兴趣,敬请期待接下来的开发实战揭秘,欣宸原创,必不辜负您

环境信息

  • 最初附上《Jaeger 开发系列》所需的环境和版本信息,这样的版本搭配能失常运行,供您参考:
  1. 电脑:MacBook Pro,macOS Big Sur (11.5.2)
  2. Docker:20.10.7
  3. JDK:8u301
  4. Jaeger:1.26
  5. opentracing-spring-jaeger-cloud-starter:3.3.1
  6. Spring Boot:2.4.2
  7. Spring Cloud:2020.0.1
  8. Redis:6.2.5

你不孤独,欣宸原创一路相伴

  1. Java 系列
  2. Spring 系列
  3. Docker 系列
  4. kubernetes 系列
  5. 数据库 + 中间件系列
  6. DevOps 系列

欢送关注公众号:程序员欣宸

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …
https://github.com/zq2599/blog_demos

正文完
 0