MQL 提醒用例

使用基于 Monitoring Query Language (MQL) 的条件的提醒政策 让您可以针对许多可能的用例配置提醒环境。 某些配置只能通过 MQL 查询数。

本文档介绍了几个使用场景和示例查询 使用基于 MQL 的条件部署提醒政策, 生产环境

针对动态阈值发出提醒

您可以使用 MQL 查询来配置提醒政策, 会根据随时间变化的阈值触发提醒, 星期几。提醒不支持此配置 政策条件(不包含 MQL 查询)。

例如: 您有一个 MQL 查询,该查询会在 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 查询以评估阈值 基于指标的变化率进行调节。例如,您想要评估 在您的 Google Cloud 服务中,resource.method每个实例的错误率为 5xx API 请求数,在这种情况下,您的速率相当于每秒请求数。如果费率 每秒 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 查询来评估 通过联接两个指标,然后除以值列得出的比率。 例如,您想查询 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 会发送提醒。在此示例中,您还必须添加 cast_units 函数,用于对齐度量单位。

{
  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 | cast_units('s{CPU}')
}
| every 30s
| ratio
| condition val() > 0.6

您可以在不使用 MQL 的情况下创建基于比率的提醒政策:

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