API, Terraform und MCP

API-Keys für die API, Terraform und MCP und der Terraform-Provider, mit dem du deine Organisation als Code verwaltest.

API-Keys

API-Keys findest du in der Seitenleiste der App unter API-Keys. Ein Key gehört der Organisation und wird nur einmal angezeigt, beim Erstellen. Es gibt zwei Arten von Keys:

  • Management (ue_live_…) – Für die API, Terraform und MCP. Nur Admins der Organisation können Management-Keys erstellen oder löschen
  • Log-Ingest (ue_ingest_…) – Kann nur Logs senden; er gehört in deine Log-Agents (siehe Logs senden)

Terraform-Provider

Mit dem offiziellen Terraform-Provider verwaltest du deine Organisation als Code, mit Terraform oder OpenTofu. Seine Ressourcen sind uptimeeye_monitor, uptimeeye_scheduled_task, uptimeeye_notification_channel, uptimeeye_notification_integration, uptimeeye_variable, uptimeeye_status_page, uptimeeye_status_page_domain und uptimeeye_report_schedule; die Data Sources uptimeeye_locations und uptimeeye_notification_channel lesen bestehende aus. Er ist in der Terraform Registry veröffentlicht und Open Source auf GitHub.

Terraform-Schnellstart

Erstelle unter API-Keys einen Management-Key (ue_live_…, siehe API-Keys) und kopiere dann diese Konfiguration in eine main.tf in einem leeren Verzeichnis. Die Konfiguration definiert einen Benachrichtigungskanal und einen Monitor, der einen HTTP-Endpoint alle 5 Minuten aus Europa (Deutschland) prüft; die Tabelle Regionen listet die IDs aller Regionen.

main.tf
terraform {
  required_providers {
    uptimeeye = {
      source = "uptimeeye/uptimeeye"
    }
  }
}

variable "uptimeeye_api_key" {
  description = "Management API key (ue_live_…) from API Keys in the app"
  type        = string
  sensitive   = true
}

provider "uptimeeye" {
  # or remove this line and the variable block, and set UPTIMEEYE_API_KEY
  api_key = var.uptimeeye_api_key
}

resource "uptimeeye_notification_channel" "oncall" {
  name = "On-Call"
}

resource "uptimeeye_monitor" "api" {
  name                    = "API Healthcheck"
  notification_channel_id = uptimeeye_notification_channel.oncall.id
  locations               = ["eu-central-1"] # Europe (Germany)

  steps = [{
    type = "http"
    request = {
      url    = "https://api.example.com/health"
      method = "GET"
    }
    asserts = [{
      type     = "statusCode"
      operator = "is"
      expected = "2xx"
    }]
  }]

  options = {
    tick_every = 300 # seconds; 5 minutes is the shortest interval on Free
    timeout    = 30  # seconds
  }
}

Übergib den Key als Variable und wende die Konfiguration an:

shell
export TF_VAR_uptimeeye_api_key="ue_live_..."
terraform init
terraform apply

Der Benachrichtigungskanal hat noch keine Empfänger: Füge einen mit uptimeeye_notification_integration oder in der App hinzu.

Bestehendes Setup importieren

Jede Ressource unterstützt terraform import mit ihrer ID (sichtbar in den URLs der App, z. B. mon_…). Verschachtelte Ressourcen nutzen zusammengesetzte IDs wie <channel_id>/<integration_id> für Notification Integrations. Die vollständige Referenz der Ressourcen steht in der Doku der Registry; einen geführten Überblick gibt die Seite zur Terraform-Integration.