disabling checks

This commit is contained in:
Alex 2025-01-18 14:47:56 +03:00
parent 40a92932a2
commit ae1204449c
4 changed files with 34 additions and 14 deletions

View file

@ -28,3 +28,7 @@ ForceCommand /opt/lego-monitoring/wrappers/login_wrapper.sh
* `prettyprint.py` -- check and print all sensors
* `service.py` -- launch service
* `assets/lego-monitoring.service` is a systemd unit that starts `service.py`
### Disabling checks
Put names of checks into config's `disabled_checks` to disable them. See `service.py` for check names.

View file

@ -26,5 +26,8 @@
"login": {
"hostname": "example.com"
}
}
},
"disabled_checks": [
"nonexistent_check"
]
}

View file

@ -55,6 +55,7 @@ class ChecksConfig(NestedDeserializableDataclass):
class Config(NestedDeserializableDataclass):
matrix: MatrixConfig
checks: ChecksConfig
disabled_checks: list[str]
def get_config() -> Config:

View file

@ -44,22 +44,34 @@ async def main():
loop = asyncio.get_event_loop()
loop.add_signal_handler(signal.SIGUSR1, lambda: asyncio.create_task(delayed.handler()))
cvars.config.set(get_config())
config = get_config()
cvars.config.set(config)
client = await alerts.get_client()
cvars.matrix_client.set(client)
checkers = (
interval_checker(checks.temp_check, datetime.timedelta(minutes=5)),
interval_checker(checks.cpu_check, datetime.timedelta(minutes=5)),
interval_checker(checks.ups_check, datetime.timedelta(minutes=5)),
interval_checker(checks.ram_check, datetime.timedelta(minutes=1)),
interval_checker(checks.vuln_check, datetime.timedelta(days=1)),
interval_checker(checks.raid_check, datetime.timedelta(days=1)),
interval_checker(checks.disk_wearout_check, datetime.timedelta(days=1)),
scheduled_checker(
checks.docker_registry_check, period=datetime.timedelta(days=1), when=datetime.time(hour=0, minute=0)
),
)
checker_sets = {
"temp": [interval_checker(checks.temp_check, datetime.timedelta(minutes=5))],
"cpu": [interval_checker(checks.cpu_check, datetime.timedelta(minutes=5))],
"ups": [interval_checker(checks.ups_check, datetime.timedelta(minutes=5))],
"ram": [interval_checker(checks.ram_check, datetime.timedelta(minutes=1))],
"vuln": [interval_checker(checks.vuln_check, datetime.timedelta(days=1))],
"raid": [interval_checker(checks.raid_check, datetime.timedelta(days=1))],
"disk_wearout": [interval_checker(checks.disk_wearout_check, datetime.timedelta(days=1))],
"docker_registry": [
scheduled_checker(
checks.docker_registry_check, period=datetime.timedelta(days=1), when=datetime.time(hour=0, minute=0)
)
],
}
for disabled_key in config.disabled_checks:
if disabled_key in checker_sets:
del checker_sets[disabled_key]
checkers = []
for _, s in checker_sets.items():
for checker in s:
checkers.append(checker)
async with asyncio.TaskGroup() as tg:
checker_tasks: set[asyncio.Task] = set()
for c in checkers: