Jaeger的客户端采样配置(Java版)
欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https:github。comzq2599blogdemos关于采样(Sampling)采样很好理解:使用Jaeger时,未必需要将所有请求都上报到Jaeger,有时候只要抽取其中一部分观察即可,这就是按照一定策略进行采样;JaegerSDK是支持多种采样配置的,在分布式系统中,他们遵循的原则是前置判定(consistentupfront或者headbased),简单来说,假如consumer服务调用provider服务,那么某一次请求只要consumer决定不采样,那么provider在处理这个请求的时候也不会采样,也就是说对于一次完整的trace,只要最前面的服务不上报到jaeger,那么整个trace后面涉及的服务都不会上报到jaegerJaeger采样配置分为客户端和服务端两种配置,默认用的是服务端配置本文咱们来了解如何在客户端(也就是接入Jaeger的应用)配置采样,并且动手验证效果,常用的客户端采样策略有以下三种:固定:要么全部采样,要门全部不采样比例:按照指定比例采样限速:固定时间周期内采样固定数量,例如每秒一个接下来,逐个配置和体验这三种采样的效果关于实战用的工程采样配置实战不涉及编码,只需要改一些配置,所以没必要大张旗鼓的新建工程写代码,用《Jaeger开发入门(java版)》一文中的两个maven子工程即可:服务提供方jaegerserviceprovider和服务调用方jaegerserviceconsumer,都做成docker镜像,用dockercompose启动,网络架构如下图:
请确保项目的日志模板中已添加了traceId、spanId、sampled等变量,如下图红框所示,有了这些配置,咱们在日志中就能看到对应的trace是否被采样(这一步非常重要):
为了方便修改代码后重新部署启动,我写了个名为full。sh的shell脚本文件,运行即可将修改后的代码制作成最新的镜像并用dockercompose运行起来:!binbashecho停止dockercomposecdjaegerserviceproviderdockercomposedowncd。。echo编译构建mvncleanpackageUDskipTestsecho创建provider镜像cdjaegerserviceproviderdockerbuildtbolingcavalryjaegerserviceprovider:0。0。1。cd。。echo创建consumer镜像cdjaegerserviceconsumerdockerbuildtbolingcavalryjaegerserviceconsumer:0。0。1。cd。。echo清理无效资源dockersystemprunevolumesfecho启动dockercomposecdjaegerserviceproviderdockercomposeupdcd。。如果您用的是IDEA,在下图红框位置添加一个自定义命令,选中上述shell文件,就可以在IDEA中用run命令来编译构建部署了:
现在准备工作已经完成,开始实战吧,从最简单的固定采样开始;固定采样固定采样的逻辑很简单:要么全部上报,要么一个也不报固定采样的配置方式如下图红框所示:
要注意的是:根据前置判定(consistentupfront或者headbased)原则,只要将上述配置写入jaegerserviceconsumer项目的配置文件即可,至于jaegerserviceprovider维持原状不做任何改动执行前面写的full。sh脚本,编译构建部署浏览器访问http:localhost:18080hello,产生一些web请求,多访问几次看jaegerserviceconsumer容器的日志,如下图,红框中的sampledfalse表示未采样,三此请求的日志都是如此:
再看jaegerserviceprovider容器的日志,如下图红框,也全部都没有采样,这证明Jaeger的前置判定原则(consistentupfront或者headbased)是准确的,jaegerserviceconsumer是一次trace的源头,被它关闭了采样的trace,在后续的服务中也会自动关闭采样:
去Jaeger的web页面看看,空空如也,连服务列表中都没有jaegerserviceconsumer和jaegerserviceprovider:
试过了全部不采样,再来试试全部采样的配置,如下图红框:
重新部署,再产生几次请求,去看jaegerserviceconsumer容器的日志,如下图红框,全部都被采样了:
去看jaegerserviceprovider容器的日志,也是如此,所有trace都被采样
打开Jaeger的web页面,可见jaegerserviceconsumer的三次请求对应的trace全部上报:
至此,最简单的固定采样已完成,来看看更实用的比例采样比例采样顾名思义,就是按照一定的百分比采样,配置如下图所示:
执行前面写的full。sh脚本,编译构建部署测试比例采样的方法就是发多个请求,检查采样的trace是否是总数的十分之一,我这里用jmeter来执行多次请求,您可以选择自己擅长的工具,或者写代码写脚本,甚至手动访问多次使用jmeter可以控制请求次数,用的是LoopController,如下图红框所示:
向jaegerserviceconsumer的hello接口发送完一百次请求后,可以从docker容器日志中检查采样情况,这里使用grep和wc命令的组合来统计日志中出现sampledtrue和sampledfalse的行数,完整的命令如下dockerlogsjaegerserviceconsumergrepsampledtruewcl100个请求,采样率百分之十,但是用上述命令得到的结果并不是精确值10,而是8,再统计未采样的日志行数(把true改成false),得到的结果是92,总数对得上,但是采样数并非精确的百分之十,如下图:
然后将请求总数增加到一千条,得到的采样比例接近百分之十,如下:
打开Jaeger的web页面,可见果然只有106个trace:
比例采样完成了,接下来是限速采样限速采样关于限速,似乎不够具体不便于理解,但是看看官方文档上的关键字leakybucket,如下图红框,聪明的您一定想到了其中的关键,漏桶限流算法(注意,是漏桶,不是令牌桶,漏桶算法的峰值和桶大小有关):
配置如下图红框所示:
执行前面写的full。sh脚本,编译构建部署咱们的配置是每秒钟一次采样,所以验证的时候要控制好发送请求的时长,我这里还是用jmeter来发请求的,如下图红框所示,jmeter有种RuntimeController类型的控制器,可以控制持续请求的时长,我这里设置为10秒
用jmeter持续发送10秒的请求,从jmeter的汇总报告中可见一共发了70个请求:
用命令dockerlogsjaegerserviceconsumergrep‘sampledtrue’wcl查看采样总数,10秒的预期是10个,结果如下,并不精确,只是接近而已:
清掉所有数据,将时长改成100秒试试,一共发出次852请求:
采样总数为96,接近预期:
打开Jaeger的web页面也是96次trace:
服务端配置一瞥还记得《分布式调用链跟踪工具Jaeger?两分钟极速体验》、《Jaeger开发入门(java版)》等文章中的操作吗?那时咱们并没有添加任何与采样有关的配置,但是每次请求都能在Jaeger的web页面上查到对应的trace,也就是说所有请求全部被采样了,这是为啥?如果配置文件中没有采样相关的内容,那么默认使用的就是远程配置,具体的信息就在jaeger的allinone容器中,执行下面这个命令,就能看到远程采样配置:dockerexecjaegercatetcjaegersamplingstrategies。json上述命令可以看到samplingstrategies。json的内容如下,原来服务端的配置是比例采样,不过比例是百分之百,这就能解释为何所有请求都能在Jaeger的web页面查到trace信息了:{defaultstrategy:{type:probabilistic,param:1}}至此,采样配置实战已经完成,希望能给您提供一些参考,辅助您针对实际情况定制更加合适的采样策略欢迎关注头条号:程序员欣宸学习路上,你不孤单,欣宸原创一路相伴。。。
又有两家网约车平台被注销,多地开始清理僵尸平台!全文共1090字,阅读需约1分钟网约车观察12月17日消息,近日多个城市开始清理僵尸网约车平台,12月5日,无锡交通运输局发布公告,无锡市有4家僵尸网约车平台被注销,同时当地交通部
Jmeter(二十一)jmeter导入和导出接口的处理JMeter测试导入接口利用Jmeter测试上传文件,首先可根据接口文档或者fiddler抓包分析文件上传的接口如下图以下是我通过fiddler所截取的文件上传的接口编辑1填写导入
新能源车如何计算续航里程?2022年是新能源汽车全面爆发的一年,相信许多人都把下一辆车锁定在新能源汽车身上。续航里程就成为了人们的关注点,然而众多车辆厂家的续航里程大多不一样,有的宣称续航400公里有的宣称
卢森堡边境小镇申根,开启了欧洲一体化大门的里程碑近年去欧洲旅行的人都知道,只要签了一个申根成员国签发的签证(SchengenVisa),在所有其他成员国也被视作有效,而无需另外申请签证,可以自由在申根国旅行流动。其实这个协议签订
美股遭遇黑色星期四!纳指跌3。23中概股大猩猩科技跌25。27中新经纬12月16日电美股周四重挫,连续第二个交易日下跌。三大股指早盘低开下探,尾盘跌幅略收窄,道指创三个月来最大单日跌幅,纳指跌超3。Wind截图美东时间12月15日1600(北
5个小技巧让头发多长1公分!好想赶快拥有女神长发啊!2022生机大会5个方法加快头发生长好想拥有女神长发!每个女生人生中一定都会经历一次头发被剪坏的梦魇吧?这个时候就会天天祈祷希望头发赶快长长所以今天小编就要来告诉大家几种不伤发质,
美股遭遇黑色星期四,道指创3月来最大单日跌幅美股遭遇黑色星期四。截至当地时间12月15日收盘,道指收跌764。13点,跌幅为2。25,报33202。22点,创三个月来最大单日跌幅纳指跌360。36点,跌幅为3。23,报108
降温了,几首ampampquot冬之歌ampampquot哪一首拨动你的心除了天气让人瑟瑟发抖下面几首冬之歌还将告诉你冬天是一个美好的季节冬日的花卢绍莹冬日的花卢绍莹卢绍璇瑞鸣音乐城市的十二个花园(浪漫钢琴连弹新加坡双胞胎创演)碧绿的城市总是四季如夏,浮
世间很暖,只因有你文墨语清秋01。hr暖暖的,你将爱洒落在这江南的每一处地方,花儿在向阳地开着,绽放着幽幽的清香,雨儿轻轻地缠绵着,在这江南的小巷里交织着爱情的情网。在这一片旖旎的天空下,红墙黛瓦间
智能驾驶,驶向未来岁末之际,智能驾驶吹响集结号,宣告下半场竞赛正式开始。12月15日,深圳坂田,在协办方天安云谷的鼎力支持下,由潮电智能汽车和深圳市摄像头行业协会联合主办的2022全球智能驾驶技术大
投资大湾区,就是投资未来2022粤港澳大湾区全球招商大会新闻发布会于日前举行。会上宣布,广东省人民政府和香港特别行政区政府澳门特别行政区政府,定于12月21日22日举办2022粤港澳大湾区全球招商大会。资