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

Supported Chains

Chain Network IDs
0G Chain 0gchain-16602, 0G-mainnet-aristotle
Babylon bbn-1, bbn-test-6
Celestia celestia, mocha-4, arabica-11
Cosmos Hub cosmoshub-4, theta-testnet-001
Mantra mantra-dukong-1, mantra-1
Nillion nillion-1, nillion-chain-testnet-1
Terra phoenix-1, pisco-1
Xion xion-mainnet-1, xion-testnet-2

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.1.3.tar.gz (15.4 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.1.3-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tmm_monitor-1.1.3.tar.gz
  • Upload date:
  • Size: 15.4 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.1.3.tar.gz
Algorithm Hash digest
SHA256 a6bbc723e84cbe0553bd6d032a4de8a1fa9ea1dd1bba755b3c3b3402b85cb561
MD5 abefa9115532b49a63682d59f887afdd
BLAKE2b-256 d59065aa6129e5e1fea0ec429afe0ae721296ce01a96fd4083b0afd6cd7f7e12

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tmm_monitor-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 18.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.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7efb6743d1d3c480b1d2ec515513a15f5eaaf879471f72a49e5521c71d3deadc
MD5 154774bd613fee7db067390ee6128bdc
BLAKE2b-256 3b7b1d69b7da594107e5a024059ed557d271ccb7c241dce9cd44edec18c37edf

See more details on using hashes here.

Provenance

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