Skip to content

v0.2.2

Latest

Choose a tag to compare

@4ster-light 4ster-light released this 12 Jul 09:34
· 1 commit to main since this release

Sentinel v0.2.2 Release Notes

Installation

nix profile add github:4ster-light/sentinel/v0.2.2
uv tool install git+https://github.com/4ster-light/sentinel@v0.2.2

Or with pip:

pip install git+https://github.com/4ster-light/sentinel@v0.2.2

Metrics Export

Sentinel now supports exporting process metrics in JSON and table formats for monitoring and automation workflows.

How It Works

  • Formats: export as a formatted table (default) or as JSON
  • Output: write to stdout or a file with --output
  • Snapshot: quick one-shot metrics table via sentinel metrics snapshot

Usage

# Show metrics as a table (default)
sentinel metrics export

# Export as JSON
sentinel metrics export --format json

# Write metrics to a file
sentinel metrics export --output metrics.json

# Export JSON to a file
sentinel metrics export --format json --output metrics.json

Example Scenarios

# Pipe JSON metrics into jq for analysis
sentinel metrics export --format json | jq '.[] | {name, cpu_percent, memory_mb}'

# Quick health snapshot
sentinel metrics snapshot

# Write to a monitoring directory
sentinel metrics export --format json --output /var/log/sentinel/metrics.json

Remote Management

Sentinel now includes a sentinel remote command for managing processes on remote hosts via SSH. Remote hosts must have Sentinel installed and accessible via SSH.

How It Works

  • Registration: add, list, and remove remote hosts
  • SSH configuration: specify custom user and port per host
  • Remote commands: run sentinel list, sentinel run, and sentinel stop on remote hosts
  • Persistence: remote host state is stored alongside process and port state

Usage

# Register a remote host
sentinel remote add server1.example.com

# Register with SSH user and custom port
sentinel remote add server1.example.com --user deploy --port 2222

# List registered hosts
sentinel remote list

# List processes on a remote host
sentinel remote list server1.example.com

# Start a process on a remote host
sentinel remote run server1.example.com "python server.py"

# Stop a process on a remote host
sentinel remote stop server1.example.com 1

# Remove a remote host
sentinel remote remove server1.example.com

Example Scenarios

# Register and manage a production server
sentinel remote add prod.example.com --user deploy
sentinel remote run prod.example.com "gunicorn app:app --bind 0.0.0.0:8000"
sentinel remote list prod.example.com

# Register a staging server with a non-standard port
sentinel remote add staging.example.com --user admin --port 2222
sentinel remote run staging.example.com "python worker.py"

# Quick inventory of all remote processes
sentinel remote list prod.example.com
sentinel remote list staging.example.com

Bug Fixes & Documentation

This release also includes general stability improvements and expanded documentation.

Bug Fixes

  • Proper error handling for missing SSH binary and connection timeouts
  • Validation for metrics format option (must be 'json' or 'table')
  • Early rejection of duplicate remote host registrations
  • Added tests covering all new metrics and remote functionality

Documentation

  • README updated with sentinel metrics and sentinel remote usage and examples
  • ROADMAP updated to mark v0.2.2 as completed

Combining All Process Controls

All of the process controls introduced so far compose cleanly together:

sentinel daemon start  # Enable continuous monitoring

sentinel run "python app.py" \
  --name api \
  --instances 2 \
  --startup-timeout 10 \
  --nice -5 \
  --ionice best_effort:2 \
  --restart \
  --health-http http://127.0.0.1:8000/health \
  --health-interval 30 \
  --health-failures 3 \

# Export metrics to your monitoring pipeline
sentinel metrics export --format json --output /var/log/sentinel/metrics.json

# Manage the same process on a remote host
sentinel remote add prod.example.com --user deploy
sentinel remote run prod.example.com "python app.py" --name api --instances 2 --restart

# Check remote status
sentinel remote list prod.example.com

# Result:
# - Two managed process instances are started with derived names
# - Startup confirms each process is running within 10 seconds
# - CPU priority gives process more resources
# - I/O priority prevents disk operations from blocking
# - Logs auto-rotate at 10MB
# - Health checks every 30 seconds
# - Restarts after 3 consecutive failures
# - Daemon monitors continuously
# - Metrics exportable for external monitoring
# - Remote hosts manageable via SSH

Testing & Coverage

Tests were updated across the CLI and core modules to cover the new version scope. Full coverage for:

  • Metrics collection, JSON export, and stdout table rendering
  • Metrics snapshot command
  • Remote host registration, listing, and removal
  • Remote sentinel command execution (list, run, stop)
  • Invalid format option rejection
  • Duplicate remote host rejection
  • SSH binary not found and connection timeout handling
  • Existing process management coverage remains intact