トンネルのいずれかがダウンした場合にアラートが発生するように、HA VPN ゲートウェイでアラートを設定しようとしています。
プロジェクト内のすべてのゲートウェイに対して単一のアラート ポリシーとして適用されるように取得できますが、ゲートウェイごとに異なる数の VPN を終端することができるため、理想的にはポリシーをゲートウェイごとに構成する必要があります。その後、障害によって影響を受ける環境を確認できます。
GCP コンソール内で、gateway_name を選択してフィルターを適用できます。これは、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 は、テラフォームに公開されていないことに注意してください)。
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'
コンソールから直接取得したものですが、これはテラフォームに追加する前に編集する必要があり、これが私が失敗している場所です。