Dig into ClickHouse with TUI interface. PRE ALPHA version, everything will be changed.

Overview

chdig

Dig into ClickHouse with TUI interface.

Motivation

The idea is came from everyday digging into various ClickHouse issues.

ClickHouse has a approximately universe of introspection tools, and it is easy to forget some of them. At first I came with some slides and a picture (to attract your attention) by analogy to what Brendan Gregg did for Linux:

Know Your ClickHouse

Note, the picture and the presentation had been made in the beginning of 2022, so it may not include some new introspection tools.

But this requires you to dig into lots of places, and even though during this process you will learn a lot, it does not solves the problem of forgetfulness. So I came up with this simple TUI interface that tries to make this process simpler.

chdig can be used not only to debug some problems, but also just as a regular introspection, like top for Linux.

Demo

asciicast

Features

  • top like interface (or csysdig to be more precise)
  • Flamegraphs (CPU/Real/Memory)
  • Query logs
  • Cluster support (--cluster)

Plugins

  • Query view (system.processes)
  • Merges view (system.merges)
  • Replicas (system.replicas)
  • Replication queue view (system.replication_queue)
  • Fetches (system.replicated_fetches)

And there is a huge bunch of TODOs (right now it is too huge to include it here).

Note, this it is in a pre-alpha stage, so everything can be changed (keyboard shortcuts, views, color schema and of course features)

Requirements

  • ClickHouse 23.1+

Installation

Prerequisites:

make packages

For now, only deb packages are available.

But we are using nfpm, so any supported package, archlinux, deb, rpm, tar, you name it, can be supported):

Third party libraries

Notes

Since Rust is a new language to me, the code can be far from ideal.

You might also like...
For when you really, really just want to know that your config changed

really-notify This crate is for when you really, really just want to know that your config changed. K8s configmap symlink shenanigans? No problem. Mul

tpp (Tera Pre-Processor) is a versatile CLI (Command Line Interface) tool crafted for preprocessing files using the Tera templating engine.

tpp (Tera Pre-Processor) is a versatile CLI (Command Line Interface) tool crafted for preprocessing files using the Tera templating engine. Drawing inspiration from pre-processors like cpp and gpp, tpp is the next evolution with its powerful expressive toolset.

A template for bootstrapping a Rust TUI application with tui-rs & crossterm
A template for bootstrapping a Rust TUI application with tui-rs & crossterm

rust-tui-template A template for bootstrapping a Rust TUI application with tui-rs & crossterm. tui-rs The library is based on the principle of immedia

Everything you need to know about cross compiling Rust programs!

rust-cross Everything you need to know about cross compiling Rust programs! If you want to set up your Rust toolchain as a cross compiler, you have co

A fast static site generator in a single binary with everything built-in. https://www.getzola.org

zola (nรฉ Gutenberg) A fast static site generator in a single binary with everything built-in. Documentation is available on its site or in the docs/co

A fast static site generator in a single binary with everything built-in. https://www.getzola.org

zola (nรฉ Gutenberg) A fast static site generator in a single binary with everything built-in. Documentation is available on its site or in the docs/co

fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd
fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd

fas fas stands for Find all stuff and it's a rust app that simplify the find command and allow you to easily search everything you need. Note: current

Cargo subcommand `release`: everything about releasing a rust crate.

cargo release Features Ensure you are in a good state for release, including: Right branch Up-to-date with remote Clean tree Supports workspaces using

Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. After all it's just a cat.
Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. After all it's just a cat.

Bongo Copy Cat Introduction Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. Afte

A port of everything to Rust ๐Ÿฆ€
A port of everything to Rust ๐Ÿฆ€

everything.rs Do you ever feel like washing your hands after a coding session, disgusted at having to use essential Unix utilities with not the tinies

Demo Rust Cursive crate for terminal user interface (TUI)

Demo Rust Cursive Demonstration of the Rust programming language and Cursvie crate for terminal user interface (TUI). Setup Create: cargo new demo Add

 TUI interface for LLMs written in Rust  ๐Ÿ”ฅ
TUI interface for LLMs written in Rust ๐Ÿ”ฅ

Tenere TUI interface for LLMs written in Rust ๐Ÿ“ธ Demo ๐Ÿ’Ž Supported LLMs Only ChatGPT is supported for the moment. But I'm planning to support more mod

