当前位置: 首页 > news >正文

SkyWalking 自定义Span并接入告警

图容易被CSDN吞掉,我在掘金也发了:https://juejin.cn/post/7361821913398837248

我就是这么膨胀

最近在做 OpenAI API 套壳,当我使用 okhttp-sse 这个库进行流式内容转发的时候,我发现有些回调方法 SkyWalking 不能抓取到。这就出问题了。SLA 天天100%,整得我都不好意思说出来我的服务SLA比阿里、腾讯这些公司还牛X。

image.png

搞得我挺膨胀的,有一天有一个不知名的测试小伙子来和我说怎么回答没出来的时候,我是怀疑的。直接就给他来了一个三连:

  • 你会用吗?
  • 你网络行不行?
  • 哥,先别报老板,我看看。

我打开 SkyWalking 看到 SLA 100%,这时候我又膨胀了:

  • 你真的会用吗?
  • 你网络真的行吗?
  • 哥,你咋报群里给老板看了,我马上查还不行吗?

还好服务有日志,我一查果然芭比Q了。okhttp-sse 回调的时候报错了,但这个时候 SkyWalking 还显示 HTTP Status: 200。但是日志确实有报错,回答也确实没有。

有错就要认,挨打要立正

这不,测试小哥告老板去了。我们再不解决掉问题估计明天会因为左脚先进入公司而提取假期。解决问题的第一步,应该先弄清楚问题出在哪里?你面无表情的话语不剩多少意义,就当我求求你,给我一些说明。

image.png

来简单梳理一下 SSE 的工作流程:

没有 OpenAI 的时候是这样的
image.png

有了 OpenAI 之后是这样的

image.png

问题大概知道了,当连接建立的时候,服务端就返回了 200。那 SkyWalking 也无能为力呀。

image.png

服务端:服务真的报错的,你就探测 HTTP Status 是 200 了不起啊?

SkyWalking:按规范办事就是了不起。 OAI/OpenAPI-Specification: The OpenAPI Specification Repository (github.com)

image.png

自定义 Span

涉及到自定义的问题,不要犹豫一把梭这个库就行了。

the toolkit, such as using maven or gradle | Apache SkyWalking

注意:依赖版本和你使用的 java-agent 版本保持一致

<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>${skywalking.version}</version>
</dependency>

导入依赖之后,就创建一个Span,有多种方式可以创建:

  • @Trace(operationName = "{name}")
  • ActiveSpan.setOperationName("{name}")

设置完 OperationName 之后,保险起见应该在 SkyWalking UI 查一下这个 span 在不在?
如果你真的去看就会发现真的有这个Span,我就不截图了,放张表情包凑合一下。

image.png

接入告警

自定义 Span 之后是能在链路追踪里看到了,但是怎么加告警呢?别急,看我操作。

image.png

还是不看我操作了,看吴晟大佬操作吧。

Can skywalking display the metrics(such as resp_time or cpm)of a logic endpoint, in the service dashboard (not endpoint dashboard)? · apache/skywalking · Discussion #10864 (github.com)

The Logic Endpoint | Apache SkyWalking

总结一下就是,加个 tag

  • @Tag(value = "x-le", key = "{\"logic-span\":true}")
  • ActiveSpan.tag("x-le", "{\"logic-span\":true}")

加完 tag 之后这个 Span 就是一个有证的 Endpoint 了,它可以在SkyWalking UI 中查询到。也能使用 OAL 表达式里面指标来进行告警操作。

贴个示例:

reaction_stream_failure_rule:expression: sum((endpoint_sla / 100) < 100) >= 1period: 3silence-period: 1include-names:- 'Reaction/stream in fake-service'message: 'SSE回答异常'

我还写过一篇告警配置的文章,来宠幸一下她吧:https://juejin.cn/post/7344567669893021736

Ref

the toolkit, such as using maven or gradle | Apache SkyWalking

The Logic Endpoint | Apache SkyWalking

Can skywalking display the metrics(such as resp_time or cpm)of a logic endpoint, in the service dashboard (not endpoint dashboard)? · apache/skywalking · Discussion #10864 (github.com)

http://www.lryc.cn/news/341462.html

相关文章:

  • 代理IP,助力海外社媒运营!
  • 手撕spring框架(3)
  • Swift手撸轮播效果
  • 数据分析——业务数据描述
  • 【哈希表】Leetcode 14. 最长公共前缀
  • (三)JVM实战——对象的内存布局与执行引擎详解
  • 微信视频号如何变现呢,视频号涨粉最快方法
  • 数智先锋 | 多场景数据治理案例,释放数据要素生产力
  • UE5 audio capture 回声问题 ||在安卓上有爆鸣声
  • 第 10 场蓝桥杯小白入门赛题解
  • 抖音视频评论区用户采集 根据视频链接批量获取用户信息
  • C++ 多态(一)
  • [Linux][网络][TCP][一][TCP基础][TCP报头]详细讲解
  • java-函数式编程-函数对象
  • 致远oa实时获取第三方自定义组件实现
  • 【Linux-点灯烧录-SD卡/USB烧写】
  • PostgreSQL自带的命令行工具06- pg_isready
  • 【请投票】嘉立创EDA中LED发光二极管是否应有统一的引脚定义?
  • LT6911UXB HDMI2.0 至四端口 MIPI DSI/CSI,带音频 龙迅方案
  • 网络培训议题@2
  • linux文本三剑客之sed
  • nginx封禁恶意IP
  • 「PHP系列」PHP MySQL 简介及运用
  • 深度学习论文: XFeat: Accelerated Features for Lightweight Image Matching
  • C++之Eigen库基本使用
  • 2024年 Java 面试八股文——SpringBoot篇
  • C/C++的指针、万能指针、常量指针和指针常量
  • 【讲解下如何解决一些常见的 Composer 错误】
  • qq空间:图片批量下载js脚本工具,javascript批量下载图片
  • 滑动验证码登陆测试编程示例