Skip to main content
Version: v2.0.2

Complete Example and Troubleshooting

Complete Docker Compose Example

Here's a complete example with all monitoring components integrated with your Aztec node:

services:
# Your Aztec node (example for full node)
aztec-node:
image: "aztecprotocol/aztec:2.0.2"
container_name: "aztec-node"
ports:
- ${AZTEC_PORT}:${AZTEC_PORT}
- ${P2P_PORT}:${P2P_PORT}
- ${P2P_PORT}:${P2P_PORT}/udp
volumes:
- ${DATA_DIRECTORY}:/var/lib/data
environment:
DATA_DIRECTORY: /var/lib/data
LOG_LEVEL: ${LOG_LEVEL}
ETHEREUM_HOSTS: ${ETHEREUM_HOSTS}
L1_CONSENSUS_HOST_URLS: ${L1_CONSENSUS_HOST_URLS}
P2P_IP: ${P2P_IP}
P2P_PORT: ${P2P_PORT}
AZTEC_PORT: ${AZTEC_PORT}
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: http://otel-collector:4318/v1/metrics
entrypoint: >-
node
--no-warnings
/usr/src/yarn-project/aztec/dest/bin/index.js
start
--node
--archiver
--network testnet
networks:
- aztec
restart: always

# OpenTelemetry Collector
otel-collector:
image: otel/opentelemetry-collector
container_name: aztec-otel
ports:
- 8888:8888
- 8889:8889
- 4317:4317
- 4318:4318
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
command: >-
--config=/etc/otel-collector-config.yaml
networks:
- aztec
restart: always

# Prometheus
prometheus:
image: prom/prometheus:latest
container_name: aztec-prometheus
ports:
- 9090:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
networks:
- aztec
restart: always

# Grafana
grafana:
image: grafana/grafana:latest
container_name: aztec-grafana
ports:
- 3000:3000
volumes:
- grafana-data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=your-secure-password
- GF_USERS_ALLOW_SIGN_UP=false
networks:
- aztec
restart: always

volumes:
prometheus-data:
grafana-data:

networks:
aztec:
name: aztec

This configuration includes:

  • Your Aztec node configured to export metrics to the OTEL collector
  • OpenTelemetry Collector to receive and process metrics
  • Prometheus to store time-series data with 30-day retention
  • Grafana for visualization and alerting
  • Persistent volumes for Prometheus and Grafana data
  • All services on the same Docker network for easy communication

Troubleshooting

Metrics not appearing

Issue: No metrics showing in Prometheus or Grafana.

Solutions:

  • Verify OTEL collector is running: docker compose ps otel-collector
  • Check OTEL collector logs: docker compose logs otel-collector
  • Verify node is configured with correct OTEL endpoints
  • Test OTEL collector endpoint: curl http://localhost:8889/metrics
  • Ensure all containers are on the same Docker network

Prometheus target down

Issue: Prometheus shows target as "down" in Status → Targets.

Solutions:

  • Verify OTEL collector is running and exposing port 8889
  • Check Prometheus configuration in prometheus.yml
  • Ensure target address is correct (use service name if in same Docker network)
  • Review Prometheus logs: docker compose logs prometheus

Grafana cannot connect to Prometheus

Issue: Grafana shows "Bad Gateway" or cannot query Prometheus.

Solutions:

  • Verify Prometheus is running: docker compose ps prometheus
  • Check data source URL in Grafana (should be http://prometheus:9090)
  • Test Prometheus endpoint: curl http://localhost:9090/api/v1/query?query=up
  • Ensure Grafana and Prometheus are on the same Docker network

Next Steps

  • Set up alerting rules in Prometheus for critical conditions
  • Create custom dashboards for your specific monitoring needs
  • Configure notification channels (Slack, PagerDuty, email) in Grafana
  • Explore advanced PromQL queries for deeper insights
  • Join the Aztec Discord to share dashboards with the community