A Prometheus metrics exporter for Ethereum validators to track balance, last attested slot and total withdrawn via the beaconcha.in API.
Ethereum Validator Metrics Exporter requires a config file. An example file can be found here.
A tool to export the ethereum validator state
Usage:
ethereum-validator-metrics-exporter [flags]
Flags:
--config string config file (default is config.yaml) (default "config.yaml")
-h, --help help for ethereum-validator-metrics-exporter
If you're requesting a large number of validators or lowering the global.checkInterval
config, you may need need to signup for a paid plan on beaconcha.in.
Ethereum Validator Metrics Exporter relies entirely on a single yaml
config file.
Name | Default | Description |
---|---|---|
global.logging | warn |
Log level (panic , fatal , warn , info , debug , trace ) |
global.metricsAddr | :9090 |
The address the metrics server will listen on |
global.namespace | eth_validator |
The prefix added to every metric |
global.checkInterval | 24h |
How often the service should check the beaconcha.in API |
global.labels[] | Key value pair of labels to add to every metric (optional) | |
beaconcha_in.endpoint | https://beaconcha.in |
The endpoint of the beaconcha.in API |
beaconcha_in.apikey | The API key for the beaconcha.in API | |
beaconcha_in.maxRequestsPerMinute | 10 |
The maximum number of requests per minute to the beaconcha.in API. Raise higher if on paid plan. |
beaconcha_in.batchSize | 50 |
The number of validators to request per batch. Max is 100 but may run into 414 URI too long on requests. |
validators[] | List of validators | |
validators[].pubkey | The validator public key | |
validators[].labels[] | Key value pair of labels to add to this validator only (optional) |
global:
logging: "debug" # panic,fatal,warm,info,debug,trace
metricsAddr: ":9090"
namespace: eth_validator
checkInterval: 24h
# optional labels applied to all metrics
labels:
extra: label
# Add your beaconcha.in API key here
# beaconcha_in:
# apikey: 123
validators:
- pubkey: 0x1234
labels:
type: acquaintance
company: NSA
- pubkey: 0x2345
labels:
extra: something
Download the latest release from the Releases page. Extract and run with:
./ethereum-validator-metrics-exporter --config your-config.yaml
Available as a docker image at ethpandaops/ethereum-validator-metrics-exporter
latest
- distroless, multiarchlatest-debian
- debian, multiarch$version
- distroless, multiarch, pinned to a release (i.e.0.4.0
)$version-debian
- debian, multiarch, pinned to a release (i.e.0.4.0-debian
)
Quick start
docker run -d --name ethereum-validator-metrics-exporter -v $HOST_DIR_CHANGE_ME/config.yaml:/opt/ethereum-validator-metrics-exporter/config.yaml -p 9090:9090 -p 5555:5555 -it ethpandaops/ethereum-validator-metrics-exporter:latest --config /opt/ethereum-validator-metrics-exporter/config.yaml;
docker logs -f ethereum-validator-metrics-exporter;
helm repo add ethereum-helm-charts https://skylenet.github.io/ethereum-helm-charts
helm install ethereum-validator-metrics-exporter ethereum-helm-charts/ethereum-validator-metrics-exporter -f your_values.yaml
Building yourself (requires Go)
- Clone the repo
go get github.com/ethpandaops/ethereum-validator-metrics-exporter
- Change directories
cd ./ethereum-validator-metrics-exporter
- Build the binary
go build -o ethereum-validator-metrics-exporter .
- Run the exporter
./ethereum-validator-metrics-exporter
Contributions are greatly appreciated! Pull requests will be reviewed and merged promptly if you're interested in improving the exporter!
- Fork the project
- Create your feature branch:
git checkout -b feat/new-metric-profit
- Commit your changes:
git commit -m 'feat(profit): Export new metric: profit
- Push to the branch:
-
git push origin feat/new-metric-profit
- Open a pull request
go run main.go --config your_config.yaml