我正在尝试获取 datadog_monitor 资源,并且想知道是否有人知道为什么触发警报的阈值数量在查询和 Monitor_thresholds 部分中重复?
例如:
resource "datadog_monitor" "p90_latency" {
name = "Latency is high on the airgap telemetry backend in ${var.stage}"
type = "query alert"
query = "avg(last_1h):avg:aws.apigateway.latency.p90{apiname:${var.stage}-airgap-telemetry-backend} > 5000"
message = <<EOF
The p90 latency on the airgap telemetry backend is {{value}} @slack-${var.monitor_slack_channel}
EOF
monitor_thresholds {
critical = 5000
warning = 2000
}
}
在我看来,查询应该只是
query = "avg(last_1h):avg:aws.apigateway.latency.p90{apiname:${var.stage}-airgap-telemetry-backend}
返回一个具体值,然后依靠 Monitor_thresholds 来触发它(因为查询按原样肯定只是返回一个布尔值是/否?)
相关地,警告阈值如何发挥作用? datadog 是否神奇地将阈值“替换”到查询中?如果它被神奇地替换了,那么查询中的值实际是什么有关系吗(即我们可以有一个占位符 0,还是它必须与临界值匹配?)
query
字段可以使用任何值(您可以使用0
或任何其他值,但使用临界阈值更常见)。
更多详情:
Terraform 在内部使用此 Datadog API (metric-alert-query) 来创建监视器。请注意,API 输入同时具有
operator
和 #
字段。 Terraform 解析(不是“神奇地”)query
中的字符串,并进行 API 调用,其中同时包含 operator
(此处为 >
)和 #
(此处为 5000
)。此处,query
字段使用
>
运算符。这表示,如果指标值(如 query
字段中定义,即 avg(last_1h):...-telemetry-backend}
)超过任何
monitor_thresholds
值(critical
或 warning
,此处为分别为 5000
或 2000
)。注意谁来自 AWS CloudWatch 警报概念Datadog 监视器在
monitor_thresholds
中不使用显式运算符。相反,阈值运算符 (
>
、<
、=
、!=
、>=
、<=
) 是根据 query
字段确定的。另外,在 AWS CloudWatch 警报中,您需要创建两个警报(一个具有临界阈值,另一个具有警告阈值)。其他参考资料
警报阈值 (n) 与查询中使用的阈值 (n2) 不匹配。