异常检测之多指标关联分析及告警通知

在当今复杂多变的IT运维环境中,高效识别并解决系统异常是保障业务连续性的关键。单一指标的异常检测容易出现误报率高、告警数量大、告警可信度低的问题。我们可以不再局限于单一指标的监控,而是进入了多指标关联分析的新阶段。本文将围绕应用性能监控指标进行关联分析,结合DATABUFF先进的可观测性平台的实践案例,阐述如何通过多指标异常检测有效发现应用服务实际存在的问题。 

一、多指标关联分析

关联分析原理

多指标协同监控:服务应用性能指标(如:Apdex、平均耗时、请求数、成功数、错误数、错误率、CPU使用率、内存使用率等)构成了衡量一个或者多个服务是否健康的依据。通过多指标的关联分析,可以揭示指标间的隐性联系。

拓扑结构关联:考虑某个服务所在应用系统架构的逻辑或物理拓扑,如服务间的依赖关系、资源分配等,有助于识别异常传播路径,从而更快定位问题源头。 

DATABUFF中的实践 

DATABUFF作为一个强大的可观测性平台,通过以下几点实践,将多指标关联分析的优势发挥得淋漓尽致:

一体化监控面板:DATABUFF提供了统一的监控视图,将APM各项关键指标整合在一个界面中,便于运维人员全局审视,快速捕捉指标间的异常关联。

动态基线与阈值管理:利用历史数据建立动态基线,自动调整阈值,使得异常检测更加智能化,在减少误报的同时,准确识别出真正的性能异常。

告警收敛与智能关联:通过告警收敛机制,减少告警风暴,同时,智能关联分析将多个相关联的告警归并,直接指向问题核心,缩短故障排查周期。

指标关联排查:首先观察到Heap Used持续接近Heap Max,伴随频繁的Full GC活动及较高的GC Pause Time,初步判断内存管理存在问题。

线程分析:进一步检查线程信息,发现高并发场景下线程数量激增,与某些长时间阻塞的线程共存,提示可能存在内存泄漏导致线程创建过多。

动态基线触发告警:基于历史数据分析,DATABUFF动态基线检测到老年代使用率异常增长,及时发出预警,引导运维人员聚焦问题区域。 

智能关联与告警收敛:DATABUFF自动关联相关告警,合并为一个综合告警,指出内存溢出风险,并通过调用链路追踪,精确定位到引起内存泄漏的特定服务调用。

问题解决与优化:根据DATABUFF提供的详细分析报告,迅速修复内存泄漏代码,调整JVM参数优化内存分配,最终恢复系统正常运行。 

二、常用应用服务指标

service.apdex:衡量服务性能的关键指标

apdex =((服务调用次数 - 慢调用次数 -非常慢的调用次数) +(慢调用次数/2))/服务调用次数

 Apdex,即应用性能指数,是标准化的性能指标,量化用户对应用效率的满意度。在APM工具如Skywalking中,Service Apdex特指依据服务请求响应时间计算得出的服务评分,简洁明了地呈现服务性能表现。

service.avgDuration: 服务平均耗时

服务响应时间均值,在指定时间段内,代表从接收至完全处理并回应客户端请求的平均耗时。此值全面覆盖了处理周期,涉及网络传输、服务器运算、数据库访问等各环节,综合反映服务效率。

service.cnt: 每分钟服务请求次数

一分钟请求数,即1分钟内累计的请求总量,揭示了服务即时的活动水平和承载能力。监测该指标有助于洞察服务流量动态,识别峰值与低谷,确保运营未超出设计处理界限,维持服务健康状态。

service.error.pct: 服务错误率

服务错误率定义为在一定时间内,失败请求占总请求量的比例,反映因各种原因(如逻辑错误、资源短缺、超时或权限问题)导致未成功执行的请求情况。这一比率是评估系统可靠性和用户满意度的核心指标。高错误率指示潜在重大问题,可能损害业务运作和客户体验。有效监控并及时响应,如通过代码优化、资源扩容或参数调优,可显著减少错误,维护服务质量。

service.cpu.usage_pct: CPU使用率

CPU使用率,作为系统性能关键指标,量化服务运行期间对CPU资源的占用水平。其值直接影响系统反应速度与稳定性,核心反映服务CPU依赖度与活动强度,是评估CPU资源消耗的重要参照。

