Uptime monitoring as code with Terraform
Keep monitors next to the infrastructure they watch. The official CuliPulse provider for Terraform and OpenTofu creates HTTP and heartbeat monitors, webhook channels and alert routing from code — reviewed in pull requests like everything else.
The problem
- Monitors clicked together by hand drift away from what's actually deployed.
- A new service should get its monitor in the same pull request.
- When a service is removed, its monitor should go with it.
How it works
1. Add the provider
Install culipulse/culipulse from the Terraform Registry or the OpenTofu registry.
2. Describe your monitors
Declare HTTP and heartbeat monitors, webhook channels and routing next to the service they belong to.
3. Plan and apply
Review the change in a pull request, then apply it like any other infrastructure.
monitoring.tfHCL
terraform { required_providers { culipulse = { source = "culipulse/culipulse", version = "~> 0.1" } }}data "culipulse_agents" "singapore" { kind = "first_party" region = "sg"}resource "culipulse_http_monitor" "api" { name = "API health" url = "https://api.example.com/health" interval_seconds = 300 agent_ids = data.culipulse_agents.singapore.ids expected_status = "200" secret_headers = { "X-Api-Key" = var.health_check_key } assertions = [ { source = "json_body", op = "equals", path = "$.status", value = "ok" }, ]}