Skip to content

luizferreira-io/ellie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ellie

Build Test MSRV Release License

A terminal-based PostgreSQL performance monitoring and tuning tool.

Ellie connects to a PostgreSQL server and provides a real-time interactive dashboard for visualizing server health, active sessions, configuration settings, and detailed performance analysis — all from your terminal.

The name "Ellie" comes from the female mammoth character in the Ice Age movies.


Screenshots

Screenshot 01

Screenshot 02

Screenshot 05

Screenshot 09

Screenshot 11

More screenshots here.


Features

  • Dashboard — Real-time server metrics: cache hit ratio, transactions, rollbacks, locks, conflicts, active sessions, and shared buffers usage.
  • Activity — Live view of all active connections, running queries, wait events, and client details.
  • Settings — Browse all PostgreSQL configuration parameters with their current values, units, and descriptions.
  • File Settings — View settings as loaded from the server's configuration files.
  • Tuning — 18 structured performance analyses across five categories: disk allocation, table fragmentation, indexing, shared buffers, and query performance.
  • About — Application information and credits.
  • UI — Text user interface (TUI). It runs directly in the terminal. Browse tables, adjust column widths, reposition columns.

Requirements

  • PostgreSQL 10 or later.
  • A database user with read access to system catalog views (pg_stat_*, pg_class, etc.)
  • For full tuning functionality, the following PostgreSQL extensions must be enabled:

To activate these extensions, follow the steps below:

  1. Run in the SQL console:
ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements';
  1. Restart the server instance.
  2. Run in the SQL console:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS pg_buffercache;
  1. Tests whether the views exists:
SELECT * FROM pg_stat_statements;
SELECT * FROM pg_buffercache;

Usage

ellie [OPTIONS]

Options

Option Default Description
--url <url> Full PostgreSQL connection URL. Overrides all other parameters.
--host <host> localhost Server hostname or IP address.
--port <port> 5432 Server port.
--user <user> postgres Database user.
--password <password> postgres User password.
--database <database> postgres Database name.
--help Show help.

Examples

# Connect using individual parameters
ellie --host db.example.com --port 5432 --user admin --password secret --database mydb

# Connect using a URL
ellie --url postgresql://admin:secret@db.example.com:5432/mydb

Installing

Just unzip it and run it in the terminal.

Pre-compiled binaries for 64-bit Linux and Windows are available in releases.


Building on Linux

You will need the Rust compiler. If you don't have it, follow these instructions: https://rust-lang.org/tools/install/

Install dev dependencies:

sudo apt install build-essential

Clone the source code:

git clone https://github.com/luizferreira-io/ellie
cd ellie

Build it:

cargo build --release

The binary will be located at target/release/ellie.


If you want to build with musl ABI (for maximum compatibility and portability), install musl dev dependencies:

sudo apt-get install musl-tools musl-dev

Add the target:

rustup target add x86_64-unknown-linux-musl

And build it:

cargo build --release --target x86_64-unknown-linux-musl

The binary will be located at target/x86_64-unknown-linux-musl/release/ellie.


Building on Windows

You will need the Rust compiler. If you don't have it, follow these instructions: https://rust-lang.org/tools/install/

Clone the source code:

git clone https://github.com/luizferreira-io/ellie
cd ellie

Build it:

cargo build --release

The binary will be located at target\release\ellie.exe.

This is a terminal application. Even on Windows, open terminal first (PowerShell, etc.), and only then run it.


Testing

With Rust installed, just run:

cargo test

Backlog

Features

  • Connection profiles — Save and switch between multiple named server connections without re-entering credentials each time.
  • Configuration file — Support a ~/.config/ellie/config.toml for storing default connection parameters.
  • Search and filter — Add inline search (/) to filter rows in the Settings, File Settings, and Activity tabs.
  • Copy to clipboard — Allow copying the selected row or cell value from any table.
  • Export — Export tuning analysis results to CSV or plain text.
  • Threshold alerts — Highlight metrics in the Dashboard when they exceed user-defined thresholds (e.g., cache hit ratio below 90%).
  • Additional tuning analyses — Expand the Tuning tab with analyses for replication lag, autovacuum status, and connection saturation.
  • Activity — Kill active session/query.

Improvements

  • Reconnect on disconnect — Detect lost connections and attempt automatic reconnection instead of crashing.
  • Configurable refresh interval — Let the user adjust the data refresh rate from the Settings tab or via a CLI flag.
  • Help overlay — Add an in-app ? keybinding that shows a reference of all shortcuts for the current tab.
  • New tabs - Database explorer, query executor/explainer/analyser, and troubleshooting.

Sample Database

The database used for the screenshots and tests is dvdrental, available at:

https://neon.com/postgresql/getting-started/sample-database

About

PostgreSQL performance tuning tool

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages