Skip to main content

Your terminal companion for monitoring Amazon RDS instances with real-time data, pricing, and interactive insights!

Project description

Smart RDS Viewer

Your terminal companion for monitoring Amazon RDS instances with real-time data, pricing, and interactive insights!

Smart RDS Viewer

A powerful, full-screen terminal CLI that fetches and displays all your Amazon RDS instances with live metrics, pricing, and interactive sorting - all from the comfort of your terminal.

Smart RDS Viewer Demo

Smart RDS Viewer Demo - Help Menu

Smart RDS Viewer Demo - RI Utilization

โœจ Features

  • ๐Ÿ”ง Backup & Maintenance View: Complete operational monitoring with backup windows, retention policies, and maintenance schedules
  • ๐ŸŽฏ Smart Column Sorting: Intuitive 1-9 then a-z shortcuts with visual indicators for active sort column and direction
  • ๐ŸŽจ Visual Sort Feedback: Colorful underlines and directional arrows show exactly what's being sorted and how
  • ๐Ÿ“ Dynamic Responsive Design: Adaptive column widths that automatically optimize for your terminal size
  • ๐Ÿ• Intelligent Time Handling: Local timezone conversion and chronological sorting for time-based columns
  • โšก Enhanced Performance: Optimized sorting algorithms for numeric, time-based, and special value handling

โœจ Core Features

๐Ÿ” Real-time Data Fetching

  • RDS Metadata: Fetches all RDS instances using boto3
  • CloudWatch Metrics: Live storage usage from CloudWatch APIs
  • Live Pricing: On-demand hourly and monthly pricing from AWS Pricing API
  • Smart Caching: 24-hour pricing cache in /tmp for faster subsequent runs

๐Ÿ“Š Rich Interactive Table

  • Full-screen Terminal: Professional full-screen interface like eks-node-viewer
  • Comprehensive Columns: 12+ metrics including all pricing components
  • Smart Highlighting: Targeted red highlighting for storage issues (โ‰ฅ80% usage)
  • Multi-AZ Support: ๐Ÿ‘ฅ indicators with accurate 2x pricing for Multi-AZ instances
  • Aurora Compatible: Special handling for Aurora instances and pricing
  • Real-time Updates: Live data refresh with loading spinners

๐ŸŽฎ Interactive Controls

  • Intuitive Shortcuts: Simple 1-9 then a-z keys for column sorting (1=Name, 2=Class, etc.)
  • Visual Sort Indicators: Colorful underlines and arrows (โ†‘โ†“) show active sort column and direction
  • Smart Sorting: Toggle ascending/descending with same key, handles time-based and numeric data intelligently
  • Multi-View Interface: Three integrated views accessible via keyboard shortcuts
    • Pricing View (V): Cost analysis with hourly/monthly toggle
    • Backup & Maintenance View (B): Backup windows, retention, maintenance schedules
    • RI Utilization View (R): Reserved Instance coverage and utilization
  • Dynamic Spacing: Responsive column widths that adapt to terminal size
  • Pricing Toggle: Press m to switch between hourly and monthly cost views
  • Help System: Press ? for interactive help overlay with context-aware shortcuts
  • Clean Exit: q or Ctrl+C to exit with terminal cleanup
  • Arrow Key Navigation: Use โ†/โ†’ or Tab/Shift+Tab for seamless view cycling

๐Ÿ“ˆ Comprehensive Metrics

  • Instance Details: Name, class, Multi-AZ indicators (๐Ÿ‘ฅ)
  • Storage Analytics: Used percentage, free space in GiB
  • Performance: IOPS, EBS throughput (with GP2/GP3 awareness)
  • Complete Cost Breakdown: Instance, Storage, IOPS, and EBS Throughput pricing
  • Flexible Cost Views: Toggle between hourly and monthly pricing with daily/monthly estimates
  • Backup & Maintenance: Backup windows, retention periods, maintenance schedules with local timezone display
  • Operational Insights: Next maintenance timing, pending actions, and maintenance urgency indicators

๐Ÿ’ฐ Reserved Instance (RI) Analysis

  • Comprehensive RI Support: Automatic RI discovery with size flexibility matching
  • Cost Optimization: Real-time coverage analysis and savings calculations
  • Visual Indicators: Color-coded instance names based on RI coverage

๐Ÿ“– Detailed RI Documentation: See docs/RESERVED-INSTANCES.md for complete RI feature documentation, size flexibility algorithms, and implementation details.

๐Ÿ› ๏ธ Installation

