This repository contains monitoring and alerting configurations for GenLayer infrastructure, including Grafana alert rules, dashboards, and notification policies.
GenLayer uses Grafana Cloud for comprehensive monitoring and alerting across the validator network. This repository serves as the source of truth for:
- Alert rule configurations
- Notification policies
- Monitoring documentation
- Grafana dashboard configurations (when added)
- Instance:
genlayerfoundation.grafana.net - Organization: GenLayer Foundation
- Prometheus (
grafanacloud-prom): Metrics collection - Default datasource - Loki (
grafanacloud-logs): Log aggregation - Tempo (
grafanacloud-traces): Distributed tracing - Pyroscope (
grafanacloud-profiles): Continuous profiling
- GenLayerLabs Slack (
af9yk9dbw5af4f): Primary notification channel for alerts
Located in: grafana-alerts/
- File:
alert-node-blocks-behind-increasing.json - UID:
afa2b791io0sgb - Severity: Critical
- Condition: Triggers when any node's
genlayer_node_blocks_behindmetric has increased over the last 5 minutes - Query:
count(increase(genlayer_node_blocks_behind[5m]) > 0) - Duration: 5 minutes (pending after condition is met)
This alert detects when nodes are falling behind blockchain sync by checking if the blocks_behind metric increased over a 5-minute window. Any increase indicates the node is falling further behind.
- File:
alert-genvm-permits-exhausted.json - UID:
bfa2cinxy13wgf - Severity: Critical
- Condition: Triggers when any validator's
genlayer_node_genvm_permits_currentequals 0 - Query:
count(genlayer_node_genvm_permits_current == 0) - Duration: 1 minute
This alert detects when validators have exhausted their GenVM execution permits, indicating the execution pool is saturated and cannot process new requests.
Three alert rules monitor Go memory usage across validators:
- File:
alert-1gb-memory-threshold.json - UID:
dfa1nyolt0cg0b - Severity: Warning
- Condition: Triggers when ≥3 validators exceed 1GB memory allocation
- Query:
count(go_memstats_alloc_bytes{validator_name!=""} > 1e9)
- File:
alert-2gb-memory-threshold.json - UID:
efa1nyp7dfxfkb - Severity: Critical
- Condition: Triggers when ≥3 validators exceed 2GB memory allocation
- Query:
count(go_memstats_alloc_bytes{validator_name!=""} > 2e9)
- File:
alert-3gb-memory-threshold.json - UID:
dfa1nypsvkglcc - Severity: Critical
- Condition: Triggers when ≥3 validators exceed 3GB memory allocation
- Query:
count(go_memstats_alloc_bytes{validator_name!=""} > 3e9)
All validator memory alerts:
- Evaluation interval: Every 1 minute
- Pending duration: 5 minutes (alert fires after condition persists)
- Folder: GenLayer Labs (
dfa1v9yck3ny8b) - Rule Group: Validator Memory Alerts
Common Labels:
asimov-alert: "true" (routing label for all alerts)
Node Sync Alert Labels:
component: "node-sync"severity: "critical"
Node Performance Alert Labels:
component: "genvm"severity: "critical"
Validator Memory Alert Labels:
component: "validator"severity: "warning" (1GB) or "critical" (2GB, 3GB)threshold: "1gb", "2gb", or "3gb"
Alerts are routed to Slack using label-based matching:
Matcher: asimov-alert = true
Contact Point: GenLayerLabs slack
Grouping: alertname, threshold
Group Wait: 30s
Group Interval: 5m
Repeat Interval: 4h
This ensures all validator memory alerts are sent to the GenLayerLabs Slack channel with appropriate grouping to avoid notification spam.
Located in: dashboards/
- general_monitor.json: General monitoring dashboard for GenLayer infrastructure
- whoispushing.json: Dashboard for tracking deployment and push activity
To import dashboards into Grafana:
- Go to Dashboards → Import
- Upload the JSON file or paste its contents
- Select the appropriate datasources
The following GenLayer-specific metrics are available via genlayer_node_*:
Sync Status:
genlayer_node_blocks_behind- Number of blocks the node is behind the networkgenlayer_node_synced- Boolean indicating if node is synced (0 or 1)genlayer_node_latest_block- Latest block number known to the nodegenlayer_node_synced_block- Latest block the node has syncedgenlayer_node_processing_block- Block currently being processed
Performance:
genlayer_node_cpu_usage_percent- CPU usage percentagegenlayer_node_memory_usage_bytes- Memory usage in bytesgenlayer_node_memory_percent- Memory usage percentagegenlayer_node_disk_usage_bytes- Disk usage in bytes
Transactions:
genlayer_node_transactions_accepted_synced_total- Total accepted synced transactionsgenlayer_node_transactions_activated_total- Total activated transactionsgenlayer_node_genvm_executions- Number of GenVM executions
The following Go runtime metrics are available from validators via go_memstats_*:
Memory Allocation:
go_memstats_alloc_bytes- Currently allocated bytesgo_memstats_alloc_bytes_total- Total bytes allocated (cumulative)go_memstats_heap_alloc_bytes- Heap bytes allocatedgo_memstats_heap_inuse_bytes- Heap bytes in use
Garbage Collection:
go_gc_duration_seconds- GC pause durationgo_memstats_next_gc_bytes- Target heap size for next GCgo_memstats_last_gc_time_seconds- Last GC completion time
Concurrency:
go_goroutines- Number of goroutinesgo_threads- Number of OS threads
See grafana-alerts/README.md for a complete list of available Go metrics.
monitoring/
├── README.md # This file
├── dashboards/ # Grafana dashboard configurations
│ ├── general_monitor.json
│ └── whoispushing.json
└── grafana-alerts/ # Alert rule configurations
├── README.md # Detailed alert documentation
├── alert-node-blocks-behind-increasing.json # Node sync alert
├── alert-genvm-permits-exhausted.json # GenVM performance alert
├── alert-1gb-memory-threshold.json # Memory alerts
├── alert-2gb-memory-threshold.json
└── alert-3gb-memory-threshold.json
- Navigate to
https://genlayerfoundation.grafana.net - Go to Alerting → Alert rules
- Filter by folder: "GenLayer Labs"
Export Grafana API key:
export GRAFANA_API_KEY="your-api-key"
export GRAFANA_URL="https://genlayerfoundation.grafana.net"List all alerts:
curl -H "Authorization: Bearer $GRAFANA_API_KEY" \
"$GRAFANA_URL/api/v1/provisioning/alert-rules"Get specific alert:
curl -H "Authorization: Bearer $GRAFANA_API_KEY" \
"$GRAFANA_URL/api/v1/provisioning/alert-rules/dfa1nyolt0cg0b"This repository was configured using Claude Code with the Grafana MCP server, which provides programmatic access to Grafana resources.
When adding new alerts or dashboards:
- Create/modify the resource in Grafana
- Export the JSON configuration
- Save to the appropriate directory in this repo
- Update relevant README documentation
- Commit and push changes
For issues with monitoring or alerting:
- Check the GenLayerLabs Slack channel for active alerts
- Review alert history in Grafana Cloud
- Contact the infrastructure team
Internal GenLayer Foundation repository.