Monitoring and status pages as code
The LIVCK provider for Terraform and OpenTofu. Services, status pages, components, charts, maintenance windows, custom domains and tags in the same repository as your infrastructure. Current version 0.3.0.
A service and its status page
This is an excerpt from our example repository. After the first apply, three monitored services run, grouped on your status page.
terraform {
required_providers {
livck = {
source = "livck/livck" # OpenTofu: "registry.terraform.io/livck/livck"
version = "~> 0.3"
}
}
}
provider "livck" {} # token from LIVCK_API_TOKENresource "livck_service" "website" {
name = "Website"
check_type = "http"
target = "https://www.example.com"
settings = {
interval_seconds = 60
assigned_probes = ["ffm", "hel"]
}
}
resource "livck_statuspage" "main" {
name = "Acme Status"
primary_color = "#0f172a"
show_incident_history = true
subscriber_channels = ["email"]
}
resource "livck_statuspage_component" "website" {
statuspage_id = livck_statuspage.main.id
name = "Website"
service_id = livck_service.website.id
display_order = 10
}Why monitoring as code?
Clicking in the console is quick. Code is traceable, repeatable and can be reviewed before it takes effect.
Review before the change
A new component on the status page or a different interval goes through your team as a pull request. terraform plan shows exactly what will change.
Many customers, one pattern
Agencies and hosting companies set up the same services, status page and components for every customer. One for_each loop instead of a hundred identical clicks.
New service, monitored right away
When a service joins your infrastructure, the same pipeline creates its monitor and its spot on the status page. Nobody has to remember.
What does the provider manage?
This list comes straight from the Terraform Registry. It shows what you can actually install today.
Resources
livck_custom_domain- A custom domain for a status page, including DNS verification.
livck_maintenance- A scheduled maintenance window for one or more services.
livck_service- A monitor with check type, target, interval, locations and conditions.
livck_statuspage- A status page with name, color, logo, subscriber channels and history.
livck_statuspage_component- A component or group on the status page, with or without a service behind it.
livck_statuspage_metric- A chart on the status page, for response times for example.
livck_statuspage_metric_series- One line in a chart. Several lines share one chart.
livck_tag- A tag to organize services and groups.
Data sources
livck_check_types- Every check type with its fields and allowed conditions.
livck_probes- The active monitoring locations with the codes to use in assigned_probes.
livck_statuspage- An existing status page you want to read but not manage.
Four steps to your first apply
- 1
Create an API token
In the console under Settings, API tokens. Give it only the rights your configuration needs. The API is included from the Team plan.
- 2
Add the provider
Source livck/livck in required_providers. The provider reads the token from the LIVCK_API_TOKEN environment variable, so it never lands in your repository.
- 3
init and apply
terraform init downloads the provider, terraform apply creates everything. With OpenTofu the commands are tofu init and tofu apply.
- 4
Bring in what exists
Anything you already set up in the console can be pulled into your state with import. Nothing has to be rebuilt.
import {
to = livck_service.website
id = "V1StGXR8Z5jdHi6BmyTq2"
}From Terraform 1.5 and in OpenTofu, an import block pulls a service you already created in the console into your state on the next apply.
OpenTofu works too
The provider runs on Terraform 1.5 or newer and on OpenTofu, tested with OpenTofu 1.13.2. It is not listed in the OpenTofu registry yet, so use the full address registry.terraform.io/livck/livck as the source. OpenTofu then downloads it straight from the Terraform Registry.
What can the provider not do yet?
Incidents, on-call and alert rules are not managed by the provider yet. Incidents are moments rather than state anyway. Use the API or the MCP server for them.
Terraform provider FAQ
Yes. The provider is not in the OpenTofu registry yet, so set the full address registry.terraform.io/livck/livck as its source. OpenTofu then downloads it straight from the Terraform Registry. It is tested with OpenTofu 1.13.2, where the commands are tofu init and tofu apply.
Team or Business, because the provider talks to the REST API and API access starts with Team. Team costs €49 per month excluding VAT. The provider itself is free and open source under the Mozilla Public License 2.0.
Terraform 1.5 or newer, or OpenTofu. From 1.5 you can also adopt existing objects with an import block. The current provider version is 0.3.0, and the resource list on this page comes straight from the Terraform Registry.
Yes. Anything you created in the console can be brought into your state with terraform import or an import block. The provider then manages the object without recreating it. That way you move an existing organization into code step by step.
From the environment variable LIVCK_API_TOKEN, so the token never ends up in the repository. Create a dedicated token for Terraform in the console and give it only the rights your configuration needs.
Your first apply
Create an account, choose the Team plan, create a token. The example repository goes green in a few minutes.