This repository contains Grafana dashboards and monitoring infrastructure for the Zeam blockchain node.
This repository provides:
- Grafana Dashboards: Pre-configured dashboards for monitoring Zeam node performance
- Docker Compose Setup: Complete monitoring stack with Prometheus and Grafana
- Prometheus Configuration: Templates and examples for Prometheus setup
- Docker and Docker Compose installed
- A running Zeam node with metrics enabled
A basic Prometheus configuration is included in prometheus/prometheus.yml that will work out of the box.
Option A: Use the included configuration (Recommended for quick start)
The repository includes a basic prometheus/prometheus.yml that will start monitoring:
- Prometheus itself (localhost:9090)
- A Zeam node running on the host (host.docker.internal:9667)
- Node exporter if available (host.docker.internal:9100)
Option B: Generate custom configuration (Advanced users) If you have access to the main Zeam repository, you can generate a custom configuration:
# From your Zeam repository
./zig-out/bin/zeam generate_prometheus_config --output /path/to/zeam-dashboards/prometheus/prometheus.yml# Clone this repository
git clone https://github.com/blockblaz/zeam-dashboards.git
cd zeam-dashboards
# Start Prometheus and Grafana (uses included configuration)
docker-compose up -d- Grafana: http://localhost:3001 (admin/admin)
- Prometheus: http://localhost:9090
- Open Grafana at http://localhost:3001
- Go to Configuration → Data Sources
- Add Prometheus data source:
- URL:
http://prometheus:9090 - Access: Server (default)
- URL:
The main dashboard (grafana/dashboards/main.json) includes:
- P95 Block Processing Time: 95th percentile of block processing duration
- Block Processing Rate: Number of blocks processed per second
- System Health: Overall node health indicators
You can customize the setup using environment variables:
# Custom ports
export PROMETHEUS_PORT=9090
export GRAFANA_PORT=3001
# Start with custom configuration
docker-compose up -dThe repository includes a basic prometheus/prometheus.yml configuration that works out of the box. You can customize it for your specific setup:
Basic Configuration Includes:
- Prometheus self-monitoring (localhost:9090)
- Zeam node monitoring (host.docker.internal:9667)
- Node exporter monitoring (host.docker.internal:9100)
Customizing the Configuration:
- Edit
prometheus/prometheus.ymlto add your specific targets - Update scrape intervals as needed
- Add alert rules and retention policies
For Advanced Users: If you have access to the main Zeam repository, you can generate a custom configuration using the Zeam CLI:
./zig-out/bin/zeam generate_prometheus_config --output prometheus/prometheus.yml- Create dashboard JSON in
grafana/dashboards/ - Update
grafana/provisioning/dashboards/dashboards.ymlif needed - Restart Grafana:
docker-compose restart grafana
Dashboards are stored in grafana/dashboards/ and can be:
- Modified directly in JSON format
- Exported from Grafana UI
- Version controlled with Git
-
Prometheus can't scrape Zeam node:
- Verify Zeam node is running with
--metricsPortflag - Check firewall settings
- Ensure Prometheus config targets match Zeam metrics port
- If your Zeam node is not on the default port 9667, edit
prometheus/prometheus.ymland update the target
- Verify Zeam node is running with
-
Grafana can't connect to Prometheus:
- Verify Prometheus is running:
docker-compose ps - Check data source URL in Grafana
- Ensure both services are on the same Docker network
- Verify Prometheus is running:
-
No metrics appearing:
- Verify Zeam node is generating metrics
- Check Prometheus targets page
- Review Prometheus logs:
docker-compose logs prometheus
View logs for troubleshooting:
# All services
docker-compose logs
# Specific service
docker-compose logs prometheus
docker-compose logs grafana- Fork the repository
- Create a feature branch
- Make your changes
- Test with a local Zeam node
- Submit a pull request
MIT License - see LICENSE file for details.