Ir al contenido
Inicio rápido

Inicio rápido

Ver como Markdown

Esta guía le lleva de cero a un proyecto de Status200 gestionado por Terraform en unos diez minutos. Crea una clave de API, dirige Terraform a su proyecto y aplica una etiqueta, un monitor que comprueba su sitio web y una página de estado privada que lo muestra. Después cambia uno de ellos y lo limpia todo.

flowchart TB K["Una clave de API<br/>del proyecto"] --> P["El proveedor de Status200"] F["main.tf"] --> P P --> L["Etiqueta:<br/>critical"] P --> M["Monitor: Homepage,<br/>comprueba su sitio web"] P --> S["Página de estado:<br/>Internal Status"] M --> S

Lo que construye en esta guía

Antes de empezar

  • Terraform 1.5 o posterior, u OpenTofu 1.6 o posterior. Con OpenTofu, ejecute tofu dondequiera que esta guía ejecuta terraform.
  • Un proyecto de Status200 en status200.ru o en su propia instancia de Status200, en el que pueda crear claves de API.
  • En Status200 Cloud, el plan Growth o superior. Las claves de API de un proyecto solo funcionan con él.

Crear sus primeros recursos

  1. Crear una clave de API del proyecto

    En el panel de Status200, abra Ajustes del proyecto → Avanzado → Claves de API y haga clic en Crear Clave de API. Dele un Nombre, como terraform, y en Acceso elija Administrador del proyecto: Terraform crea, lee, cambia y elimina cada tipo de registro que gestiona, y Administrador del proyecto puede hacer todo eso. Para una clave más limitada, elija Elegir los permisos más tarde y añada en la página de la clave solo los permisos que necesite.

    La clave caduca dentro de un año. Para elegir otra fecha, abra Más campos antes de crearla, o cambie la fecha más tarde en la página de la clave. Una vez creada la clave, se abre su página: copie la Clave de API de la tarjeta Detalles de la clave de API.

  2. Poner la clave a disposición de Terraform

    Ponga la clave en la variable de entorno STATUS200_API_KEY de la shell en la que ejecuta Terraform, para que nunca acabe en un archivo:

    Linux

    Bash
    export STATUS200_API_KEY="<your-api-key>"

    macOS

    Bash
    export STATUS200_API_KEY="<your-api-key>"

    Windows

    PowerShell
    $env:STATUS200_API_KEY = "<your-api-key>"
  3. Dirigir Terraform a Status200

    Cree una carpeta vacía y, dentro, un archivo llamado main.tf:

    main.tfHCL
    terraform {
      required_providers {
        oneuptime = {
          source  = "oneuptime/status200"
          version = "~> 14.0"
        }
      }
    }
    
    provider "oneuptime" {
      # The API key comes from STATUS200_API_KEY.
      # On a self-hosted Status200, add your Status200's address:
      # status200_url = "https://status200.example.com"
    }

    En una instancia de Status200 autoalojada, lea la Configuración autoalojada antes de elegir una versión del proveedor.

  4. Describir sus recursos

    Añada estos bloques a main.tf. Leen dos de los estados de monitor con los que empieza cada proyecto y crean una etiqueta, un monitor que comprueba https://example.com cada cinco minutos (ponga ahí su propio sitio web) y una página de estado privada que muestra el monitor:

    main.tfHCL
    data "status200_monitor_status" "operational" {
      name = "Operational"
    }
    
    data "status200_monitor_status" "offline" {
      name = "Offline"
    }
    
    resource "status200_label" "critical" {
      name        = "critical"
      description = "Resources that page on-call when down"
      color       = "#FF5733"
    }
    
    resource "status200_monitor" "homepage" {
      name                = "Homepage"
      description         = "Checks that the homepage responds"
      monitor_type        = "Website"
      monitoring_interval = "*/5 * * * *"
      labels              = [status200_label.critical.id]
    
      monitor_steps = [{
        monitor_destination      = "https://example.com"
        monitor_destination_type = "URL"
        request_type             = "GET"
    
        criteria = [
          {
            name                  = "Offline"
            description           = "The homepage does not respond"
            filter_condition      = "Any"
            change_monitor_status = true
            monitor_status_id     = data.status200_monitor_status.offline.id
    
            filters = [
              {
                check_on    = "Is Online"
                filter_type = "False"
              }
            ]
          },
          {
            name                  = "Online"
            description           = "The homepage responds"
            filter_condition      = "All"
            change_monitor_status = true
            monitor_status_id     = data.status200_monitor_status.operational.id
    
            filters = [
              {
                check_on    = "Is Online"
                filter_type = "True"
              }
            ]
          }
        ]
      }]
    }
    
    resource "status200_status_page" "internal" {
      name                  = "Internal Status"
      description           = "Status of our internal services"
      page_title            = "Service Status"
      is_public_status_page = false
    }
    
    resource "status200_status_page_resource" "homepage" {
      status_page_id = status200_status_page.internal.id
      monitor_id     = status200_monitor.homepage.id
      display_name   = "Homepage"
    }
    
    output "monitor_id" {
      value = status200_monitor.homepage.id
    }

    Los monitor_steps del monitor dicen qué comprueba y qué significa cada resultado: tras cada comprobación, el primer criterio que coincide fija su estado. Pasos del monitor explica cada parte.

  5. Planificar y aplicar

    Terraform

    Bash
    terraform init
    terraform plan
    terraform apply

    OpenTofu

    Bash
    tofu init
    tofu plan
    tofu apply

    init descarga el proveedor. El plan termina con Plan: 4 to add, 0 to change, 0 to destroy. Escriba yes para aplicarlo; cuando termina, Terraform muestra el ID del nuevo monitor.

  6. Comprobar el panel

    En el panel de Status200:

    • Monitores lista Homepage, con la etiqueta critical. Su primera comprobación llega en pocos minutos.
    • Páginas de estado lista Internal Status, que muestra Homepage.
    • Ajustes del proyecto → Básico → Etiquetas lista critical, en el color que indicó.

    Ejecute terraform plan otra vez. Responde No changes.: Status200 tiene exactamente lo que dice la configuración.

