Saltar al contenido principal

infraestructura como código

Monitoreo de disponibilidad que se declara en Terraform

Aprovisione un monitor de la misma forma en que aprovisiona el servicio que vigila. El proveedor de Uptimepage gestiona monitores, páginas de estado, componentes y canales de notificación en HCL, así que cada servicio nuevo sale con su monitoreo en lugar de con un ticket pendiente.

El monitoreo sale con el servicio

Declare el monitor junto al recurso que vigila, en el mismo repositorio y en el mismo apply. Cada servicio nuevo tiene una comprobación desde el momento en que existe, en lugar de un ticket pendiente que alguien cierra tres sprints después. Y cuando monta una región nueva, reproduce cuarenta monitores con un solo apply en lugar de pasar cuarenta tardes haciendo clic.

Revíselo como cualquier otro cambio

Abra cualquier panel de monitoreo y cuente las comprobaciones que nadie sabe explicar. La del intervalo de 47 segundos: ¿por qué 47? Las dos que siguen apuntando a una máquina de staging que se dio de baja en marzo. La configuración creada a clics se pudre, porque el razonamiento se va con su autor. En un repositorio, cada cambio es un pull request: «¿por qué reducimos el intervalo de la comprobación de pagos?» es una conversación mejor para una revisión que para un postmortem, y git blame recuerda la respuesta cuando el autor ya se ha ido.

Un esquema que rechaza lo absurdo

El bloque check del proveedor está anidado a propósito: usted fija type en "http" y luego rellena un bloque http. Un recurso plano con url, port, host y cert_days todos en el nivel superior le dejaría escribir una comprobación TCP con un comparador de estado HTTP y solo se lo diría al hacer el apply. La forma anidada hace imposible escribir esos estados inválidos. Algo más verboso, y desaparece toda una categoría de errores. El tipo heartbeat es la excepción que conviene conocer: no se le envía nada, así que la URL a la que informa su tarea cron no es un argumento que usted fija, sino un valor que lee de vuelta, a través de la fuente de datos uptimepage_heartbeat.

Una vez en código, manda el código

Hay una contrapartida, y conviene conocerla de antemano: una vez que un monitor está en Terraform, el panel deja de ser la fuente de verdad. Cambie un intervalo a mano y el siguiente plan propondrá revertirlo; ejecute terraform plan -refresh-only para ver la deriva antes de que le sorprenda. Y borrar el bloque del recurso borra el monitor real, sin avisar. Trate una comprobación eliminada con la misma desconfianza que una tabla borrada, porque no lo notará hasta que se rompa lo que dejó de vigilar.

Trate el archivo de estado como un secreto

Si una comprobación necesita autenticación básica, esa contraseña llega al proveedor a través de su configuración, y el estado de Terraform tiene buena memoria: cualquier cosa guardada en él la puede leer quien pueda leer el backend. El proveedor marca la contraseña como sensible, lo que la mantiene fuera de la salida de plan pero no fuera del propio archivo de estado, así que la protección real es un backend de estado cifrado con acceso restringido. Terraform 1.11 añadió los argumentos de solo escritura, valores que nunca se guardan, y son la respuesta correcta a largo plazo para las credenciales de las comprobaciones.

Tokens que hacen una sola cosa

Una ejecución de Terraform no debería llevar una credencial que lo puede todo. Los tokens tienen un alcance limitado a un recurso y una acción, están vinculados a una organización y tienen una caducidad obligatoria, así que el token de su pipeline puede crear monitores sin poder también eliminar su organización.

Declare un monitor en Terraform

terraform {
  required_providers {
    uptimepage = {
      source = "uptimepage/uptimepage"
    }
  }
}

resource "uptimepage_target" "api" {
  name     = "api prod"
  interval = 60

  check = {
    type = "http"
    http = {
      url = "https://example.com/healthz"
      expected_status = {
        kind  = "exact"
        exact = 200
      }
    }
  }
}

Preguntas frecuentes

¿Qué proveedor uso?
El proveedor oficial, con source uptimepage/uptimepage en el Terraform Registry. Gestiona monitores, páginas de estado, componentes y canales de notificación.
¿Qué puedo declarar en Terraform?
Monitores con comprobaciones HTTP, TCP, DNS, TLS, de dominio, ping, heartbeat o de flujo, monitores manuales, páginas de estado públicas con sus componentes y canales de notificación: lo mismo que cambia en el panel.
¿Necesito el servicio alojado?
No. Empiece gratis en el plan alojado sin tarjeta, o autoalójelo bajo AGPL y apunte el proveedor a su propia instancia.
¿Cómo se autentica el proveedor?
Con un token de API de alcance limitado: permisos por recurso y acción vinculados a una organización, con una caducidad obligatoria. Emita para Terraform un token con permiso de escritura en lugar de una clave de todo o nada.

De un vistazo

  • Proveedor de Terraform uptimepage/uptimepage
  • Recursos monitores, páginas, componentes, canales
  • Tipos de comprobación HTTP, TCP, ping, heartbeat, DNS, TLS, dominio, flow, manual
  • Intervalo de comprobación desde 60 s, mínimos más altos en las comprobaciones de caducidad
  • Autenticación tokens de API con alcance y caducidad
  • Precio para empezar gratis, sin tarjeta

Enlaces

Empiece en menos de 5 minutos.

Empezar gratis

funciones · precios · notas