我如何以简化的方式编写普罗米修斯复杂警报规则?

How can i write the prometheus complex alerting rule in simplified manner?

我的警报规则的表达式如下所示,我需要用相同的表达式编写多达 20 个警报规则,但是 method_name 和 service_name 因规则而异,因此我的 alert.yaml 文件丑陋任何人都可以指定编写这些类型的警报的简化方式

表达式:

( sum(rate(grpc_server_handling_seconds_bucket{endpoint="http",grpc_method="MethodName",grpc_service="ServiceName",grpc_type="unary",job="JobName",le="1",service="ServiceName"}[15m])) by (job)+sum(rate(grpc_server_handling_seconds_bucket{endpoint="http",grpc_method="MethodName",grpc_service="ServiceName",grpc_type="unary",job="JobName",le="5",service="ServiceName"}[15m])) by (job) ) / 2 /  sum(rate(grpc_server_handling_seconds_count{endpoint="http",grpc_method="MethodName",grpc_service="ServiceName",grpc_type="unary",job="JobNAme",service="ServiceName"}[15m])) by (job) < 0.9

如果你想提醒所有 method_names & service_names 你可以跳过添加这些标签选择器完全

(
  (
    sum by (job) (rate(grpc_server_handling_seconds_bucket{endpoint="http",grpc_type="unary",job="JobName",le="1",service="ServiceName"}[15m])) 
  +
    sum by (job) (rate(grpc_server_handling_seconds_bucket{endpoint="http",grpc_type="unary",job="JobName",le="5",service="ServiceName"}[15m]))
  ) / 2 
/  
 sum by (job)(rate(grpc_server_handling_seconds_count{endpoint="http",grpc_type="unary",job="JobNAme",service="ServiceName"}[15m]))
) < 0.9

否则,您可以使用一些模板工具,如 yttmethod_names[ 的所有不同组合生成所需的规则=25=]