36 lines
1019 B
Python
36 lines
1019 B
Python
import os
|
|
import sys
|
|
import json
|
|
import time
|
|
|
|
HEALTH_FILE = "/tmp/health_status.json"
|
|
|
|
if not os.path.exists(HEALTH_FILE):
|
|
print("Healthcheck ÉCHEC : Fichier d'état introuvable.")
|
|
sys.exit(1)
|
|
|
|
try:
|
|
with open(HEALTH_FILE, "r", encoding="utf-8") as f:
|
|
data = json.load(f)
|
|
|
|
interval = int(os.getenv("CHECK_INTERVAL", "3600"))
|
|
# Marge de sécurité (ex: 2x l'intervalle + 10 min) avant de déclarer le conteneur unhealthy
|
|
max_allowed_age = interval * 2 + 600
|
|
|
|
last_heartbeat = data.get("timestamp", 0)
|
|
status = data.get("status", "unknown")
|
|
age = time.time() - last_heartbeat
|
|
|
|
if age > max_allowed_age:
|
|
print(f"Healthcheck ÉCHEC : Fichier trop ancien ({int(age)}s > {max_allowed_age}s)")
|
|
sys.exit(1)
|
|
|
|
if status in ("ok", "running"):
|
|
sys.exit(0)
|
|
else:
|
|
print(f"Healthcheck ÉCHEC : Statut du script est '{status}'")
|
|
sys.exit(1)
|
|
|
|
except Exception as e:
|
|
print(f"Healthcheck ÉCHEC : Erreur de lecture : {e}")
|
|
sys.exit(1) |