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-1.0.2.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-1.0.2-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tmm_monitor-1.0.2.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-1.0.2.tar.gz
Algorithm Hash digest
SHA256 14e24fb840a8439ca6e605e6390b8cf46303242b0da405cc1c5263a446d06dcb
MD5 931dbdbb847e53481af19a86e8d30a14
BLAKE2b-256 5e22c8e6b8b5125f2115420d1e14594a1cb584d7c870136109a194fcdf75977e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tmm_monitor-1.0.2.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-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: tmm_monitor-1.0.2-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-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c521a879e44e485cfadcbac365071d027460be0f4835d7ba3296994f6e1aba2a
MD5 1ff134db98cab2b667e7aa411862d394
BLAKE2b-256 23f70a8338b534c2c113f7ce553d2f234f9b10d2db22af9792fdb35d67487c86

See more details on using hashes here.

Provenance

The following attestation bundles were made for tmm_monitor-1.0.2-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