Files
voyager/telemetry/collector.py
T

46 lines
1.4 KiB
Python
Executable File

#!/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()