Cambiar un recurso

Cambie la configuración, no el panel. Ponga el color de la etiqueta a "#2ECC71" en main.tf y luego planifique y aplique:

Bash
terraform plan
terraform apply

El plan termina con Plan: 0 to add, 1 to change, 0 to destroy.: la etiqueta se cambia en el sitio. Un cambio que alguien haga en el panel a un recurso que gestiona Terraform aparece en el siguiente plan, y aplicarlo restablece lo que dice la configuración.

Limpiar

Si era una prueba, elimine lo que creó la configuración:

Bash
terraform destroy

Esto elimina la etiqueta, el monitor, la página de estado y su recurso. Los dos estados de monitor se quedan: las fuentes de datos solo los leen.

Solución de problemas

Mensaje «Missing API Key»

El proveedor no encontró ninguna clave de API. Exporte STATUS200_API_KEY en la shell en la que ejecuta Terraform, o indique api_key en el bloque del proveedor, y vuelva a ejecutar el comando.

Mensaje «the Status200 API returned status 400: Invalid API Key»

La clave está mal escrita, caducada o eliminada, o pertenece a otra instancia de Status200 distinta de la que indica status200_url. Copie de nuevo la clave desde su página, o cree una nueva.

Mensaje «the Status200 API returned status 402: API keys need the Growth plan»

En Status200 Cloud, las claves de API de un proyecto solo funcionan con el plan Growth o superior. Mejore el plan del proyecto en Ajustes del proyecto → Facturación y facturas → Facturación, y la misma clave vuelve a funcionar.

Mensaje «the Status200 API returned status 422: You do not have permissions to create Monitor»

La clave no tiene permiso para ese tipo de registro. En la página de la clave, dele Administrador del proyecto, o el permiso que nombra el mensaje.

Mensaje «No monitor status matches {name = "Offline"}»

Los estados de monitor de su proyecto tienen otros nombres. Use los nombres que ve en Monitores → Ajustes → Estado del monitor, o busque el estado por is_offline_state = true.

Próximos pasos