Home

Awesome

ClickHouse Top

Show live statistics for monitoring your ClickHouse node.

Build

❯ make build

Usage

It can populate graphs either by pulling metrics from the prometheus exporter endpoint of ClickHouse or by running sql queries on ClickHouse native protocol endpoint.

To enable prometheus exporter endpoint for ClickHouse, you will need to add following ClickHouse server configuration:

<clickhouse>
    <prometheus>
        <endpoint>/metrics</endpoint>
        <port>9363</port>
        <metrics>true</metrics>
        <events>true</events>
        <asynchronous_metrics>true</asynchronous_metrics>
        <status_info>true</status_info>
    </prometheus>
</clickhouse>
❯ chtop --help
Monitor your ClickHouse clusters without ever leaving your terminal

Usage:
  chtop [flags]

Flags:
  -c, --config string             path of the config file (default: $HOME/.chtop.yaml)
  -h, --help                      help for chtop
  -m, --metrics-url string        clickhouse url for pulling metrics in prometheus exposition format
  -d, --queries-database string   clickhouse database for connecting from clickhouse client (default "system")
  -p, --queries-password string   clickhouse password of the provided clickhouse user for running clickhouse queries
  -q, --queries-url string        clickhouse endpoint for running clickhouse queries via native protocol
  -u, --queries-username string   clickhouse username for running clickhouse queries (default "default")

Run chtop pointing to prometheus stats endpoint & http endpoint of ClickHouse.

Sample Run:

❯ chtop --metrics-url http://localhost:9363/metrics --queries-url localhost:9000 --config chtop.yaml

Themes

You can configure the theme (default path: $HOME/.chtop.yaml)

theme:
  graph:
    color: red
    height: 10
    precision: 1

Metrics

You can configure the metrics to plot (default path: $HOME/.chtop.yaml)

clickhousemetrics:
  metrics:
    - alias: Total Queries
      name: ClickHouseProfileEvents_Query
    - alias: Total Select Queries
      name: ClickHouseProfileEvents_SelectQuery
    - alias: Total Insert Queries
      name: ClickHouseProfileEvents_InsertQuery
    - alias: Number of Active Parts
      name: ClickHouseMetrics_PartsActive
    - alias: Number of TCP Connections
      name: ClickHouseMetrics_TCPConnection
    - alias: Number of Open File Descriptors
      name: ClickHouseProfileEvents_FileOpen

You can configure to run sql queries to populate metrics to plot (default path: $HOME/.chtop.yaml)

clickhousequeries:
  queries:
    - name: Number of Running Queries
      sql: "select count(*) from system.processes"
    - name: Number of Databases
      sql: "select count(*) from system.databases"
    - name: Number of Tables
      sql: "select count(*) from system.tables"
    - name: Number of Parts
      sql: "select count(*) from system.parts"

Sample Output

<img width="1529" alt="demo" src="https://user-images.githubusercontent.com/30620077/214207781-577d75a0-e593-4b01-80cb-8228c2ee4c40.png">

Thank you

This tool is built using BubbleTea, a very neat TUI Framework.

Todos