46 lines
1.4 KiB
Python
Executable File
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()
|