Prerequisites

  • Python 3.8+
  • AWS credentials configured (environment variables or IAM profile)
  • Required AWS permissions for RDS, CloudWatch, Pricing, and Reserved Instance APIs

AWS Configuration

Set your AWS profile and region (recommended):

export AWS_PROFILE=your-profile-name
export AWS_REGION=your-region  # e.g., us-east-1, ap-south-1

Required AWS Permissions:

  • rds:DescribeDBInstances - Fetch RDS instance metadata
  • rds:DescribeReservedDBInstances - Reserved Instance information
  • rds:DescribePendingMaintenanceActions - Maintenance and backup information
  • cloudwatch:GetMetricStatistics - Storage usage metrics
  • pricing:GetProducts - Live pricing data

Quick Start

Option 1: Install via pip (Recommended)

# Install the package
pip install smart-rds-viewer

# Run the viewer
smart-rds-viewer

Option 2: Development/Local Installation

# Clone and setup
git clone <your-repo>
cd smart-rds-viewer

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install -e .

# Run the viewer
smart-rds-viewer

Option 3: Run as Python Script

# Clone and setup
git clone <your-repo>
cd smart-rds-viewer

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run the viewer
python rds_viewer.py

๐ŸŽฏ Usage

Basic Usage

# Standard run
smart-rds-viewer

# Alternative command (shorter)
rds-viewer

# Check version
smart-rds-viewer --version

# Force fresh pricing data (bypass cache)
smart-rds-viewer --nocache

# Legacy method (if running from source)
python rds_viewer.py --nocache

Interactive Controls

  • Column Sorting: Press number keys (1-9) then letters (a-z) to sort by any column
  • Visual Feedback: Active sort column shows colorful underline and direction arrows (โ†‘โ†“)
  • View Navigation:
    • Shift+V - Pricing View (main cost analysis)
    • Shift+B - Backup & Maintenance View
    • Shift+R - Reserved Instance Utilization View
  • Pricing Toggle: Press m to switch between hourly and monthly costs
  • Help: Press ? to toggle context-aware help overlay
  • Quit: Press q or Ctrl+C to exit

Column Shortcuts (Consistent across all views)

Pricing View

Key Column Description
1 Name Instance identifier (๐Ÿ‘ฅ = Multi-AZ)
2 Class Instance type (db.r5.large, etc.)
3 Storage (GB) Allocated storage
4 % Used Storage utilization percentage
5 Free (GiB) Available storage space
6 IOPS Provisioned IOPS
7 EBS Throughput Storage throughput (MB/s)
8 Instance ($/hr or $/mo) Instance pricing (toggles with m)
9 Storage ($/hr or $/mo) Storage pricing (toggles with m)
a IOPS ($/hr or $/mo) IOPS pricing (toggles with m)
b EBS Throughput ($/hr or $/mo) Throughput pricing (toggles with m)
c Total ($/hr or $/mo) Total cost (toggles with m)

Backup & Maintenance View

Key Column Description
1 Name Instance identifier (๐Ÿ‘ฅ = Multi-AZ)
2 Class Instance type
3 Engine Database engine (MySQL, PostgreSQL)
4 Storage Allocated storage
5 Backup Window Daily backup time window (local TZ)
6 Retention Backup retention period (days)
7 Maintenance Window Weekly maintenance window (local TZ)
8 Next Next maintenance timing
9 Pending Actions Pending maintenance actions

Special Controls

Key Function Description
m Pricing Toggle Switch between hourly/monthly view
Shift+V Pricing View Go to main pricing/cost view
Shift+B Backup View Go to backup & maintenance view
Shift+R RI View Go to Reserved Instance view
? Help Show/hide interactive help overlay
q Quit Exit application

Navigation Controls

Key Function Description
โ† Previous Tab Cycle to previous view (infinite)
โ†’ Next Tab Cycle to next view (infinite)
Tab Cycle Forward Navigate between views sequentially
Shift+Tab Cycle Backward Navigate between views in reverse

Visual Indicators

  • ๐Ÿ”ต Cyan Underline โ†‘: Column sorted ascending
  • ๐ŸŸฃ Magenta Underline โ†“: Column sorted descending
  • ๐Ÿ‘ฅ: Multi-AZ instance (2x pricing)
  • ๐ŸŸข Green: Low urgency maintenance (>7 days)
  • ๐ŸŸก Yellow: Medium urgency maintenance (1-7 days)
  • ๐Ÿ”ด Red: High urgency maintenance (overdue/today)

๐Ÿ”ง Technical Details

