v0.2.0 — Metrics, Config, Network, Web UI & Interactive Wizard
What's New
New Diagnosers
- Metrics — detects sustained CPU/memory utilisation above 85% via CloudWatch
- Config — extracts task definition and service config; validates Fargate CPU/memory combos; masks sensitive env vars
- Network — checks security group egress and NAT Gateway presence; surfaces blocked-outbound findings
New CLI Features
--stream-logs— streams live ECS task logs to the terminal; Ctrl+C exits cleanlybrowse— interactive wizard to select cluster/service (Profile / Access Keys / Default Chain / OIDC)serve— starts a FastAPI + HTMX web UI at http://localhost:8080
Web UI
- Form-based diagnosis at
GET /→POST /diagnose - JSON API at
GET /api/diagnose - Live log streaming via SSE at
GET /api/stream-logs - Health check at
GET /healthz
Infrastructure
deploy/Dockerfile— Python 3.12-slim, non-root user, port 8080deploy/task-definition.json— Fargate task definition with health checkdeploy/iam-policy.json— minimum IAM policy for all diagnosers
Architecture
- Shared
engine.py— zero logic duplication between CLI and web ServiceDataCache— eliminates 3× duplicateecs:DescribeServicescalls per run
Extended Detection
- 3 new stop codes:
SpotInterrupted,TaskFailedToStart,EssentialContainerExited - 11 new log crash patterns: Rust panics, .NET exceptions, PHP fatal errors, disk full, EFS mount failures
- Deployment config deadlock detection (min=100% / max=100% / running=0)
Quality
- All SonarQube issues resolved
- Test coverage raised from ~50% → 90%+ (180 tests)
Install
pip install ecs-doctor==0.2.0
pip install 'ecs-doctor[web]==0.2.0' # includes web serverWhat's Changed
- Add --profile option for named AWS credentials by @PraveenLuke in #1
- chore: bump version to 0.1.1 by @PraveenLuke in #2
- v0.2.0 — metrics, config, network diagnosers, web UI, interactive wizard by @PraveenLuke in #3
- fix: correct template response parameters in diagnose routes by @PraveenLuke in #4
- chore: bump version to 0.2.0 by @PraveenLuke in #5
New Contributors
- @PraveenLuke made their first contribution in #1
Full Changelog: v0.1.0...v0.2.0