1. 问题背景

今天把服务集成到Skywalking中,但是数据看起来很差劲,success rate 只有70%。还好还没被老板看到。否则他会严峻怀疑我写的是啥东西,到底能不能上线给客户供给服务。甚至,连顶替我的人都物色好了。

SkyWalking 中怎样扫除4xx的恳求

不管怎样样,咱高低得把数据拉到98%以上才靠谱啊。100%是不可能的,究竟100%便是这个体系不需求我也能正常跑,咱主打的便是一个若即若离。让老板认为这个体系真的能供给服务,但还需求我来保护,此计甚妙。

SkyWalking 中怎样扫除4xx的恳求

2. 尝试处理

处理问题最简单的三步法:

  1. Google 查找
  2. Bing 查找
  3. Baidu 查找

SkyWalking 中怎样扫除4xx的恳求

最终真让我找到一个 …… github issue:Skywalking ignore specific http.status_code Issue #11011 apache/skywalking (github.com)

我还和吴晟大佬对线了一把,最终吴晟大佬给我指两条明路:

  1. Java Agent 插件代码
  2. 改显示表达式

咱便是说,开发就应该知难而上。应该在绝地中历练一手炉火纯青的crud本事,所以选那条路不用多说了吧?

那肯定选第二条路啊,第一条谁选谁SB,不只要改代码,还要打jar和镜像出来同步给其他需求引入的业务组,如果服务端不止一种语言,你就理解悔不当初是怎样悔的了。

SkyWalking 中怎样扫除4xx的恳求

3. 处理过程

已然人家吴晟大佬都指路了,那咱就直接上吧,拿出人生三问: 第一问:你是谁? 第二问:你从哪里来? 第三问:要到那里去?

第一问:你是谁? 这东西真的难写,自己看去:Analysis Native Streaming Traces and Service Mesh Traffic | Apache SkyWalking

不想看也成,总而言之言而总之,便是一些常用的参数,体系默许写一个核算的方式(表达式)给他算好放着。由于这个功能需求有很高的扩展性,究竟国际之大无奇不有嘛,我不可能为每个人都做一遍需求。

所以呢,搞一套东西出来,能装备或者界说参数,然后你们爱怎样用怎样用,我就不管了。理解我意思吧?不理解那就骂吧,我真写不出来了。

SkyWalking 中怎样扫除4xx的恳求

第二问:你从哪里来?

要不就体系默许,要不就自己改的呗。否则还能自己按照你的需求给你参数啊。便是GPT来了也不行,我问了。

SkyWalking 中怎样扫除4xx的恳求

(好吧。我供认我做了手脚)

麻蛋,半响了,到底咋改你却是说啊? 这不就来了吗?看我操作。对比着sla的参数抄一遍,在 core.oal 中把成功条件改一下

endpoint_success = from(Endpoint.*).percent(httpResponseStatusCode < 500);
service_success = from(Service.*).percent(httpResponseStatusCode < 500);
service_instance_success = from(ServiceInstance.*).percent(httpResponseStatusCode < 500);

本来成功的条件是 status == true 上报 agent 捕获到 status >= 400 就会上报过错 那咱们改成 httpResponseStatusCode < 500 没毛病吧?

神经病啊?httpResponseStatusCode 怎样来的?

赶快看表达式去,要不你照着抄吧?

第三问:要到那里去?

已然咱们参数都定好了,那咋用呢? 别急,看我操作。

先进入修改形式

SkyWalking 中怎样扫除4xx的恳求

增加一个表达式,为什么增加不直接改?只能说我菜,不敢改,只敢加。不过还有一个用途,前端如果胡乱调用,咱们能够拿着这图喷他。

SkyWalking 中怎样扫除4xx的恳求

搞一个这种小卡片,进入修改默许,然后抄左面那个success rate就行了

SkyWalking 中怎样扫除4xx的恳求

修改默许改的东西,别忘记保存了。说多了都是泪啊

SkyWalking 中怎样扫除4xx的恳求