Architecture

  • Modular Design: Separate modules for fetching, metrics, pricing, and UI
  • Error Handling: Graceful fallbacks for API failures
  • Caching: Smart pricing cache with 24-hour expiration
  • Full-screen UI: Rich-based terminal interface

AWS APIs Used

  • RDS: describe_db_instances for metadata, describe_reserved_db_instances for RI data, describe_pending_maintenance_actions for maintenance info
  • CloudWatch: get_metric_statistics for storage metrics
  • Pricing: get_products for live pricing data

Cache System

  • Location: /tmp/rds_pricing_cache.json
  • Duration: 24 hours
  • Auto-refresh: Expired cache triggers fresh API calls
  • Manual override: Use --nocache flag to force fresh data
  • Error Recovery: Corrupted cache falls back to API

๐Ÿค– Built with AI Assistance

This tool was collaboratively developed with the help of Claude Sonnet 4, an AI coding assistant. The development process involved:

  • Architecture Design: Modular structure with separate modules for different concerns
  • Feature Implementation: Real-time data fetching, caching, interactive UI
  • Problem Solving: Debugging pricing API issues, fixing cache serialization
  • User Experience: Full-screen terminal interface, dynamic shortcuts, help system
  • Documentation: Comprehensive README with all features and future roadmap

The AI assistant helped transform a simple concept into a comprehensive, production-ready RDS monitoring tool with advanced features like smart caching, interactive sorting, and professional terminal UI.

๐Ÿ“ Project Structure

The project follows a modular architecture with separate modules for different concerns:

  • Core modules: rds_viewer.py, ui.py, fetch.py, metrics.py, pricing.py
  • Documentation: Comprehensive docs in docs/ directory
  • Development tools: Debug scripts in scripts/ and performance benchmarks in benchmarks/

๐Ÿ“– Performance Details: See docs/BENCHMARKING.md for detailed performance optimizations, benchmarking results, and optimization techniques.

๐Ÿ› ๏ธ Development & Contributing

The project includes comprehensive development tools and documentation:

  • Debug Tools: Pricing analysis and debugging scripts in scripts/ directory
  • Performance Testing: Benchmarking tools in benchmarks/ directory
  • Development Setup: Complete setup instructions and guidelines

๐Ÿ“– Development Documentation:

๐Ÿ“ฆ Publishing to PyPI

For maintainers: To publish this package to PyPI, see the detailed publishing guide in docs/PUBLISHING.md with complete workflows, testing procedures, and troubleshooting tips.

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for detailed guidelines on development setup, code standards, and contribution workflows.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Built with Rich for beautiful terminal UI
  • Powered by boto3 for AWS integration
  • Inspired by modern CLI tools like eks-node-viewer
  • AI Development Partner: Claude Sonnet 4 for collaborative coding and problem-solving
  • @sachincool for the cool logo ๐Ÿซก
  • @kutumbtech for everything ๐Ÿ™

Happy RDS monitoring! ๐ŸŽ‰

Your terminal is now your RDS command center!

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

smart_rds_viewer-0.1.22.tar.gz (44.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smart_rds_viewer-0.1.22-py3-none-any.whl (42.1 kB view details)

Uploaded Python 3

File details

Details for the file smart_rds_viewer-0.1.22.tar.gz.

File metadata

  • Download URL: smart_rds_viewer-0.1.22.tar.gz
  • Upload date:
  • Size: 44.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for smart_rds_viewer-0.1.22.tar.gz
Algorithm Hash digest
SHA256 e2929c5eabe0ba9f1b0645ef248b1aaaac31606bccac760f76410d1c41ea7994
MD5 666ad1a57297392677cc63e0e749be86
BLAKE2b-256 0fec698055c6d88c679829f419f51d48daf4129a77cd3a7c2c536baeb067ae77

See more details on using hashes here.

Provenance

The following attestation bundles were made for smart_rds_viewer-0.1.22.tar.gz:

Publisher: release.yml on k4kratik/smart-rds-viewer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smart_rds_viewer-0.1.22-py3-none-any.whl.

File metadata

File hashes

Hashes for smart_rds_viewer-0.1.22-py3-none-any.whl
Algorithm Hash digest
SHA256 8ce3d2e66e6ba4e0bf452e97ccd134b94efc1d830d04df606e1875728601a4bd
MD5 afd0bcf13cb5f8293e9d533411a9dfe6
BLAKE2b-256 a1589f4010c44d1d094f0a251145547b13f0273371678e4cdcb93e61894d5f76

See more details on using hashes here.

Provenance

The following attestation bundles were made for smart_rds_viewer-0.1.22-py3-none-any.whl:

Publisher: release.yml on k4kratik/smart-rds-viewer

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