service.mem.usage_pct: 服务内存使用率

内存使用率,即服务运行内存占总内存的比例,为评判内存利用效率与需求的核心指标。过高使用率触发OOM风险,损害服务稳定与响应性能。定期监控与优化,例如调整堆配置、精进数据结构及缓存策略,对避免效能瓶颈、增强服务在资源约束条件下的表现力至关重要。

service.tcp.retransmit: 服务TCP重传次数

TCP重传次数指标具体反映了服务在某段时间内,因数据包未获确认而必须重发的频次。较高的重传次数可能揭示网络拥堵、链路劣质、接收方处理滞后或网络硬件故障等状况,这些均是服务性能和稳定性的潜在威胁。持续监控并分析此指标有助于及时诊断与解决网络问题,保持服务的高效运行。

三、典型的服务异常检测场景

背景描述

一家大型金融机构近期收到来自其在线交易平台大量用户的反馈,称在进行关键交易操作时,时常出现页面加载与交易确认过程显著变慢的情况,严重影响了交易效率与用户信任。每当出现这种情况,运维人员总是不能及时发现和定位问题。

该机构运维部门随即依托Databuff平台,深入分析多项核心性能指标,希望当问题发生时能够及时发现,并通知到负责人,在第一时间修复。

第一步 初步分析

服务维度异常往往伴随着服务性能指数下降,响应时间过高/超时,CPU使用率/内存使用率居高不下,错误率上升等。

下面将通过Databuff平台进行异常监测,从而定位哪些服务存在问题。选取服务平均响应时间,服务错误率,服务cpu使用率,服务内存使用率,服务性能指标。这5个指标作为检测对象。

第二步 创建多指标异常检测

本次异常检测基于服务和服务实例,选择检测的指标组合包括:

同时满足以上条件时,生成一个重要事件;满足任一条件时,生成次要事件。任一指标连续5分钟无数据上报时生成无数据事件。

第三步 创建服务实例收敛策略

当运维人员不需要关心每个异常事件时,可通过Databuff告警收敛规则,将固定窗口期内的事件收敛到一个告警中,这样可以减少告警噪音,避免告警风暴。

当有异常事件产生,每5分钟生成一个告警,默认不筛选事件,要求在5分钟的时间窗口内,将相同服务和相同服务实例的事件收敛到一个告警中。(该告警窗口的开启时间为第一个满足条件的事件开始计时,若事件每分钟都会产生,那么在窗口期结束之后,这些满足条件的事件都会被收敛到一个告警中)

告警描述:【检测服务平均响应时间是否高于800ms】,【检测服务平均错误率是否高于0.01%】,订单系统,下单服务,192.168.2.101 产生告警,请及时关注。

第四步 查看告警详情

告警描述:

【示例】服务实例多指标异常检测, 【服务实例响应时间】服务实例响应时间超过正常水平, 【响应时间】错误率动态基线] , [数据库服务] , [web应有服务] , [192.168.24.14] 产生告警,请及时关注。

事件描述:

【服务实例:192.168.24.14,服务名称:web应有服务】的指标service.avgDuration当前实际值641.48ms>动态基线检测620.21ms, 指标service.error.pct当前实际值0.69%>阈值检测, 指标service.apdex当前实际值0.50<阈值检测1.00

第五步 通知相关负责人

部署配置-配置管理-告警配置-响应策略 中新建 【示例】交易系统通知策略 

可以筛选满足条件的告警,通过邮件,短信,钉钉,企业微信,webhook等方式通知到相关负责人。

四、结论

上文展示了如何在复杂的IT运维环境中,通过Databuff平台中应用服务性能的多个指标、多条件、多种检测算法,可以有效地监控应用服务、服务实例是否健康,便于运维人员及时发现问题,辅助分析定位问题源头。

Databuff提供了一套内置的服务监控策略,运维人员可以根据行业经验,在内置策略的基础上修改,以适应环境需要。通过同窗口期/同源汇聚策略,将相同类型的异常事件收敛到同一个告警中,避免告警风暴的发生。

后续的文章中,我们将会讲解如何通过告警信息进行进一步的故障根因定位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值