Skip to content

Notification tool for Cosmos/Tendermint validators, sends alerts when missing pre-commits

License

Notifications You must be signed in to change notification settings

Jeongseup/tenderduty

 
 

Repository files navigation

TenderDuty v2

Go Reference Gosec CodeQL

Tenderduty is a comprehensive monitoring tool for Tendermint chains. Its primary function is to alert a validator if they are missing blocks, and has many other features.

v2 is complete rewrite of the original tenderduty graciously sponsored by the Osmosis Grants Program. This new version adds a web dashboard, prometheus exporter, telegram and discord notifications, multi-chain support, more granular alerting, and more types of alerts.

dashboard screenshot

Documentation

The documentation is a work-in-progress.

Runtime options:

$ tenderduty -h
Usage of tenderduty:
  -example-config
    	print the an example config.yml and exit
  -f string
    	configuration file to use (default "config.yml")
  -state string
    	file for storing state between restarts (default ".tenderduty-state.json")
  -cc string
    	directory containing additional chain specific configurations (default "chains.d")

Installing

Detailed installation info is in the installation doc.

30 second quickstart if you already have Docker installed:

mkdir tenderduty && cd tenderduty
docker run --rm ghcr.io/blockpane/tenderduty:latest -example-config >config.yml
# edit config.yml and add chains, notification methods etc.
docker run -d --name tenderduty -p "8888:8888" -p "28686:28686" --restart unless-stopped -v $(pwd)/config.yml:/var/lib/tenderduty/config.yml ghcr.io/blockpane/tenderduty:latest
docker logs -f --tail 20 tenderduty

Split Configuration

For validators with many chains, chain specific configuration may be split into additional files and placed into the directory "chains.d".

This directory can be changed with the -cc option

The user friendly chain label will be taken from the name of the file.

For example:

chains.d/Juno.yml -> Juno
chains.d/Lum Network.yml -> Lum Network

Configuration inside chains.d/Network.yml will be the YAML contents without the chain label.

For example start directly with:

chain_id: demo-1
    valoper_address: demovaloper...

Namada

When configuring Namada, there are two primary fields that need to be defined:

  1. valoper_address: This is the valcons address derived from the tendermint address. It is used to identify the validator on the Tendermint network.

    You can get a tendermint address by running the following command:

    curl -s localhost:26657/status | jq .result.validator_info.address

    To derive a valcons address run:

    gaiad keys parse <YOUR_TENDERMINT_ADDRESS>

    Download gaiad here

  2. namada_established_address: This field represents the validator's established address, which is specific to the Namada network.

valoper_address: cosmosvalcons1...
namada_established_address: tnam...

Make sure to populate these fields correctly in your configuration file to ensure proper monitoring and alerting.

Contributions

Contributions are welcome, please open pull requests against the 'develop' branch, not main.

About

Notification tool for Cosmos/Tendermint validators, sends alerts when missing pre-commits

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • CSS 63.3%
  • JavaScript 26.5%
  • Go 9.8%
  • Other 0.4%