Gå til innhold
Hurtigstart

Hurtigstart

Vis som Markdown

Denne guiden tar deg fra ingenting til et Status200-prosjekt som administreres av Terraform, på omtrent ti minutter. Du oppretter en API-nøkkel, peker Terraform mot prosjektet ditt og bruker en etikett, en monitor som sjekker nettstedet ditt, og en privat statusside som viser den. Deretter endrer du en av dem og rydder opp.

flowchart TB K["En API-nøkkel<br/>til prosjektet"] --> P["Status200-provideren"] F["main.tf"] --> P P --> L["Etikett:<br/>critical"] P --> M["Monitor: Homepage,<br/>sjekker nettstedet ditt"] P --> S["Statusside:<br/>Internal Status"] M --> S

Det du bygger i denne guiden

Før du begynner

  • Terraform 1.5 eller nyere, eller OpenTofu 1.6 eller nyere. Med OpenTofu kjører du tofu overalt der denne guiden kjører terraform.
  • Et Status200-prosjekt på status200.ru eller på din egen Status200, der du kan opprette API-nøkler.
  • På Status200 Cloud abonnementet Growth eller høyere. Et prosjekts API-nøkler virker bare på det.

Opprett de første ressursene dine

  1. Opprett en API-nøkkel til prosjektet

    Åpne Prosjektinnstillinger → Avansert → API-nøkler i Status200-dashbordet, og klikk på Opprett API-nøkkel. Gi den et Navn, som terraform, og velg Prosjektadministrator under Tilgang: Terraform oppretter, leser, endrer og sletter alle typer poster det administrerer, og Prosjektadministrator kan gjøre alt dette. For en mer begrenset nøkkel velger du Velg tillatelser senere og legger bare til tillatelsene du trenger, på nøkkelens side.

    Nøkkelen utløper om et år. For å velge en annen dato åpner du Flere felt før du oppretter den, eller endrer datoen senere på nøkkelens side. Når nøkkelen er opprettet, åpnes siden dens: kopier API-nøkkel fra kortet API-nøkkeldetaljer.

  2. Gjør nøkkelen tilgjengelig for Terraform

    Legg nøkkelen i miljøvariabelen STATUS200_API_KEY i skallet du kjører Terraform i, slik at den aldri havner i en fil:

    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. Pek Terraform mot Status200

    Lag en tom mappe, og i den en fil med navnet 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"
    }

    På en selv-hostet Status200 leser du Selv-hostet oppsett før du velger en providerversjon.

  4. Beskriv ressursene dine

    Legg disse blokkene til i main.tf. De leser to av monitorstatusene som alle prosjekter starter med, og oppretter en etikett, en monitor som sjekker https://example.com hvert femte minutt (sett inn ditt eget nettsted der), og en privat statusside som viser monitoren:

    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
    }

    Monitorens monitor_steps sier hva den sjekker, og hva hvert resultat betyr: etter hver sjekk setter det første kriteriet som stemmer, statusen dens. Monitortrinn forklarer hver del.

  5. Planlegg og bruk

    Terraform

    Bash
    terraform init
    terraform plan
    terraform apply

    OpenTofu

    Bash
    tofu init
    tofu plan
    tofu apply

    init laster ned provideren. Planen slutter med Plan: 4 to add, 0 to change, 0 to destroy. Skriv yes for å bruke den; når den er ferdig, skriver Terraform ut ID-en til den nye monitoren.

  6. Sjekk dashbordet

    I Status200-dashbordet:

    • Monitorer viser Homepage med etiketten critical. Den første sjekken kommer inn i løpet av noen minutter.
    • Statussider viser Internal Status, som viser Homepage.
    • Prosjektinnstillinger → Grunnleggende → Etiketter viser critical i fargen du angav.

    Kjør terraform plan igjen. Den svarer No changes.: Status200 inneholder nøyaktig det konfigurasjonen sier.

Endre en ressurs

Endre konfigurasjonen, ikke dashbordet. Sett etikettens color til "#2ECC71" i main.tf, og planlegg og bruk deretter:

Bash
terraform plan
terraform apply

Planen slutter med Plan: 0 to add, 1 to change, 0 to destroy.: etiketten endres på stedet. En endring som noen gjør i dashbordet på en ressurs Terraform administrerer, vises i neste plan, og når du bruker den, settes det konfigurasjonen sier, tilbake.

Rydd opp

Hvis dette var en prøvetur, sletter du det konfigurasjonen har opprettet:

Bash
terraform destroy

Det sletter etiketten, monitoren, statussiden og ressursen dens. De to monitorstatusene blir værende: datakildene leser dem bare.

Feilsøking

Meldingen «Missing API Key»

Provideren fant ingen API-nøkkel. Eksporter STATUS200_API_KEY i skallet du kjører Terraform i, eller angi api_key i provider-blokken, og kjør kommandoen på nytt.

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

Nøkkelen er skrevet feil, utløpt eller slettet, eller den hører til en annen Status200 enn den status200_url peker på. Kopier nøkkelen på nytt fra siden dens, eller opprett en ny.

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

På Status200 Cloud virker et prosjekts API-nøkler bare på abonnementet Growth eller høyere. Oppgrader prosjektet under Prosjektinnstillinger → Fakturering og fakturaer → Fakturering, så virker den samme nøkkelen igjen.

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

Nøkkelen har ingen tillatelse for den typen post. Gi den Prosjektadministrator på nøkkelens side, eller tillatelsen meldingen nevner.

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

Prosjektets monitorstatuser har andre navn. Bruk navnene du ser under Overvåkere → Innstillinger → Monitorstatus, eller slå i stedet opp statusen med is_offline_state = true.

Neste steg