Ethereum network monitoring with collection clients and a centralized server for data pipelining.
[!IMPORTANT]
EthPandaOps publishes all the data we collect with Xatu. Check it out here
Xatu can run in multiple modes. Each mode can be run independently. The following diagram shows the different modes and how they interact with each other and other services.
┌───────────┐
│ CONSENSUS │
│P2P NETWORK│
└─────▲─────┘
│
┌────────────┘─────────────┐
│ │
┌─────▲─────┐ ┌─────▲─────┐ ┌───────────┐
│ CONSENSUS │ │ ARMIARMA │ │ EXECUTION │
│ CLIENT ◄─────┐ │ │ │P2P NETWORK│
└─────▲─────┘ │ └─────▲─────┘ └─────▲─────┘
│ │ │ ┌─────┘───────┐
│ │ │ │ │
┌───▼────┐ ┌────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ XATU │ │ XATU │ │ XATU │ │ XATU │ │ XATU │
│ SENTRY │ │ CANNON │ │ SAGE │ │ MIMICRY │ │ DISCOVERY │
└───┬────┘ └─────┬────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │ │ │
│ │ │ │ │
│ ┌────▼─────┐ │ │ │
└───────► ◄───────┘─────────────┘─────────────┘
│ XATU │
│ SERVER │ ┌─────────────┐
│ ◄────► PERSISTENCE │
│ │ └─────────────┘
└─────┬────┘
│
│
▼
DATA PIPELINE
Follow the links for more information on each mode.
Download the latest release from the Releases page. Extract and run with:
./xatu <server|sentry|discovery|mimicry> --config your-config.yaml
View the install script here. You can run the following to install:
curl -sL https://raw.githubusercontent.com/ethpandaops/xatu/master/install.sh | bash
To change the install location of the binary you can run and change the BASE_INSTALL_PATH variable:
curl -sL https://raw.githubusercontent.com/ethpandaops/xatu/master/install.sh | BASE_INSTALL_PATH=~/.local/bin bash
To uninstall the binary you can run:
curl -sL https://raw.githubusercontent.com/ethpandaops/xatu/master/install.sh | bash -s uninstall
Available as a docker image at ethpandaops/xatu
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)helm repo add ethereum-helm-charts https://ethpandaops.github.io/ethereum-helm-charts
helm install xatu ethereum-helm-charts/xatu -f your_values.yaml
docker compose up --detach
This will setup a pipeline to import events from Xatu server into a clickhouse instance. This will not run sentry/discovery/mimicry/cannon clients but allow you run them locally and connect to the server.
There is also a grafana instance running with dashboards that can be used to visualize the data.
Exposed ports:
8080 - Xatu server9000 - Clickhouse native port8123 - Clickhouse http port3000 - GrafanaLinks:
Example sentry config to connect to the server:
logging: "info"
metricsAddr: ":9095"
name: example-instance
labels:
ethpandaops: rocks
ntpServer: time.google.com
ethereum:
# connect to your own consensus client
beaconNodeAddress: http://localhost:5052
forkChoice:
enabled: false
attestationData:
enabled: false
beaconCommittees:
enabled: false
outputs:
- name: xatu
type: xatu
config:
address: localhost:8080
tls: false
maxQueueSize: 51200
batchTimeout: 5s
exportTimeout: 30s
maxExportBatchSize: 5
connections: 3
You can start up the clickhouse cluster only with migrations automatically applied. You might want to do this to play with out Xatu data locally.
docker compose --profile clickhouse up --detach
When making changes to the xatu codebase, you can build the docker image with the following command:
docker compose up -d --build
We use docker volumes to store data between restarts. If you would like to clean up the volumes, you can do so with the following command:
docker compose down -v
Contributions are greatly appreciated! Pull requests will be reviewed and merged promptly if you're interested in improving Xatu!
git checkout -b feat/new-outputgit commit -m 'feat(sentry): new outputgit push origin feat/new-outputSam - @samcmau
Andrew - @savid