Skip to main content

Tendermint Metrics Monitor - A TUI for monitoring blockchain metrics

Project description

Tendermint Metrics Monitor (tmm)

TMM Screenshot

A beautiful terminal-based TUI (Text User Interface) for monitoring Tendermint/CometBFT blockchain metrics from Prometheus endpoints.

Features

  • 📊 Real-time Metrics Display: Auto-refreshing dashboard with customizable intervals
  • 🎨 Visually Appealing: Color-coded metrics with grouped panels for easy reading
  • ⚙️ Configurable: Chain-specific metric configurations via JSON files
  • 🔄 Auto-refresh: Configurable refresh intervals (default: 1 second)
  • 🌐 Flexible: Works with any Prometheus-compatible metrics endpoint

Installation

From PyPI

pip3 install tmm-monitor

From GitHub

pip3 install git+https://github.com/bert2002/tmm.git

From Source (Local Development)

  1. Clone the repository:

    git clone https://github.com/bert2002/tmm.git
    cd tmm
    
  2. Install in editable mode:

    pip3 install -e .
    

This will install the tmm command to your environment. Ensure your python binary directory (e.g., ~/.local/bin) is in your PATH.

Running from Source

If you prefer not to install the package, you can run it directly from the repository:

  1. Install dependencies:

    pip3 install -r requirements.txt
    
  2. Run using Python:

    export PYTHONPATH=$PYTHONPATH:$(pwd)/src
    python3 -m tmm.main [OPTIONS]
    

Usage

Basic Usage

tmm

This will connect to http://localhost:26660/metrics and display metrics for cosmoshub-4.

Command Line Options

tmm [OPTIONS]

Options:

  • --metrics <URL> - Prometheus metrics endpoint (default: http://localhost:26660/metrics)
  • --refresh <SECONDS> - Refresh interval in seconds (default: 1)
  • --chain <CHAIN_ID> - Chain identifier (default: auto-detect)
  • --namespace <NAMESPACE> - Metrics namespace (default: cometbft)

Examples

Monitor a custom endpoint with 2-second refresh:

tmm --metrics http://validator.example.com:26660/metrics --refresh 2

Monitor a different chain:

tmm --chain osmosis-1 --namespace cometbft

Keyboard Shortcuts

  • q - Quit the application
  • r - Refresh metrics immediately

Metrics Display

The TUI organizes metrics into the following panels:

📦 Block & Consensus

  • Block height and latest block height
  • Block size and interval
  • Sync status
  • Transaction counts

👥 Validators

  • Total validators and voting power
  • Missing validators and their power
  • Byzantine validators (double-signers)
  • Precommit statistics

💾 Mempool

  • Mempool size (transactions and bytes)
  • Failed and evicted transactions
  • Recheck statistics

🌐 Network

  • Connected peer count
  • Duplicate votes and block parts
  • P2P bytes sent and received

⚡ Performance

  • Round duration
  • ABCI method timings (finalize_block, commit, process_proposal)

Chain Configuration

Chain-specific metrics are defined in JSON files located in the chains/ directory.

Creating a Custom Chain Configuration

  1. Create a new JSON file in chains/ directory:

    cp chains/cosmoshub-4.json chains/my-chain.json
    
  2. Edit the configuration to define which metrics to display:

    {
      "name": "My Chain",
      "chain_id": ["my-chain-1", "my-chain-alternative-id"],
      "endpoints": ["http://localhost:26660/metrics"],
      "metrics": {
        "block_consensus": [
          {
            "name": "Block Height",
            "metric": "consensus_height",
            "type": "gauge",
            "format": "int"
          }
        ]
      }
    }
    
  3. Run tmm with your chain:

    tmm --chain my-chain
    

Metric Configuration Format

Each metric entry supports:

  • name - Display name
  • metric - Prometheus metric name (without namespace prefix)
  • type - Metric type (gauge, counter, histogram)
  • format - Display format (int, bytes, duration, percent, bool)
  • stat - For histograms: avg, sum, count
  • labels - Optional label filters

Chain Endpoints & Auto-detection

You can specify a list of endpoints in the configuration file. TMM uses these endpoints to auto-detect the active chain when no --chain argument is provided.

"endpoints": [
  "http://localhost:26660/metrics",
  "http://IP:26660/metrics"
]

When running tmm without arguments, it probes these endpoints and selects the first one that returns metrics matching the configuration's chain_id.

Fallback Behavior

If a chain configuration file is not found, tmm automatically falls back to cosmoshub-4.json.

Project Structure

tmm/
├── src/
│   └── tmm/                  # Package source
│       ├── main.py           # Entry point
│       └── chains/           # Chain configurations
├── tests/                    # Tests
├── pyproject.toml            # Project configuration
└── README.md                   # This file

License

MIT

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tmm_monitor-0.1.0.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tmm_monitor-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file tmm_monitor-0.1.0.tar.gz.

File metadata

  • Download URL: tmm_monitor-0.1.0.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tmm_monitor-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d2a79ec8ab6da58a0042a68fced4a2ca15b9cf787d27730b35ddf1a2d20d7439
MD5 5271cc3b3f4c1944f020c24bafbbea78
BLAKE2b-256 5a01fb9f78c52bf74e3ff8c6f4df158fc051cf7b3df7dd24202cc9d0406f18d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tmm_monitor-0.1.0.tar.gz:

Publisher: publish.yml on bert2002/tmm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tmm_monitor-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tmm_monitor-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tmm_monitor-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ac16975c9a232da90dcf4eb2cd7c56393c52948c30df58985e596f9e2e9fcb3
MD5 1389360048eaf9fe78ca50b1f1c323bb
BLAKE2b-256 101934375c36ff157e1a596d7ad020e0b51b9e1a839893a958bf0b1b474bad7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tmm_monitor-0.1.0-py3-none-any.whl:

Publisher: publish.yml on bert2002/tmm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page