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) >= 1
    period: 3
    silence-period: 1
    include-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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/577114.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JS面试题汇总(十)

JavaScript 的数据对象有那些属性值&#xff1f; writable&#xff1a;这个属性的值是否可以改。 configurable&#xff1a;这个属性的配置是否可以删除&#xff0c;修改。 enumerable&#xff1a;这个属性是否能在 for…in 循环中遍历出来或在 Object. keys 中列举出来。 …

小程序评分/关键词/UV优化助力小程序登顶

随着小程序市场的日益繁荣&#xff0c;小程序搜索排名优化成为了众多开发者关注的焦点。小程序搜索排名被很多因素影响着&#xff0c;关键词、评分还有uv&#xff08;授权&#xff09;等。在本文小柚和各位老板分享如何有效优化小程序搜索排名的经验。 一、关键词策略 关键词是…

[最新]CentOS7设置开机自启动Hadoop集群

安装好Hadoop后我们可以使用开机自启动的方式&#xff0c;节约敲命令的时间。注意是centOS7版本!!!和centOS6版本区别非常大!!! 1、切换到系统目录 [rootmaster ~]# cd /etc/systemd [rootmaster systemd]# ll total 32 -rw-r--r-- 1 root root 720 Jun 30 23:11 bootcha…

汽车新智能图谱里:理解腾讯的AI TO B路径

将自身的C2B产品和产业理解充分AI化&#xff0c;在自身内部场景率先验证跑通后&#xff0c;进而释放给产业伙伴&#xff0c;对应到具体的需求痛点&#xff0c;一起打磨对应的行业AI模型。 这也恰是腾讯“实用”标签背后的AI产业路径。 作者|皮爷 出品|产业家 成本、性价…

DS进阶:并查集

一、并查集的原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这…

Taro +vue3 中实现全局颜色css变量的设置和使用

当我们现在需要弄一个随时修改的页面颜色主题色 我们可以随时修改 我使用的是 Taro 框架 一般有一个app.less 文件 我们在这个里面 设置一个root 全局样式 :root {--primary-color: #028fd4;--secondary-color: #028fd6;/* 添加其他颜色变量 */ } 这样在全局我们就可以使用这…

uniapp 微信小程序 分享海报的实现

主页面 <template><view class"page"><!-- 自定义导航栏--><Navbar title"我的海报"></Navbar><view class"container"><poster ref"poster" :imageUrl"image" :imageWidth"7…

python之List列表

1. 高级数据类型 Python中的数据类型可以分为&#xff1a;数字型&#xff08;基本数据类型&#xff09;和非数字型&#xff08;高级数据类型&#xff09; 数字型包含&#xff1a;整型int、浮点型float、布尔型bool、复数型complex 非数字型包含&#xff1a;字符串str、列表l…

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(四)分组多查询注意力

探索和构建 LLaMA 3 架构&#xff1a;深入探讨组件、编码和推理技术&#xff08;四&#xff09;分组多查询注意力 Grouped-query Attention&#xff0c;简称GQA 分组查询注意力&#xff08;Grouped-query Attention&#xff0c;简称GQA&#xff09;是多查询和多头注意力的插值…

【35分钟掌握金融风控策略10】风控策略部署2

目录 策略部署 决策引擎系统简介 基于决策引擎进行策略部署 策略部署结果验证 知识点补充 测试验证 回溯比对 策略部署 策略主要部署在决策引擎上进行风险决策&#xff0c;接下来分别介绍决策引擎系统&#xff0c;以及基于决策引擎进行策略部署的相关内容。 决策引擎系…

java-Spring-(MyBatis框架-xml管理)

目录 前置条件 xml与注解比较 1.1 xml定义 1.2 和SQL注解比较 建包准备 插入数据 ​编辑 更新数据 删除数据 查询数据 查看单字段查询 &#x1f3f7;&#x1f4a3;前置条件 创建一个spring boot 初始化的项目 &#x1f3f7;&#x1f4a3;xml与注解比较 1.1 xml定义 …

微信小程序简单实现购物车功能

微信小程序简单实现购物车结算和购物车列表展示功能 实现在微信小程序中对每一个购物车界面的商品订单&#xff0c;进行勾选结算和取消结算的功能&#xff0c;相关界面截图如下&#xff1a; 具体实现示例代码为&#xff1a; 1、js代码&#xff1a; Page({/*** 页面的初始数…

SpringCloudAlibaba:2.1nacos

概述 概述 简介 Nacos是阿里巴巴开源的服务注册中心以及配置中心 Nacos注册中心Eureka 服务配置Config 服务总线Bus 官网 Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos 名字由来 Naming&#xff1a;名字 Configurations&#xff1a;配置 Service&#xff1a;服务 功能…

【基础篇】Git 基础命令与核心概念

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 一&#xff0c;Git 初识 1.1&#xff0c;问题引入 不知道你工作或学习时&#xff0c;有没有遇到…

Centos8操作系统安装mysql5.7版本以及报错解决

目录 一、卸载MySql 1.首先查看已安装的mysql 2.逐个或者执行一下命令统一卸载掉 注意&#xff1a; 3. 卸载其他相关文件 二、安装MySql 1.安装mysql的rpm源 2.安装MySql 如果遇到以下错误&#xff1a; 问题一: 解决方法&#xff1a; 问题二、 解决方法&#xff1…

国产麒麟v10系统下打包electron+vue程序,报错unknown output format set

报错如下&#xff1a; 报错第一时间想到可能是代码配置原因报错&#xff0c;查看代码似乎感觉没啥问题 又查看具体报错原因可能是因为icon的原因报错&#xff0c;后面查阅发现ico在各系统平台会不兼容&#xff0c;也就是ico是给win下使用的&#xff0c;此处改下图标格式就ok&am…

1、Qt简介

文章目录 前言一、pySide2 / pySide6 ,PyQt5 / PyQt6二、安装包1 安装pyside22 安装pyqt5三、从一个简单的例子开始三、界面动作处理---信号(signal)与槽(slot)(Qt最核心的机制)--- 绑定事件封装到类中总结前言 参考文章:Qt简介 本文开始就开始进入到qt的开发笔记书写…

【论文解读】QUEST: Query Stream for Practical Cooperative Perception

QUEST 摘要引言QUERY COOPERATION PARADIGMQUEST FRAMEWORKA. Overall ArchitectureB. Cross-agent Query Interaction 实验结论 摘要 合作感知通过提供额外的视点和扩展感知领域&#xff0c;可以有效地提高个体感知性能。现有的合作模式要么是可解释的(结果合作)&#xff0c;…

计算机视觉——OpenCV 使用分水岭算法进行图像分割

分水岭算法 分水岭算法&#xff1a;模拟地理形态的图像分割 分水岭算法通过模拟自然地形来实现图像中物体的分类。在这一过程中&#xff0c;每个像素的灰度值被视作其高度&#xff0c;灰度值较高的像素形成山脊&#xff0c;即分水岭&#xff0c;而二值化阈值则相当于水平面&am…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展&#xff0c;设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台&#xff0c;结合NI Vision机器视觉库&#xff0c;开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…