A terminal-based monitoring dashboard for OpenSearch clusters, focused on cluster operations and capacity planning.
- 🏥 Cluster Health - Real-time cluster status monitoring
- 📊 Node Statistics - Detailed per-node metrics with JVM heap, CPU, RAM, and disk usage
- 📑 Index Overview - Monitor indices with health status, documents, and storage
- 🔍 Index Schema Viewer - Drill down into individual indices to explore field mappings, types, and analyzers
- 🔀 Shard Distribution - Visualize shard allocation across nodes with balance analysis
- 🎯 Resource Dashboard - Cluster-wide aggregate metrics and capacity planning insights
- 📈 Live Metrics - Real-time graphs showing indexing and search rates with auto-refresh
- 📊 Visual Metrics - Color-coded bar charts, health indicators, and Braille-rendered graphs
- 🎨 Split-Panel UI - Navigate between cluster overview, nodes, indices, shards, and resources
- 🔐 AWS Support - Native AWS OpenSearch support with SigV4 signing
- ⌨️ Keyboard Driven - Efficient terminal-based workflow with Vim-like navigation
Install the latest version with a single command:
Linux/macOS:
curl -sSL https://ostop.mkla.dev/install.sh | bashThis will automatically detect your OS and architecture, download the appropriate binary, and install it to /usr/local/bin.
To install to a custom location:
INSTALL_DIR=$HOME/.local/bin curl -sSL https://ostop.mkla.dev/install.sh | bashWindows (PowerShell):
irm https://ostop.mkla.dev/install.ps1 | iexThis will install to %LOCALAPPDATA%\Programs\ostop and provide instructions to add it to your PATH.
To install to a custom location:
$env:OSTOP_INSTALL_DIR = "C:\custom\path"; irm https://ostop.mkla.dev/install.ps1 | iexAlternatively, download the latest release for your platform from GitHub Releases:
# Example for Linux/macOS
# Download the appropriate binary for your platform
# Make it executable
chmod +x ostop
# Run it
./ostop --endpoint <your-endpoint>If you have Go installed, you can build from source:
# Clone the repository
git clone https://github.com/Vegasq/ostop.git
cd ostop
# Build
go build -o ostop main.go
# Or run directly
go run main.go --endpoint <your-endpoint># Start OpenSearch in Docker
docker run -d \
--name opensearch-dev \
-p 9200:9200 \
-p 9600:9600 \
-e "discovery.type=single-node" \
-e "DISABLE_SECURITY_PLUGIN=true" \
opensearchproject/opensearch:latest
# Connect with ostop
./ostop --endpoint http://localhost:9200# Using default AWS credentials
./ostop \
--endpoint https://search-mydomain-xxx.us-east-1.es.amazonaws.com \
--region us-east-1
# Using specific AWS profile
./ostop \
--endpoint https://search-mydomain-xxx.us-east-1.es.amazonaws.com \
--region us-east-1 \
--profile my-profile--endpoint <url> OpenSearch endpoint URL (required)
--region <region> AWS region (required for AWS OpenSearch)
--profile <name> AWS profile name (optional)
--insecure Skip TLS verification (development only)
--version Show version information
↑/k- Move up (menu navigation, index selection, or scroll up in right panel)↓/j- Move down (menu navigation, index selection, or scroll down in right panel)Tab- Switch between left and right panelsEnter- Select view (when in left panel) or drill into index schema (in indices view)Esc/Backspace- Return from index schema view to indices list
PgUp/b- Scroll up one pagePgDn/f/Space- Scroll down one pageHome/g- Jump to topEnd/G- Jump to bottom
r- Refresh data from cluster (manual refresh for all views except Live Metrics)q- Quit applicationCtrl+C- Force quit
- Access to OpenSearch cluster (local or AWS)
- For AWS: Valid AWS credentials configured
- For building from source: Go 1.21 or later
ostop uses the standard AWS credential chain:
- Environment variables (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - Shared credentials file (
~/.aws/credentials) - IAM roles (EC2 instance profiles, ECS task roles)
This matches the behavior of awscurl and other AWS CLI tools.
# Install dependencies
go mod download
# Run tests
go test ./...
# Build
go build -o ostop main.go
# Build with optimizations
go build -o ostop -ldflags="-s -w" main.goMIT
