echo “启动docker-compose”

cd jaeger-service-provider && docker-compose up -d && cd …

  • 如果您用的是IDEA,在下图红框位置添加一个自定义命令,选中上述shell文件,就可以在IDEA中用run命令来编译构建部署了:

  • 现在准备工作已经完成,开始实战吧,从最简单的固定采样开始;

固定采样

  • 固定采样的逻辑很简单:要么全部上报,要么一个也不报

  • 固定采样的配置方式如下图红框所示:

  • 要注意的是:根据前置判定(consistent upfront 或者head-based)原则,只要将上述配置写入jaeger-service-consumer项目的配置文件即可,至于jaeger-service-provider维持原状不做任何改动

  • 执行前面写的full.sh脚本,编译构建部署

  • 浏览器访问http://localhost:18080/hello,产生一些web请求,多访问几次

  • 看jaeger-service-consumer容器的日志,如下图,红框中的sampled=false表示未采样,三此请求的日志都是如此:

  • 再看jaeger-service-provider容器的日志,如下图红框,也全部都没有采样,这证明Jaeger的前置判定原则(consistent upfront 或者head-based)是准确的,jaeger-service-consumer是一次trace的源头,被它关闭了采样的trace,在后续的服务中也会自动关闭采样:

  • 去Jaeger的web页面看看,空空如也,连服务列表中都没有jaeger-service-consumer和jaeger-service-provider:

  • 试过了全部不采样,再来试试全部采样的配置,如下图红框:

  • 重新部署,再产生几次请求,去看jaeger-service-consumer容器的日志,如下图红框,全部都被采样了:

  • 去看jaeger-service-provider容器的日志,也是如此,所有trace都被采样:

  • 打开Jaeger的web页面,可见jaeger-service-consumer的三次请求对应的trace全部上报:

  • 至此,最简单的固定采样已完成,来看看更实用的比例采样

比例采样

  • 顾名思义,就是按照一定的百分比采样,配置如下图所示:

  • 执行前面写的full.sh脚本,编译构建部署

  • 测试比例采样的方法就是发多个请求,检查采样的trace是否是总数的十分之一,我这里用jmeter来执行多次请求,您可以选择自己擅长的工具,或者写代码写脚本,甚至手动访问多次

  • 使用jmeter可以控制请求次数,用的是Loop Controller,如下图红框所示:

  • 向jaeger-service-consumer的/hello接口发送完一百次请求后,可以从docker容器日志中检查采样情况,这里使用grep和wc命令的组合来统计日志中出现sampled=true和sampled=false的行数,完整的命令如下:

docker logs jaeger-service-consumer| grep ‘sampled=true’|wc -l

  • 100个请求,采样率百分之十,但是用上述命令得到的结果并不是精确值10,而是8,再统计未采样的日志行数(把true改成false),得到的结果是92,总数对得上,但是采样数并非精确的百分之十,如下图:

  • 然后将请求总数增加到一千条,得到的采样比例接近百分之十,如下:

![在这里插入图片描述](https://img-blog.csdnimg.cn/bb60a6b9b8b44b9fa203d3d65aeacae7.png?x-oss

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取

-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56iL5bqP5ZGY5qyj5a64,size_20,color_FFFFFF,t_70,g_se,x_16)

  • 打开Jaeger的web页面,可见果然只有106个trace:

  • 比例采样完成了,接下来是限速采样

限速采样

  • 关于限速,似乎不够具体不便于理解,但是看看官方文档上的关键字leaky bucket,如下图红框,聪明的您一定想到了其中的关键,漏桶限流算法(注意,是漏桶,不是令牌桶,漏桶算法的峰值和桶大小有关):

  • 配置如下图红框所示:

  • 执行前面写的full.sh脚本,编译构建部署

  • 咱们的配置是每秒钟一次采样,所以验证的时候要控制好发送请求的时长,我这里还是用jmeter来发请求的,如下图红框所示,jmeter有种Runtime Controller类型的控制器,可以控制持续请求的时长,我这里设置为10秒:

  • 用jmeter持续发送10秒的请求,从jmeter的汇总报告中可见一共发了70个请求:

  • 用命令docker logs jaeger-service-consumer| grep ‘sampled=true’|wc -l查看采样总数,10秒的预期是10个,结果如下,并不精确,只是接近而已:

  • 清掉所有数据,将时长改成100秒试试,一共发出次852请求:

  • 采样总数为96,接近预期:

  • 打开Jaeger的web页面也是96次trace:

服务端配置一瞥

  • 还记得《分布式调用链跟踪工具Jaeger?两分钟极速体验》、《Jaeger开发入门(java版)》等文章中的操作吗?那时咱们并没有添加任何与采样有关的配置,但是每次请求都能在Jaeger的web页面上查到对应的trace,也就是说所有请求全部被采样了,这是为啥?

  • 如果配置文件中没有采样相关的内容,那么默认使用的就是远程配置,具体的信息就在jaeger的all-in-one容器中,执行下面这个命令,就能看到远程采样配置:

docker exec jaeger cat /etc/jaeger/sampling_strategies.json

  • 上述命令可以看到sampling_strategies.json的内容如下,原来服务端的配置是比例采样,不过比例是百分之百,这就能解释为何所有请求都能在Jaeger的web页面查到trace信息了:

