A production-grade site monitoring tool. Monitor multiple websites with comprehensive health checks, beautiful dashboards, and detailed reporting.
SiteHealthDashboard-v2.0-Setup.exe
No need for Python, scripts, or virtual environments. Everything is embedded.
The installer includes:
cd site-health-dashboard
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium
streamlit run dashboard.py
python -m cli run --json results.json --html report.html
python -m cli history --limit 20
python -m cli cleanup --days 7
default:
timeout_seconds: 10
max_response_ms: 2000
min_ssl_days_left: 14
check_ssl: true
check_http_to_https_redirect: true
check_security_headers: true
check_robots: true
check_sitemap: true
check_keyword: true
check_visual: false
screenshot_width: 1280
screenshot_height: 1024
screenshot_timeout: 30
live_sites:
- url: https://example.com
expected_status: [200]
keyword: "Welcome"
- url: https://api.example.com
expected_status: [200, 401]
custom_headers:
Authorization: "Bearer token"
check_robots: false
check_sitemap: false
staging_sites:
- url: https://staging.example.com
expected_status: [200, 401, 403]
check_visual: true # Enable screenshots for staging
sites:
- url: https://slow-site.com
max_response_ms: 5000 # Allow slower response
timeout_seconds: 15 # Longer timeout
screenshot_timeout: 45 # Longer screenshot timeout
- url: https://legacy.com
min_ssl_days_left: 7 # Lower SSL threshold
check_security_headers: false # Skip modern header checks
check_visual: false # Disable screenshots for this site
default:
check_visual: true # Enable screenshot capture
screenshot_width: 1920 # Higher resolution
screenshot_height: 1080
screenshot_timeout: 45 # Allow more time for slow sites
keep_screenshots_days: 7 # How long to keep screenshot files
max_screenshots: 100 # Maximum screenshots to keep per site
sites.yaml
sites.bak.yaml
ℹ️ Note: If you don’t see your updated sites in the Dashboard, just switch environments in the sidebar, or go to the Configuration tab and click Reload Config.
Screenshot files are stored in a date-organized folder structure:
snapshots/
├── 2025-08-26/
│ ├── example.com_143022.png
│ └── staging.example.com_143045.png
└── thumbnails/
└── 2025-08-26/
├── example.com_143022_thumb.jpg
└── staging.example.com_143045_thumb.jpg
site-health-dashboard/
├── dashboard.py # Streamlit web interface
├── site_checks.py # Core testing logic with visual integration
├── cli.py # Command-line interface
├── models.py # Data models and validation
├── sites.yaml # Configuration file with live/staging separation
├── sites.bak.yaml # Backup of the configuration file
├── requirements.txt # Python dependencies including Playwright
├── utils/
│ ├── retry.py # Retry logic with backoff
│ └── storage.py # History and export utilities
├── checks/
│ ├── dns.py # DNS resolution checks
│ ├── ssl.py # SSL/TLS certificate checks
│ ├── http.py # HTTP and security checks
│ └── visual.py # Screenshot capture with Windows fixes
├── snapshots/ # Screenshot storage
│ ├── YYYY-MM-DD/ # Date-organized screenshots
│ └── thumbnails/ # Compressed thumbnail images
└── runs/ # Historical test results
├── run_20241201_143022_live_abc123.json
└── run_20241201_150045_staging_def456.json
Configure separate site lists for different environments:
live_sites:
- url: https://production.com
staging_sites:
- url: https://staging.com
check_visual: true # More visual testing in staging
Generated reports will be available in the root folder:
site-health-dashboard/
├── site_health_yyyymmdd_ssmmhh.html # HTML Report example
├── site_health_yyyymmdd_ssmmhh.json # JSON Report example
├── site_health_yyyymmdd_ssmmhh.csv # CSV Report example
When launching the dashboard, the app runs in the background. If you close the browser window, the dashboard still runs in the background and keeps the port (8501) occupied. To shut it down completely, hit Disconnect first. Once confirmed, you're safe to close the tab.
Ready to monitor your sites with visual verification? Install Site Health Dashboard
, run it, and let the automated setup handle everything else!