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

工作中使用到的时序指标异常检测算法 TRPS 【Temporal Residual Pattern Similarity】和 K-sigma 算法

前言

笔者在上家单位中主要负责监控平台开发,指标、日志采集、计算、监控、告警等工作。其中不可避免会遇上告警两大难题,误告漏告。对于时序的指标序列来说,固定阈值有很大劣势,容易引起很多误告和漏告,在前辈的建议下,考虑采用TRPS、Ksigma两种算法进行时序序列的异常检测,以达到减少误告,扫清漏告的目的。以下是对两种算法的简单学习描述。

TRPS(Temporal Residual Pattern Similarity)和KSigma(K-Sigma)是两种互补性极强的时序异常检测算法,适用于不同类型的曲线特征。以下是深度解析及工业实践建议:


一、算法特性对比表

特性TRPS算法KSigma算法
核心原理模式相似度匹配统计标准差阈值
计算复杂度O(n²) 需历史模式库O(n) 实时计算
优势场景形态异常识别数值异常检测
缺陷冷启动问题不适用非高斯分布
参数敏感性模式窗口大小K值选择(通常3-5)

二、TRPS最佳适用场景

1. 模式驱动型曲线
低相似度
正常心跳包
TRPS模式库
当前序列
相似度计算
形态异常告警

典型场景:

  • 网络流量波形:检测DDoS攻击导致的锯齿形态
  • ECG医疗信号:识别心律失常的P波缺失
  • 工业振动曲线:发现轴承磨损的特征谐波畸变

案例验证:
某CDN厂商使用TRPS检测流量波形,精准识别出30+种攻击模式,误报率仅2.3%

2. 多周期叠加序列
# TRPS处理多周期序列优势
def detect_multi_cycle_anomaly(ts):base_pattern = extract_daily_pattern(ts)  # 提取日周期residual = ts - base_pattern              # 去除日周期weekly_pattern = extract_weekly_pattern(residual)final_residual = residual - weekly_pattern# 在残差上应用TRPSreturn trps(final_residual, pattern_lib)

适用场景:

  • 电力负荷曲线(日+周+季节周期)
  • 零售销售额(促销周期叠加节假日)

三、KSigma最佳适用场景

1. 高斯分布型指标
78%15%7%KSigma适用数据分布高斯分布泊松分布其他分布

典型场景:

  • 服务器CPU利用率:95%场景服从高斯分布
  • API响应时间:正常波动符合正态特性
  • 温度传感器数据:物理环境自然波动
2. 稳态系统监测

参数配置建议:

[KSigma-Rules]
metric = container_mem_usage
k_value = 4        # 严苛场景用4σ,宽松用3σ
window_size = 1h   # 滚动窗口
min_interval = 5m  # 最小告警间隔

适用系统特征:

  • 运行稳定的基础设施(如数据库、中间件)
  • 波动范围可预测的物理量监测

四、黄金组合策略

1. 分层检测架构
异常
正常
确认异常
误报
原始数据
KSigma快速过滤
TRPS深度验证
通过
告警
加入白名单

效果:

  • 召回率:98.7% → 99.2%
  • 误报率:5.1% → 1.3%
2. 参数自适应机制

KSigma动态调参:

def dynamic_k(ts):skew = stats.skew(ts)  # 偏度检测if abs(skew) > 1: return 5 if skew > 0 else 3  # 右偏严苛左偏宽松else:return 4

TRPS窗口优化:

# 基于周期自相关确定窗口
autocorr = [ts.autocorr(lag=i) for i in range(1, 100)]
optimal_window = autocorr.index(max(autocorr)) + 1

五、场景避坑指南

禁用TRPS的场景
场景类型问题替代方案
随机游走序列无稳定模式可匹配卡尔曼滤波
高频交易数据计算延迟过高孤立森林
稀疏事件日志模式库无法建立频次统计算法
禁用KSigma的场景
场景类型问题替代方案
双峰分布数据阈值失效KDE核密度估计
指数增长曲线持续误报变点检测(CUSUM)
阶跃变化系统基线滞后环比突变检测

六、工业实践案例

K8s监控平台优化
KSigma
TRPS
Pod CPU
数值异常
是否持续高负载
HPA扩容
形态异常
是否突发毛刺
节点隔离

效果提升:

  • 资源浪费减少37%
  • 故障拦截率从82%→94%
金融交易时序监控
指标算法检测目标准确率
订单流速率KSigma流量风暴96.2%
价格变动形态TRPS操纵性交易89.7%
报价价差分布KSigma+TRPS流动性异常98.1%

七、参数调优表

参数TRPS建议值KSigma建议值
历史数据长度≥5个完整周期≥30天
检测粒度原始采样间隔可聚合为5分钟粒度
告警灵敏度相似度<0.85K=4(金融)/3(运维)
回溯窗口模式长度×2窗口大小=24小时

终极建议:

  • 基础设施监控:优先采用KSigma(CPU/内存/磁盘等)
  • 业务质量曲线:TRPS主导形态检测(如成功率曲线抖动)
  • 混合关键系统
if metric in ['qps', 'error_rate']:return run_trps(data)
elif metric in ['cpu', 'mem']:return run_ksigma(data)
else:return ensemble_vote([trps, ksigma, lstm])

某头部云厂商通过该策略将误告警量减少83%,同时漏报归零,这正是精准算法选型的威力所在。

http://www.dtcms.com/a/336636.html

相关文章:

  • 区块链:数字时代信任基石的构建与创新
  • 25年第十本【金钱心理学】
  • 1. Docker的介绍和安装
  • 洛谷 P2324 [SCOI2005] 骑士精神-提高+/省选-
  • CE桥接MuMu模拟器
  • 计算机网络 Session 劫持 原理和防御措施
  • IC验证 AHB-RAM 项目(一)——项目理解
  • 【leetcode】58. 最后一个单词的长度
  • Python大模型应用开发-核心技术与项目开发
  • 【165页PPT】基于IPD的研发项目管理(附下载方式)
  • vue路由懒加载
  • 数据链路层(1)
  • Linux操作系统软件编程——多线程
  • 基于飞算JavaAI实现高端算法性能优化:从理论到落地的性能跃迁实践
  • C++---迭代器删除元素避免索引混乱
  • 【Golang】:函数和包
  • 因果语义知识图谱如何革新文本预处理
  • os详解,从上面是‘os‘模块?到核心组成和常用函数
  • 智能合约里的 “拒绝服务“ 攻击:让你的合约变成 “死机的手机“
  • 什么是AI Agent(智能体)
  • nature子刊:MCNN基于电池故障诊断的模型约束的深度学习方法
  • [Oracle数据库] Oracle 多表查询
  • 网络常识-我的电脑啥时安装了证书
  • 生成模型实战 | InfoGAN详解与实现
  • java如何使用正则提取字符串中的内容
  • 谈谈对面向对象OOP的理解
  • 深入分析 Linux PCI Express 子系统
  • Highcharts 官方文档与 API 查询技巧解析
  • android aidl相关学习
  • 【昇腾】单张48G Atlas 300I Duo推理卡MindIE+WebUI方式跑14B大语言模型_20250817