zoukankan      html  css  js  c++  java
  • 分布式调用链跟踪工具Jaeger?两分钟极速体验

    欢迎访问我的GitHub

    https://github.com/zq2599/blog_demos

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

    关于Jaeger开发系列(java版)

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

    本篇概览

    • 作为《Jaeger开发系列》的开篇,咱们先花一分钟了解Jaeger的基本概念,再用三十秒时间完成部署,然后三十秒体验基本功能,以最轻松的姿势和心情开启Java程序员的Jaeger之旅;
    • 以下是我这里执行本篇实战的环境和软件:
    1. 电脑:MacBook Pro,macOS Big Sur (11.5.2)---您也可以使用Linux,如Ubuntu或者CentOS
    2. Docker:20.10.7
    3. JDK:8u301
    • 接下来先从Jaeger的基本概念开始吧;

    关于Jaeger

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

    在这里插入图片描述

    • Jaeger的后端、Web端、本地库等都遵守了OpenTracing standard

    • 在OpenTracing标准中,一个工作的逻辑单元被称为span,它有自己的名称、开始时间、时长、标签等特性,如下图:

    在这里插入图片描述

    • 下面是官方给出的Jaeger架构图(这是没有使用kafka做缓冲的版本),最上层一行表明Jaeger支持的语言类型,可见应用使用了SDK后,业务的span被送到jaeger-agent(通过UDP协议),然后被推送到jaeger-collector,数据被jaeger-collector写入数据库(DB),这样,用户通过浏览器访问jaeger-query,就能看到详细的调用链追踪结果了,另外,红色虚线是控制信号(例如采样相关的参数):

    在这里插入图片描述

    关于本次体验

    • 今天的体验环境由以下内容构成,有个名为jaeger-service-provider的web应用,其web接口被访问时,它会操作redis,然后将本次服务的数据上报到Jaeger,然后咱们就可以在Jaeger上看到本次服务的详细情况了:

    在这里插入图片描述

    极速部署jaeger体验环境

    • 请确保您的docker-compose功能可以正常使用

    • 创建文件docker-compose.yml,内容如下:

    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所在目录执行命令docker-compose up -d,会立即开始下载三个镜像,然后启动服务:
    Creating network "jaeger-service-provider_jaeger-tutorials-net" with driver "bridge"
    Creating jaeger                  ... done
    Creating jaeger-service-provider ... done
    Creating redis                   ... done
    
    • 至此,jaeger体验环境已经部署完毕,咱们来体验吧

    体验jaeger功能

    • 用浏览器访问:http://localhost:16686/search ,映入眼帘的Jaeger页面如下,熟悉golang的同学都清楚图标意味着什么(对于欣宸这样的Java铁粉,多想看到那里是一杯热咖啡啊...):

    在这里插入图片描述

    • 从前面的架构图得知,jaeger-query就是当前页面的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

  • 相关阅读:
    金盾视频高级加密系统 2016S VIP 注册版 高强度视频加密工具
    Webshell管理+网站后台管理+菜刀
    易 5.2 修正版+破解+完美支持Win8/7
    易5.1破解版+汉语编程
    UltraISOPE 9.6.2.3059简体中文注册版/单文件版+软碟通
    hfs网络文件服务器 2.3
    免费开通二级域名的论坛
    周星驰电影全集+BT种子下载+高清版MKV+周星驰系列电影合集
    DJ音乐盒-专注DJ
    EXE加载皮肤DLL
  • 原文地址:https://www.cnblogs.com/bolingcavalry/p/15696256.html
Copyright © 2011-2022 走看看