Files
DashDescomplicar/api/scripts/check-sites.ts
Emanuel Almeida 13608a69bf feat: WordPress Monitor API + Site Availability Checker
- Add POST /api/wp-monitor endpoint for WP plugin data
- Add GET /api/wp-monitor for listing monitored sites
- Add checkSiteAvailability() function for HTTP health checks
- Add checkAllSitesAvailability() for batch checking
- Add /api/scripts/check-sites.ts for cron execution
- Add POST /api/monitor/check-sites for manual trigger

DeskCRM Task: #1556

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 23:12:32 +00:00

51 lines
1.5 KiB
TypeScript

#!/usr/bin/env npx tsx
/**
* Site Availability Checker Script
* Run via cron every 5-15 minutes to check if sites are online
*
* Usage:
* npx tsx api/scripts/check-sites.ts
*
* Cron example (every 10 minutes):
* */10 * * * * cd /path/to/DashDescomplicar && npx tsx api/scripts/check-sites.ts >> /var/log/check-sites.log 2>&1
*
* @author Descomplicar® | @link descomplicar.pt | @copyright 2026
*/
import 'dotenv/config'
import { checkAllSitesAvailability } from '../services/monitoring.js'
async function main() {
const startTime = Date.now()
console.log(`[${new Date().toISOString()}] Starting site availability check...`)
try {
const result = await checkAllSitesAvailability()
console.log(`[${new Date().toISOString()}] Check completed:`)
console.log(` - Sites checked: ${result.checked}`)
console.log(` - Up: ${result.up}`)
console.log(` - Down: ${result.down}`)
// Log any down sites
const downSites = result.results.filter(r => !r.available)
if (downSites.length > 0) {
console.log(` - Down sites:`)
for (const site of downSites) {
console.log(` - ${site.name}: ${site.error || 'No response'}`)
}
}
const elapsed = Date.now() - startTime
console.log(`[${new Date().toISOString()}] Done in ${elapsed}ms`)
// Exit with code 1 if any sites are down (useful for alerting)
process.exit(downSites.length > 0 ? 1 : 0)
} catch (error) {
console.error(`[${new Date().toISOString()}] Error:`, error)
process.exit(2)
}
}
main()