#!/usr/bin/env python3 import logging from pathlib import Path from collectors.docker import collect as docker_collect from collectors.backup import collect as backup_collect from collectors.certificates import collect as certificates_collect from collectors.git import collect as git_collect from collectors.monitoring import collect as monitoring_collect from collectors.system import collect as system_collect from collectors.wireguard import collect as wireguard_collect from .common import write_json OUTPUT = Path("/opt/docker/caddy/site/voyager/data/status.json") LOGGER = logging.getLogger(__name__) def collect_safely(name, collector): try: return collector() except Exception: LOGGER.exception("%s telemetry collection failed", name) return { "state": "offline", "health": "unavailable", "summary": "Unavailable", "detail": f"{name} telemetry unavailable", } def main(): payload = { "systems": { "backup": backup_collect(), "git": git_collect(), "docker": docker_collect(), "certificates": certificates_collect(), "system": system_collect(), "wireguard": collect_safely("WireGuard", wireguard_collect), "monitoring": collect_safely("Monitoring", monitoring_collect), } } write_json(OUTPUT, payload) if __name__ == "__main__": main()