{

“default_strategy”: {

“type”: “probabilistic”,

“param”: 1

}

}

  • 至此,采样配置实战已经完成,希望能给您提供一些参考,辅助您针对实际情况定制更加合适的采样策略

Jaeger的客户端采样配置(Java版)(1),看这篇文章准没错相关推荐

  1. Java虚拟机学习集锦是我攒来的,看这篇文章准没错!

    一面 介绍一下自己 问项目经历, 聊"数据同步" 接着聊上了 K8S 的项目 有没有什么钻研得比较深得技术?(大佬:kubernetes, golang, prometheus, ...

  2. java改错题技巧,看这篇文章准没错!

    阿里 mq 消息可靠性,幂等如何保证 分布式锁的实现方案比较,为什么选择 zookeeper, zookeeper 一致性协议原理 线程池参数,阻塞队列实现 一致性 Hash解决什么问题, 如何实现? ...

  3. 2020做Java的都看这篇文章,面试一次过、升职加薪,赶快来Get

    前言 2020已经快要过去大半年了,金三银四已过,你是否抓住了这个机会,找到了好工作薪资福利上涨,经过之前的情况,你是否还要错过下一次招聘季. 如果你有想法那么就将要提前准备一下啦.跳槽时时刻刻都在发 ...

  4. eclipse怎么找到java源代码?看这篇文章解决

    安装好eclipse 1. 2. 3.双击jdk,就会弹出 4. 5.找到你安装jdk的目录下的src.zip 6.然后一路OK,finish. 7.当你要看源代码时,你只要写下正确的代码 如:看Ra ...

  5. java黄油刀_ButterKnife原理解析看这篇文章就够了

    原标题:ButterKnife原理解析看这篇文章就够了 作者:SheHuan https://juejin.im/post/5acec2b46fb9a028c6761628 ButterKnife 算 ...

  6. Java String,看这篇就够了

    String,是Java中最重要的类.这句肯定的推断不是Java之父詹姆斯·高斯林说的,而是沉默王二说的,因此你不必怀疑它的准确性. 关于字符串,有很多的面试题,但我总觉得理论知识绕来绕去没多大意思. ...

  7. 女生就不适合学Java吗_女生不适合学java?给他看这篇文章,女生其实更适合学java,更好就业!...

    原标题:女生不适合学java?给他看这篇文章,女生其实更适合学java,更好就业! 女生适合学java吗?女生做IT怎么样 首先要表明我的观点,编程是不分男女,什么女生不适合学编程的说法,从客观上来说 ...

  8. 用云服务器windows环境下来搭建一个Minecraft服务器教程以及客户端使用教程java版

    云服务器一台(这边使用天翼云win2012r2系统,配置为硬盘40G,CPU:1核,内存:2G,上行带宽:1M(两个人很流畅,多人使用建议买大点的)) 可以去买学生机!比较优惠!也可以直接用电脑然后内 ...

  9. 如何使用HMCL启动器配置Java版Minecraft

    文章来自我的个人博客,欢迎访问 repo-kristx.github.io 博文存档 文章目录 1. Backgroud 2. Followed Steps 2.1 Java Environment ...

最新文章

  1. 基于 MongoDB 及 Spring Boot 的文件服务器的实现
  2. 【Vegas原创】导出Excel时,如何将数字格式转为文本格式?(07.12.13 Update)
  3. c/c++左值和右值
  4. 用matlab让高低音频重叠,音频分帧,叠加后仍有不连续
  5. freemarker的测试结果框架_TestNG框架Listener介绍及测试结果的收集
  6. 皇nity webgl与html交互文件,Vue与UnityWebGl交互通信
  7. Android ble covana,I’m A Lie
  8. JavaScript——BOM知识
  9. Linux基础命令---gzexe
  10. python脚本编程100例_python 100例 (持续更新)
  11. Win10 安装 Ubuntu 使用 Linux 教程
  12. android 7.0 调试日志,Android软件调试记录
  13. download 下载文件 IE兼容性处理
  14. 用ec怎么修改网络服务器数值,ec服务器
  15. google 浏览器同步
  16. Linova and Kingdom
  17. 5000字长文:电商运营如何做好数据分析?
  18. 数据库实验 嵌套查询和连接查询
  19. 统计单词出现频次(例:See You Again)
  20. 【译】Flutter 2 正式版的新功能,一睹为快

热门文章

  1. php 凯撒加密解密,PHP脚本实现凯撒加(解)密
  2. 很抱歉,系统监测到你的支付宝账号有异常,入驻失败,如需帮助请拨打热线-------支付宝开放平台入驻失败如何解决???
  3. 基于麻雀算法改进的无线传感器网络Dv-hop定位算法 - 附代码
  4. 2013年至今百余家P2P网站跑路
  5. [NUAA]Python用UDP协议建立带有私聊功能的网络聊天室-建立聊天工具
  6. UE4+科大讯飞语音听写
  7. 安东尼罗宾--激发你的无限潜能[连载]--15 16章
  8. 关于t-io框架的学习
  9. dz3.2火车头 php接口,DiscuzX3.4论坛火车头采集器免登陆发布模块(带测试接口)-百度云...
  10. vue+element上传图片到阿里云(可直接运行domo)