MQL 提醒用例

利用基于 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 的情况下创建变化率提醒政策:

  • 如需查看使用 Google Cloud 控制台的示例,请参阅监控变化率
  • 如需查看使用 Cloud Monitoring API 的示例,请参阅变化率政策

针对基于比率的阈值发出提醒

您的提醒政策可以使用 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 的情况下创建基于比率的提醒政策:

  • 如需查看使用 Google Cloud 控制台的示例,请参阅计算比率
  • 如需查看使用 Cloud Monitoring API 的示例,请参阅指标比率