Exploitation

Automatisez la collecte, gardez la preuve de chaque exécution

Wasteless choisit le planificateur de votre système, relance la pipeline toutes les cinq minutes par défaut et signale les collectes incomplètes.

Vérifié avec le code du produit8 minOps et platform engineers

Les quatre commandes utiles

Terminal
wasteless schedule
wasteless status
wasteless collect
wasteless unschedule
CommandeFonction
scheduleInstaller ou réinstaller la collecte périodique
statusAfficher l'état de l'interface et du planificateur
collectExécuter immédiatement une collecte
unscheduleRetirer la planification système

Ce que lance une collecte

ÉtapesOpérationsDépendance
1 à 6CloudWatch, EC2 peu utilisée, EC2 arrêtée, EBS, EIP, snapshotsboto3 et PostgreSQL
7 à 10Load balancer, NAT Gateway, VPC, gp2 vers gp3Steampipe

Un verrou atomique empêche deux collectes de s'exécuter simultanément. Si Steampipe manque, les quatre dernières étapes sont ignorées avec un avertissement et collection_runs enregistre une exécution partielle.

Un planificateur adapté à chaque plateforme

PlateformeMécanismeÀ retenir
macOSlaunchd LaunchAgentChargement et intervalle configuré
Linux avec systemdTimer utilisateurenable-linger permet l'exécution sans session SSH
Linux ou WSL sans systemdcrontabL'environnement doit rester actif

Trois jobs dépendent de l'interface FastAPI

JobRôle
sync_aws_jobSynchroniser l'état des ressources et rendre obsolètes certaines recommandations
grace_executor_jobExécuter les actions planifiées arrivées à échéance
terraform_pr_sync_jobSuivre les pull requests Terraform ouvertes

Ces jobs APScheduler sont distincts de la planification système. Ils ne fonctionnent que lorsque FastAPI est actif.

Contrôlez les exécutions

Logs
wasteless logs
tail -100 ~/.wasteless.log
grep -i error ~/.wasteless.log | tail -20
PostgreSQL
SELECT ran_at, full_run, skipped_steps
FROM collection_runs
ORDER BY ran_at DESC
LIMIT 10;

La fréquence se règle avec COLLECT_INTERVAL_SEC dans wasteless.sh. Relancez wasteless schedule après modification.

Voir la source sur GitHub