Repository navigation
Releases: mikeckennedy/dockerclustermon
Releases · mikeckennedy/dockerclustermon
Release list
v0.3.1
Added
- Windows Docker support:
docker statsoutput withPRIV WORKING SETcolumn is now parsed correctly - New
normalize_stat_dict()function maps Windows Docker format to internal column names - Unavailable metrics (Mem %, Limit) display as dimmed "N/A" on Windows Docker
- Files:
dockerclustermon/__init__.py
Changed
parse_stat_header()now splits columns into required (all platforms) and optional (platform-specific)- Platform-specific columns (
MEM USAGE / LIMIT,MEM %,PIDS,PRIV WORKING SET) are silently skipped when absent - No changes to Linux/Mac behavior
- Files:
dockerclustermon/__init__.py
Fixed
- Fixed crash on Windows Docker where
MEM USAGE / LIMIT,MEM %, andPIDScolumns don't exist (fixes #5) color_number()no longer crashes on non-numeric "N/A" valuessplit_mem()gracefully handles missingMEM USAGE / LIMITkey- Files:
dockerclustermon/__init__.py
v0.3.0
Added
- Added
--debugCLI flag to enable verbose output for diagnosing SSH and command execution issues - New
run_command_with_debug()helper function that captures both stdout and stderr from subprocess commands - Debug mode displays stderr output in real-time (in yellow) when it occurs
- Error messages now include full stdout/stderr output when debug mode is enabled
- Performance optimization: Integrated Paramiko library for persistent SSH connections
- Added
paramiko>=3.5.0as a dependency - New SSH connection management functions:
get_ssh_client(),close_ssh_client(), andrun_ssh_command() - SSH connections now persist across multiple command executions instead of reconnecting for each command
- Files:
dockerclustermon/__init__.py,pyproject.toml
Changed
- Replaced
subprocess.check_output()withsubprocess.run()for better error handling and stderr capture - Updated
run_free_command(),run_stat_command(), andrun_ps_command()to use new debug helper - Major performance improvement: Refactored SSH command execution to use persistent connections via Paramiko
- Modified
run_command_with_debug()to support both local subprocess execution and remote SSH execution - Updated
run_free_command(),run_stat_command(), andrun_ps_command()to accept optional SSH client parameter - Modified
run_update()to create and reuse a single SSH connection for all three commands - SSH connection is now established once and reused for
docker ps,docker stats, andfreecommands - This eliminates the overhead of creating 3 separate SSH connections on every refresh cycle
- Files:
dockerclustermon/__init__.py
Fixed
- Fixed timeout handling to prevent indefinite hanging when SSH connections timeout or fail
- Added timeout to thread join operations (timeout + 5 seconds buffer) in
run_update() - All command functions (
run_stat_command,run_ps_command,run_free_command) now properly catchTimeoutExpiredexceptions - Improved debug output to show when threads don't complete within expected timeframe
- Enhanced SSH connection error handling: Added
ConnectionErrordetection when SSH connection fails or network is down - Added specific error handler in
build_table()forConnectionErrorwith user-friendly retry message - Prevents fallback to local execution when remote SSH connection fails (would have caused confusing errors)
- Files:
dockerclustermon/__init__.py
v0.2.7
Fix return type errors in Docker command functions
- Add explicit empty list returns to exception handlers in run_stat_command and run_ps_command
- Fix incorrect type annotation for stat_lines parameter in join_results
- Ensures all code paths return list[dict[str, str]] as declared
v0.2.6
Added
- Added
--timeoutoption to specify a timeout (in seconds) for server responses - Displays error message if server fails to respond within the specified timeout period
- Files:
dockerclustermon/__init__.py
Fixed
- Improved error messages for "substring not found" errors on Windows and other platforms
- Added detailed diagnostic output showing actual vs expected Docker command headers when parsing fails
- Enhanced error handling in
parse_free_header,parse_stat_header, andparse_ps_headerfunctions - Made header parsing case-insensitive to handle Docker version differences across platforms
- Replaced
.index()with.find()for more robust error detection - Files:
dockerclustermon/__init__.py
Notes
- Thank you @sanders41 for the timeout feature PR
v0.2.5
Fixed
- Fixed "unsupported operand type(s) for +=: 'int' and 'str'" error that occurred when docker stats returned unexpected memory unit formats or malformed data
- Added handling for bare bytes ('B') unit in memory values
- Added error handling for malformed percentage values
- Files:
dockerclustermon/__init__.py(functions:total_sizes,total_percent)
v0.2.4
Added
- Loading spinner with version info displayed during app startup and initial data loading
- Multi-line startup display showing "Docker Cluster Monitor v0.2.4" followed by "Loading..." with spinner
Fixed
--versionflag now works correctly when installed via pipx or uv tool
v0.2.2
- Enhances the ability to run locally without SSH.
- Now works on macOS.
Thank you @sanders41 for the PR.
v0.2.1
Adds support for reporting KB usage of memory in containers. Previously was MB or above. Thank you @sanders41