Monitoring Setup
Stand up Prometheus + Grafana dashboards for your Avalanche nodes via Terraform, Kubernetes, or Docker.
Choose Your Deployment Method
AvalancheGo exposes Prometheus metrics out of the box — uptime, queries, per-chain block height, TPS and resource usage. Terraform and Kubernetes deploy the monitoring stack through the avalanche-deploy repo alongside your nodes; Docker generates a standalone Docker Compose setup you can point at any node endpoint.
Avalanche Deploy Stack
This path adds a dedicated monitoring server — Prometheus, Grafana and pre-built dashboards — to the cloud infrastructure provisioned by avalanche-deploy (Terraform + Ansible on AWS, GCP, or Azure). It requires an L1 stack deployed by that repo.
Don't have one yet? Follow the Avalanche Deploy L1 guide first, then come back here to add monitoring.
Open Your Deployment Checkout
Run the playbook from the same avalanche-deploy checkout that deployed your stack —
terraform applywrites the Ansible inventory (ansible/inventory/<cloud>_hosts) into that working tree, and the Terraform state lives there too.cd avalanche-deployDeploy the Monitoring Stack
Select the cloud provider your stack runs on:
make monitoringThis installs
node_exporteron every node and stands up Prometheus (port 9090) and Grafana (port 3000) on the dedicated monitoring host, pre-configured to scrape AvalancheGo metrics and system metrics from all of them.Access Grafana
terraform -chdir=terraform/l1/aws output -raw grafana_urlLog in as
admin. The password is auto-generated on first deploy and stored on the monitoring host:ssh ubuntu@$(terraform -chdir=terraform/l1/aws output -raw monitoring_ip) sudo cat /etc/grafana/.admin_passwordPre-Built Dashboards
Dashboard Metrics Avalanche L1 Block height, transaction throughput, validator status L1 EVM Gas usage, contract calls, pending transactions P-Chain Staking metrics, validator set changes System Health CPU, memory, disk and network for every node More operational commands — logs, health checks, upgrades — are covered in the Avalanche Deploy operations guide.
Prerequisites
A Kubernetes cluster with
kubectlconnected andhelmv3 installed, running the avalanche-deploy L1 or Primary Network charts — Prometheus discovers the AvalancheGo pods by label and scrapes/ext/metricson port 9650 in-cluster.Not running your nodes on Kubernetes yet? Follow the Avalanche Deploy Kubernetes guide first.
Clone Avalanche Deploy
The monitoring Helm chart lives in the avalanche-deploy repo. Clone it and fetch the chart's Prometheus and Grafana subcharts:
git clone https://github.com/ava-labs/avalanche-deploy && cd avalanche-deployhelm dependency build kubernetes/helm/monitoringInstall the Monitoring Chart
Deploy Prometheus and Grafana into the cluster:
make k8s-monitoringThis runs
helm upgrade --install monitoring ./helm/monitoringand ships the Avalanche L1 and Primary Network dashboards. Note this path only scrapes AvalancheGo pod metrics — there is nonode_exporter, so no system-level dashboard.Access Grafana
kubectl port-forward svc/monitoring-grafana 3000:3000Then open
http://localhost:3000and log in withadmin/admin— the chart's default credentials. For anything beyond a local cluster set your own password at first install (helm upgrade --install monitoring kubernetes/helm/monitoring --set grafana.adminPassword=<secret>instead of the make target), or reset it on a running install:kubectl exec deploy/monitoring-grafana -- grafana-cli admin reset-admin-password <secret>.Enter Your Node Endpoint
AvalancheGo serves Prometheus metrics at
/ext/metricson its API port (enabled by default). Enter the endpoint of the node you want to monitor:Without an explicit port we assume AvalancheGo's default API port 9650 (443 for https). Chain RPC paths like /ext/bc/…/rpc are stripped automatically.
Docker & Docker Compose Installation
Make sure you have Docker and Docker Compose installed on your system. You can use the following commands to install both:
# Install Docker using convenience scriptcurl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.shsudo usermod -aG docker $USERnewgrp docker# Test installationdocker run -it --rm hello-worlddocker compose versionThe generated setup uses inline compose configs, which need Docker Compose 2.23.1 or newer (
docker compose versionto check).Choose Your Dashboards
Pick which of the official avalanche-monitoring Grafana dashboards to install. The compose file below only downloads what you select:
The Subnets dashboard filters by the Chain dropdown at the top, auto-populated from your node's metrics once Prometheus has scraped it. Pick your L1's blockchain ID there.Create the Compose File
One file runs everything: Prometheus scraping your node, Grafana pre-wired to Prometheus, and a one-shot job that downloads your selected dashboards (pinned to a fixed commit). Both UIs bind to
127.0.0.1only.Start the Stack
docker compose up -dThen open
http://localhost:3000and log in asadminwith the password baked into your compose file:mbZahy3yQhI4H1xCdLrjRZxQjLWbz8WxYour dashboards are under Dashboards in the left sidebar; Prometheus itself is at
http://localhost:9090. Running the stack on a remote server? Reach it with an SSH tunnel instead of opening the ports:ssh -L 3000:localhost:3000 user@server.What You'll See
The Main dashboard covers node uptime, peers, successful/failed queries and throughput; Subnets tracks block height and validator connectivity per L1; the chain dashboards break down each chain's internals. The Main dashboard's CPU and disk panels use machine metrics from
node_exporter. Without it they show "No data". See below to add it.Deep dive: node monitoring docs and recommended metrics & alert thresholds.