TUI (Text User Interface) - Get Instant feedback for your sh commands
TUI (Text User Interface) - Get Instant feedback for your sh commands

Bashtastic Visualizer TUI (Text User Interface) - Get Instant feedback for your sh commands. Explore and play with your queries ๐Ÿš€. The idea of this p

A simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art version constructed with emoji
A simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art version constructed with emoji

EmojiPix This is a simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art vers

This is a small demo of how to transform a simple single-server RocksDB service written in Rust into a distributed version using OmniPaxos.

OmniPaxos Demo This is a small demo of how to transform a simple single-server RocksDB service into a distributed version using OmniPaxos. Related res

Mirror of oxipng for pre-commit.

oxipng pre-commit mirror Mirror of oxipng for pre-commit. Installation Add to your pre-commit config: - repo: https://github.com/adamchainz/pre-comm

A library for constructing Groth-Sahai proofs using pre-built wrappers

Groth-Sahai Wrappers A Rust library containing wrappers that facilitate the construction of non-interactive witness-indistinguishable and zero-knowled

Cakecutter - a utility tool that quickly sets up a project from a pre-built template
Cakecutter - a utility tool that quickly sets up a project from a pre-built template

Cakecutter Create projects from pre-built cakes (templates)! Supports files, packages, content, running commands and more! Cakecutter is a utility too

TreeFlat - the simplest way to build & traverse a pre-order Tree in Rust

TreeFlat is the simplest way to build & traverse a pre-order Tree for Rust. Alpha-relase! If you build a Tree in pre-order, and display in pre-order,

Releases(latest)
Owner
Azat Khuzhin
Working on @ClickHouse at @semrush
Azat Khuzhin
A highly efficient daemon for streaming data from Kafka into Delta Lake

A highly efficient daemon for streaming data from Kafka into Delta Lake

Delta Lake 172 Dec 23, 2022
Perhaps the fastest and most memory efficient way to pull data from PostgreSQL into pandas and numpy. ๐Ÿš€

flaco Perhaps the fastest and most memory efficient way to pull data from PostgreSQL into pandas and numpy. ?? Have a gander at the initial benchmarks

Miles Granger 14 Oct 31, 2022
๐Ÿฆ– Evolve your fixed length data files into Apache Arrow tables, fully parallelized!

?? Evolve your fixed length data files into Apache Arrow tables, fully parallelized! ?? Overview ... ?? Installation The easiest way to install evolut

Firelink Data 3 Dec 22, 2023
PRE-ALPHA game engine

Project Setup Window Vulkan Setup Vulkan Instance Vulkan Validation Layers Vulkan Physical Device Vulkan Logical Device Vulkan Surface Vulkan Swapchai

Auracle 3 May 2, 2023
Klickhouse is a pure Rust SDK for working with Clickhouse

Klickhouse is a pure Rust SDK for working with Clickhouse with the native protocol in async environments with minimal boilerplate and maximal performance.

Max Bruce 44 Dec 27, 2022
dog is a command-line DNS client, like dig

dog dog is a command-line DNS client. Dogs can look up! dog is a command-line DNS client, like dig. It has colourful output, understands normal comman

Benjamin Sago 4.8k Jan 8, 2023
๐Ÿšง (Alpha stage software) Binary that supports remote filesystem and process operations. ๐Ÿšง

distant Binary to connect with a remote machine to edit files and run programs. ?? (Alpha stage software) This program is in rapid development and may

Chip Senkbeil 296 Dec 28, 2022
A lightweight, zero-dependency struct diffing library which allows changed fields to be collected and applied

structdiff A lightweight, zero-dependency struct diffing library which allows changed fields to be collected and applied. Derive Difference on a struc

null 7 Dec 25, 2022
Alpha Hyprland/Hyprpaper/Hypr configuration file parser

Hyprland/Hyprpaper/Hypr configuration file parser [maintainer=@yavko]

Hyprland Community 4 Feb 22, 2023
Run if inputs have changed, otherwise use cache

Boost Why Boost? Our planet is burning, and everywhere I look I see CI pipelines repeating work that has already been done. Tools such as TurboRepo, N

Stuart Harris 6 Jul 28, 2022