利用基于 Monitoring Query Language (MQL) 的条件的提醒政策,您可以为许多可能的使用场景配置提醒环境。某些配置只能通过使用 MQL 查询来实现。
本文档介绍了在生产环境中部署采用基于 MQL 的条件的提醒政策的几个用例和示例查询。
针对动态阈值发出提醒
您可以使用 MQL 查询来配置提醒政策,根据随时间变化的阈值(例如一周中的某几天)触发提醒。在没有 MQL 查询的提醒政策条件中,不支持此配置。
例如,您的 MQL 查询会在 Compute Engine 实例的 CPU 利用率超过 95% 时发送提醒:
fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization | align | every 30s | condition utilization > 95'%'
但是,考虑到支持团队的响应时间较长,您希望设置一个较低的利用率阈值(例如,周末的利用率阈值为 85%)。 在这种情况下,您可以为查询配置一个包含提醒阈值的值列:
fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization | align | every 30s | value add [day_of_week: end().timestamp_to_string('%w').string_to_int64] | value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] | value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] | condition utilization > scale(max_allowed_utilization)
value 操作执行以下操作:
value add [day_of_week: end().timestamp_to_string('%w').string_to_int64]
会添加一个值列,其值为 0 到 6 之间的数字,其中0
表示星期日,6
表示星期六。value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6]
会将您的日期替换为布尔值,指示数据点是周末还是工作日。value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')]
将布尔值替换为因is_weekend
的值而异的阈值。
条件 condition utilization > scale(max_allowed_utilization)
会比较两个值列。
如需查看提醒政策和基于 MQL 的条件(根据动态条件配置突发事件严重级别),请参阅使用 MQL 创建动态严重级别。
基于变化率的阈值触发提醒
您可以配置提醒政策 MQL 查询,以根据指标的变化率评估阈值。例如,您要评估 API 请求中 resource.method
每个实例的 5xx
错误率,在这种情况下,您的错误率相当于每秒请求数。如果速率大于每秒 5 个错误响应,则 Cloud Monitoring 会发送一条提醒:
fetch consumed_api | metric 'serviceruntime.googleapis.com/api/request_count' | filter (metric.response_code_class == '5xx') | align rate(10m) | every 30s | group_by [resource.method], [value_request_count_mean: mean(value.request_count)] | condition val() > 0.05'1/s'
您可以在不使用 MQL 的情况下创建变化率提醒政策:
针对基于比率的阈值发出提醒
您的提醒政策可以使用 MQL 查询来评估通过联接两个指标,然后除以值列得出的比率。例如,您希望查询每个 Compute Engine 实例的 read
字节与 write
字节的比率。如果该比率大于 3/5
或 60%,则 Cloud Monitoring 会发送提醒:
{ fetch gce_instance :: compute.googleapis.com/instance/disk/read_bytes_count; fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count } | every 30s | join | value val(0) / val(1) | condition val() > 0.6
您还可以查询聚合值的比率。例如,您可以计算 Compute Engine 实例中每个核心的平均 CPU 使用时间。如果该比率大于 3/5
或 60%,则 Cloud Monitoring 会发送提醒:
{ fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time | group_by [], .sum; fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores | group_by [], .sum } | every 30s | ratio | condition val() > 0.6
您可以在不使用 MQL 的情况下创建基于比率的提醒政策: