es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Terraform GCP – Política de Alerta de VPN de alta disponibilidad

Estoy tratando de configurar la generación de alertas en nuestras puertas de enlace de red privada virtual (VPN) de alta disponibilidad (HA), de modo que si alguna de las conexiones está caída, se genere una alerta.

Puedo lograr que se aplique una única política de alerta para todas las puertas de enlace dentro de un proyecto, sin embargo, idealmente quiero que la política esté configurada por puerta de enlace, ya que cada una puede tener un número diferente de conexiones VPN terminando en ella, y así puedo conocer qué entornos se ven afectados por su falla.

Dentro de la consola del GCP, puedes seleccionar el nombre_de_la_puerta_de_enlace para aplicar el filtro; esto es lo que necesito lograr en Terraform.

En mi código de Terraform, puedo establecer fácilmente un filtro en el proyecto utilizando:

filter = "metric.type=\"vpn.googleapis.com/tunnel_established\" resource.type=\"vpn_gateway\" resource.label.\"project_id\"=\"${local.project}\""

Sin embargo, intentar hacer lo mismo utilizando el nombre_de_la_puerta_de_enlace como recurso falla:

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 al crear la política de alerta: googleapi: Error 400: El filtro proporcionado no especifica una combinación válida de descriptores de métricas y recursos supervisados. La consulta no devolverá ninguna serie temporal.
│ 
│   with module.ha_vpn_prod_alert_policy[0].google_monitoring_alert_policy.alert_policy,
│   en modules/terraform-gcp-alerting-policy/main.tf línea 1, en recurso "google_monitoring_alert_policy" "alert_policy":
│    1: recurso "google_monitoring_alert_policy" "alert_policy" {
│ 

¿Cómo puedo filtrar correctamente por el nombre_de_la_puerta_de_enlace? (Ten en cuenta que el id_de_la_puerta_de_enlace, que es la otra opción de filtrado en la consola de Google, no se expone en Terraform).

La consulta funcional en MQL es:

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'

Como se muestra directamente en la consola, sin embargo, esto necesita ser modificado antes de agregarlo a Terraform y es ahí donde estoy enfrentando problemas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para filtrar correctamente a un solo gateway_name en terraform, debes utilizar el siguiente filtro:

    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}\""
    

    Asegúrate de utilizar la etiqueta gateway_name correcta para tu configuración específica. Además, es posible que desees verificar que tus otras métricas y etiquetas coincidan con los valores que estás utilizando en tu script de terraform.

Comments are closed.