创建业务链路告警

更新时间:
复制 MD 格式

业务链路监控数据源默认集成至可观测监控 Prometheus 版,通过编写PromQL语句可以完成自定义告警配置。本文会基于预置的告警指标提供一套常用的运维应急体系配置,并提供常用告警对应的PromQL语句。

业务链路监控数据源在可观测监控 Prometheus 版中对应的实例名称为metricstore-apm-metrics-custom_<regionId>_default-cms-<userId>-<region>。

创建Prometheus告警规则的操作,请参见创建Prometheus告警规则。

操作示例

以电商下单为例:配置VIP下单的业务链路,并针对VIP客户下单的请求量设置告警,若下单请求超过阈值则进行告警。

配置业务链路的基本信息:业务链路名称填写vip下单,业务链路标识填写vip,入口应用选择arms-custom-extraction-demoextracted-t,入口接口选择/api/v1/biz/order。在特征参数区域,选择同时满足下述规则,添加规则:业务参数规则为用户等级,条件为包含,值选择vip。

告警规则配置

通过自定义PromQL创建Prometheus告警规则。

sum by ()(sum_over_time_lorc(arms_biz_app_requests_count_raw{_biz_code="vip_order",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",pid="awy7aw18hz@dd0231c44bd35bf",rpc=~"/api/v1/biz/order",source="apm",}[1m]))>10

告警名称设置为VIP订单创建告警,Prometheus实例选择对应的metricstore实例,持续时间设置为1分钟,告警等级为默认,告警内容填写VIP订单创建告警,告警通知选择极简模式,通知对象选择钉钉/飞书/企微渠道下的业务链路告警测试群组,通知时段设置为00:00至23:59,单击完成。

查看告警通知

您可以在控制台的告警管理页面查看告警信息。更多信息,请参见查看告警事件历史。

告警发送历史:该页面支持按告警名称、告警状态、告警等级、处理人、通知策略、集成类型及创建时间筛选告警记录。记录表格包含告警等级、告警名称、处理人、通知状态(通知成功/通知失败)、告警对象、告警来源、通知策略、告警时间及告警状态(待确认/已解决)等列,操作列提供认领、解决、屏蔽操作。

在告警事件历史页面,设置筛选条件事件名称为"VIP订单创建告警"、事件对象为"metricstore-api",单击搜索。事件列表展示两条记录:第一条创建时间为 2025-02-25 09:49:30,事件数量 20,状态为未恢复,关联告警为 VIP订单创建告警;第二条创建时间为 2025-02-24 11:44:30,事件数量 48,状态为已恢复。两条记录的对象类型均为 cluster,集成类型为 ARMS-Prometheus监控,通知策略为【默认】VIP订单创建告警_通知策略。

常用PromQL模板

指标名称

指标说明

调用次数

应用入口调用的次数。可以通过标签指定HTTP、Dubbo等,根据该指标分析当前应用调用量的大小,从而判断业务量的大小,以及通过调用量是否偏大或偏小判断业务是否存在异常。

sum by ($dims) (sum_over_time_lorc(arms_biz_app_requests_count_raw{$filters}[1m]))

调用错误率(%)

应用入口调用的错误次数总和/入口的调用次数总和。

sum by ($dims)(sum_over_time_lorc(arms_biz_app_requests_error_count_raw{$filters}[1m])) / sum by ($dims)(sum_over_time_lorc(arms_biz_app_requests_count_raw{$filters}[1m]))

调用响应时间

应用入口调用的响应时间。可以根据该指标判断是否有慢请求出现,从而判断业务是否存在异常。

sum by ($dims) (sum_over_time_lorc(arms_biz_app_requests_seconds_raw{$filters}[1m])) / sum by ($dims) (sum_over_time_lorc(arms_biz_app_requests_count_raw{$filters}[1m]))

异常发生次数

在软件系统运行过程中发生的各种异常的次数,如空指针异常、数组越界异常、IO异常等。可以根据该指标判断调用堆栈是否抛错,从而判断是否存在业务调用异常。

sum by ($dims) (sum_over_time_lorc(arms_biz_exception_requests_count_raw{$filters}[1m]))

数据库调用响应时间

从应用程序发送请求,到数据库返回响应结果的时间。调用数据库响应时间的快慢直接影响应用程序的性能和用户体验。如果响应时间过长,用户可能会感到卡顿或无响应,降低用户满意度。

sum by ($dims) (sum_over_time_lorc(arms_biz_db_requests_seconds_raw{$filters}[1m])) / sum by ($dims) (sum_over_time_lorc(arms_biz_db_requests_count_raw{$filters}[1m]))

上述模板中$dims用于分组,$filters用于过滤。

例如需要对指定业务的所有HTTP接口的错误率进行告警,按照模板对应的PromQL如下:

sum by ()(sum_over_time_lorc(arms_biz_app_requests_error_count_raw{_biz_code="xxxxx",callType="http"}[1m])) / sum by ()(sum_over_time_lorc(arms_biz_app_requests_count_raw{_biz_code="xxxxx",callType="http"}[1m]))

在这个基础上可以再按照实例IP做分组,以便针对不同的实例进行单独告警,修改后的PromQL如下:

sum by (serverIp)(sum_over_time_lorc(arms_biz_app_requests_error_count_raw{_biz_code="xxxxx",callType="http"}[1m])) / sum by (serverIp)(sum_over_time_lorc(arms_biz_app_requests_count_raw{_biz_code="xxxxx",callType="http"}[1m]))

可用Label(维度)-公共

维度

说明

_biz_code

业务标签,标识一条固定的业务链路。

pid

应用PID。

service

应用名称。

serverIp

实例IP。

rpc

接口名称。

callType

访问类型。

  • 提供服务类:HTTP、Dubbo、Hsf、Dsf、User_Method、MQ、Kafka、gRPC、Thrift、Sofa。

  • 依赖服务类:HTTP_Client、Dubbo_Client、Hsf_Client、Dsf_Client、Notify_Client、gRPC_Client、Thrift_Client、Sofa_Client、MQ_Client、Kafka_Client。

  • DB类:MySQL、Oracle、Mariadb、PostgresQL、PPAS、SQLServer、MongoDB、DmDB。

callKind

大类别访问类型。

  • 提供服务类:HTTP、RPC、Custom_Entry、Server、Consumer。

  • 依赖服务类:HTTP_Client、RPC_Client、Client、Producer。

  • DB类:SQL、DB、NoSQL、Cache。

特有Label(维度)arms_biz_exception_requests_count_raw

维度

说明

excepName

异常名称。

特有Label(维度)arms_biz_db_requests_seconds_raw

维度

说明

destId

数据库名称。