使用基于 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 的情况下创建变化率提醒政策:
针对基于比率的阈值发出提醒
您的提醒政策可以使用 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 的情况下创建基于比率的提醒政策: