Deploy the monitoring stack template with OpenTofu
Deployment · Updated Jun 2026
Coming from another cloud?
▸AWS·Cloudwatch
This Quake AI feature maps to AWS’s Cloudwatch.
▸DigitalOcean·Monitoring
This Quake AI feature maps to DigitalOcean’s Monitoring.
▸Google Cloud·Cloud Monitoring
This Quake AI feature maps to Google Cloud’s Cloud Monitoring.
Deploy the monitoring stack template with OpenTofu
Stand up Prometheus and Grafana on a private subnet using the validated OpenTofu templatemonitoring-stack. Prometheus stays on the private CIDR; Grafana gets one floating IP with a pre-provisioned Prometheus data source.
Monthly total for the required template above. Use the configurator below to add optional pieces and see the total update.
What each resource is for
Prometheus
m2a.large · 2 dedicated vCPU, 8 GiB RAM, 0.5 Gbps
$66.00/mo
Grafana
m2a.large · 2 dedicated vCPU, 8 GiB RAM, 0.5 Gbps
$66.00/mo
Compute shown per role at custom-package rates ($29/dedicated vCPU, $7.25/shared vCPU, $1/GiB RAM). The headline above is the billed total: the cheaper of a named plan and the custom package, plus add-ons.
Private networks, subnets, Neutron routers, and security groups are included with the plan.
VPC objects are usually free to create elsewhere, but NAT gateways bill hourly plus per-GB processed. Quake AI uses router SNAT with no separate NAT line item.
$0.00
Control-plane API requests
OpenStack API calls for provisioning and management are included.
Some managed services on other clouds meter API calls or charge for premium control-plane features.
$0.00
Dev/test vs production
Start on shared CPU for dev/test, then promote to dedicated for production with a flavor resize. The network, storage, and template stay the same.
Dev/test on shared CPU
Burstable s1a flavors; suited to prototyping and low or bursty load.
$40.80/mo
Production on dedicated CPU
The headline estimate above; predictable steady-load performance.
$139.80/mo
Saves $99.00/mo while you build on shared CPU.
Shared flavors carry less RAM (m2a.large (8 GiB RAM) -> s1a.small (2 GiB RAM); m2a.large (8 GiB RAM) -> s1a.small (2 GiB RAM)). A resize reboots the instance; data on attached volumes persists. Size the dedicated flavor for the RAM your production workload needs.
Pricing data last validated: . For current rates, check quake.ai/pricing.
Click to zoom
Monitoring stack topology: private subnet, Prometheus and Grafana instances with data volumes, one floating IP on Grafana
Enough project quota for two m2a.large instances (defaults), two 20 GB boot volumes, a 100 GB Prometheus data volume, a 20 GB Grafana data volume, one router, one private network, and one floating IP
Type yes when prompted. Provisioning takes several minutes while cloud-init installs Prometheus and Grafana on each instance.
When the run finishes, note grafana_url and prometheus_private_ip from the outputs.
Step 3: Sign in to Grafana and confirm Prometheus#
SSH to Grafana through its floating IP and wait for cloud-init:
bash
GRAFANA_HOST=$(tofu output -raw grafana_url | sed 's|http://||;s|:3000||')ssh -i ~/.ssh/YOUR_KEY -o StrictHostKeyChecking=accept-new ubuntu@"${GRAFANA_HOST}" 'cloud-init status --wait'
Open grafana_url in your browser. Sign in with username admin and the grafana_admin_password value from terraform.tfvars.
Grafana ships with a provisioned Prometheus data source pointing at http://<prometheus_private_ip>:9090. Go to Connections > Data sources > Prometheus and select Save & test.
Run tofu destroy from the project directory when finished. Type yes to confirm. Verify in the Console that both instances and the floating IP are gone.