0

我正在尝试在我们的 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 之前需要对其进行编辑,这就是我失败的地方。

4

1 回答 1

1

好吧,我终于想通了。问题是我需要metric.label。而不仅仅是公制。

filter = "metric.type=\"vpn.googleapis.com/tunnel_established\" resource.type=\"vpn_gateway\" metric.label.\"gateway_name\"=\"${module.vpn_ha_gateway[0].ha-gateway-prod2-name}\""

于 2022-01-07T16:20:58.513 回答