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 apply writes 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_exporter on 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 kubectl connected and helm v3 installed, running the avalanche-deploy L1 or Primary Network charts — Prometheus discovers the AvalancheGo pods by label and scrapes /ext/metrics on 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/monitoring and ships the Avalanche L1 and Primary Network dashboards. Note this path only scrapes AvalancheGo pod metrics — there is no node_exporter, so no system-level dashboard.
Access Grafana
kubectl port-forward svc/monitoring-grafana 3000:3000Then open http://localhost:3000 and log in with admin/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/metrics on 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 version# Install Dockersudo yum update -ysudo yum install -y dockersudo systemctl start dockersudo systemctl enable dockersudo usermod -aG docker $USER# Install Docker Compose v2 plugin (Amazon Linux specific)sudo mkdir -p /usr/local/lib/docker/cli-pluginssudo curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-composesudo chmod +x /usr/local/lib/docker/cli-plugins/docker-composenewgrp docker# Test installationdocker run -it --rm hello-worlddocker compose version# 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 version# Install Docker Desktop for Mac# Download from: https://www.docker.com/products/docker-desktop/echo "Please download and install Docker Desktop for Mac from the official Docker website."echo "Docker Compose is included with Docker Desktop."# After installation, you can test it by running:docker run -it --rm hello-worlddocker compose versionThe generated setup uses inline compose configs, which need Docker Compose 2.23.1 or newer (docker compose version to check).
Choose Your Dashboards
Pick which of the official avalanche-monitoring Grafana dashboards to install — the compose file below only downloads what you select:
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.1 only.
Start the Stack
docker compose up -dThen open http://localhost:3000 and log in as admin with the password baked into your compose file:
ZIsaOMSdjSzuVdvfp3QmnK8gZHgunXkCYour 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.
Command Palette
Search for a command to run...