我正在尝试在我们的 HA VPN 网关上设置警报,这样如果任何隧道出现故障,我们就会收到警报。
我可以获得它,以便将其作为单个警报策略应用于项目中的所有网关,但理想情况下,我希望每个网关都配置该策略,因为每个网关可以有不同数量的 VPN 终止,并且我然后可以查看哪些环境受到故障的影响。
在 GCP 控制台中,您可以选择 gateway_name 以应用过滤器 - 这是我需要在 terraform 中实现的。
在我的 terraform 中,我可以很容易地使用
filter = "metric.type=\"vpn.googleapis.com/tunnel_established\" resource.type=\"vpn_gateway\" resource.label.\"project_id\"=\"${local.project}\""
但是,使用 gateway_name 资源尝试相同的操作失败
filter = "metric.type=\"vpn.googleapis.com/tunnel_established\" resource.type=\"vpn_gateway\" AND resource.label.\"gateway_name\"=\"${module.vpn_ha_gateway[0].ha-gateway-prod1-name}\""
Error creating AlertPolicy: googleapi: Error 400: The supplied filter does not specify a valid combination of metric and monitored resource descriptors. The query will not return any time series.
│
│ with module.ha_vpn_prod_alert_policy[0].google_monitoring_alert_policy.alert_policy,
│ on modules/terraform-gcp-alerting-policy/main.tf line 1, in resource "google_monitoring_alert_policy" "alert_policy":
│ 1: resource "google_monitoring_alert_policy" "alert_policy" {
│
如何正确过滤到单个 gateway_name?(请注意,google 控制台中的另一个过滤器选项 gateway_id 不会暴露给 terraform)。
MQL 中的工作查询是
fetch vpn_gateway
| metric 'vpn.googleapis.com/tunnel_established'
| filter (metric.gateway_name == 'tbtst-prod1-ha-vpn-gateway-1')
| group_by 5m, [value_tunnel_established_mean: mean(value.tunnel_established)]
| every 5m
| condition val() < 3 '1'
直接从控制台获取,但是在将其添加到 terraform 之前需要对其进行编辑,这就是我失败的地方。