|
| 1 | +# Dora explorer base URL (no trailing slash). |
| 2 | +dora_url: "https://dora.bal-devnet-7.ethpandaops.io" |
| 3 | + |
| 4 | +# Substring (case-insensitive) matched against proposer_name / client name |
| 5 | +# in the Dora API. Any name containing this is considered "ours". |
| 6 | +client_match: "ethrex" |
| 7 | + |
| 8 | +# Slack incoming webhook URL. Can also be set via SLACK_WEBHOOK_URL env var. |
| 9 | +# Leave empty to disable Slack delivery. |
| 10 | +slack_webhook_url: "" |
| 11 | + |
| 12 | +# Discord webhook URL. Can also be set via DISCORD_WEBHOOK_URL env var. |
| 13 | +# Leave empty to disable Discord delivery. At least one of slack / discord |
| 14 | +# must be configured (unless --dry-run). |
| 15 | +discord_webhook_url: "" |
| 16 | + |
| 17 | +# Optional label shown in alert headers (e.g. network name). |
| 18 | +network_label: "bal-devnet-7" |
| 19 | + |
| 20 | +# Poll interval in seconds. |
| 21 | +poll_interval: 30 |
| 22 | + |
| 23 | +# How many recent slots to scan each tick for missed/orphaned blocks. |
| 24 | +slot_scan_limit: 64 |
| 25 | + |
| 26 | +# Sync lag threshold (slots behind the canonical head) before alerting. |
| 27 | +sync_lag_threshold: 16 |
| 28 | + |
| 29 | +# Number of consecutive polls a matched client must be on a non-canonical |
| 30 | +# head before we fire a fork alert. Filters propagation-timing jitter |
| 31 | +# (1-2 slot leads/lags that self-resolve in the next poll). With |
| 32 | +# poll_interval=30, fork_confirm_ticks=3 = ~90s of confirmation. |
| 33 | +fork_confirm_ticks: 3 |
| 34 | + |
| 35 | +# Path for persisted dedup state. Use null for in-memory only. |
| 36 | +state_file: "./dora_monitor_state.json" |
| 37 | + |
| 38 | +# HTTP timeout in seconds. |
| 39 | +http_timeout: 10 |
| 40 | + |
| 41 | +# Set true for verbose logging. |
| 42 | +debug: false |
| 43 | + |
| 44 | +# Periodic digest ("heartbeat") posted to Slack to confirm the monitor |
| 45 | +# is alive and give a network snapshot. Set 0 to disable. |
| 46 | +heartbeat_interval_minutes: 360 |
| 47 | +# Slots scanned for missed/orphaned counts in each heartbeat. |
| 48 | +heartbeat_slot_window: 256 |
| 49 | +# How to include non-`client_match` clients in the heartbeat: |
| 50 | +# off — skip them entirely |
| 51 | +# summary — one-line aggregate ("12 total, 1 non-online, 0 off-canonical") |
| 52 | +# detailed — per-client list with status / head / distance |
| 53 | +heartbeat_other_clients: "detailed" |
| 54 | + |
| 55 | +# Missed-block storm mode. When a single proposer hits |
| 56 | +# `missed_burst_threshold` misses inside the last `missed_burst_window_minutes`, |
| 57 | +# we stop posting per-slot alerts and switch to one "burst started" alert |
| 58 | +# plus periodic "still bursting" updates whose interval backs off through |
| 59 | +# `missed_burst_update_schedule_minutes` (last value repeats indefinitely). |
| 60 | +# A "burst resolved" alert fires once the window has been clear of misses. |
| 61 | +missed_burst_threshold: 5 |
| 62 | +missed_burst_window_minutes: 15 |
| 63 | +missed_burst_update_schedule_minutes: [15, 30, 60, 120] |
| 64 | + |
| 65 | +# Which checks to enable. |
| 66 | +checks: |
| 67 | + missed_blocks: true |
| 68 | + forks: true |
| 69 | + offline: true |
| 70 | + sync_lag: true |
| 71 | + # Posts an alert when an ethrex EL's reported version string changes |
| 72 | + # between polls (deploy / rollback detection). Reads from the HTML page |
| 73 | + # since the v1 JSON API doesn't expose ethrex's EL version. |
| 74 | + version_drift: true |
0 commit comments