Skip to content

Releases: mikeckennedy/dockerclustermon

v0.3.1

Choose a tag to compare

@mikeckennedy mikeckennedy released this 04 Mar 03:38

Added

  • Windows Docker support: docker stats output with PRIV WORKING SET column 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 %, and PIDS columns don't exist (fixes #5)
  • color_number() no longer crashes on non-numeric "N/A" values
  • split_mem() gracefully handles missing MEM USAGE / LIMIT key
  • Files: dockerclustermon/__init__.py

v0.3.0

Choose a tag to compare

@mikeckennedy mikeckennedy released this 12 Nov 18:44

Added

  • Added --debug CLI 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.0 as a dependency
  • New SSH connection management functions: get_ssh_client(), close_ssh_client(), and run_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() with subprocess.run() for better error handling and stderr capture
  • Updated run_free_command(), run_stat_command(), and run_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(), and run_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, and free commands
  • 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 catch TimeoutExpired exceptions
  • Improved debug output to show when threads don't complete within expected timeframe
  • Enhanced SSH connection error handling: Added ConnectionError detection when SSH connection fails or network is down
  • Added specific error handler in build_table() for ConnectionError with 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

Choose a tag to compare

@mikeckennedy mikeckennedy released this 03 Nov 21:37

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

Choose a tag to compare

@mikeckennedy mikeckennedy released this 16 Oct 01:22

Added

  • Added --timeout option 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, and parse_ps_header functions
  • 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

v0.2.5

Choose a tag to compare

@mikeckennedy mikeckennedy released this 04 Oct 13:36

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

Choose a tag to compare

@mikeckennedy mikeckennedy released this 04 Oct 13:16

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

  • --version flag now works correctly when installed via pipx or uv tool

v0.2.2

Choose a tag to compare

@mikeckennedy mikeckennedy released this 22 Nov 19:56
  • Enhances the ability to run locally without SSH.
  • Now works on macOS.

Thank you @sanders41 for the PR.

v0.2.1

Choose a tag to compare

@mikeckennedy mikeckennedy released this 22 Nov 15:20

Adds support for reporting KB usage of memory in containers. Previously was MB or above. Thank you @sanders41

v0.2.0 - Initial Release

Choose a tag to compare

@mikeckennedy mikeckennedy released this 21 Nov 22:15

Hello world.