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 * `prettyprint.py` -- check and print all sensors
* `service.py` -- launch service * `service.py` -- launch service
* `assets/lego-monitoring.service` is a systemd unit that starts `service.py` * `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": { "login": {
"hostname": "example.com" "hostname": "example.com"
} }
} },
"disabled_checks": [
"nonexistent_check"
]
} }

View file

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

View file

@ -44,22 +44,34 @@ async def main():
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
loop.add_signal_handler(signal.SIGUSR1, lambda: asyncio.create_task(delayed.handler())) 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() client = await alerts.get_client()
cvars.matrix_client.set(client) cvars.matrix_client.set(client)
checkers = (
interval_checker(checks.temp_check, datetime.timedelta(minutes=5)), checker_sets = {
interval_checker(checks.cpu_check, datetime.timedelta(minutes=5)), "temp": [interval_checker(checks.temp_check, datetime.timedelta(minutes=5))],
interval_checker(checks.ups_check, datetime.timedelta(minutes=5)), "cpu": [interval_checker(checks.cpu_check, datetime.timedelta(minutes=5))],
interval_checker(checks.ram_check, datetime.timedelta(minutes=1)), "ups": [interval_checker(checks.ups_check, datetime.timedelta(minutes=5))],
interval_checker(checks.vuln_check, datetime.timedelta(days=1)), "ram": [interval_checker(checks.ram_check, datetime.timedelta(minutes=1))],
interval_checker(checks.raid_check, datetime.timedelta(days=1)), "vuln": [interval_checker(checks.vuln_check, datetime.timedelta(days=1))],
interval_checker(checks.disk_wearout_check, datetime.timedelta(days=1)), "raid": [interval_checker(checks.raid_check, datetime.timedelta(days=1))],
scheduled_checker( "disk_wearout": [interval_checker(checks.disk_wearout_check, datetime.timedelta(days=1))],
checks.docker_registry_check, period=datetime.timedelta(days=1), when=datetime.time(hour=0, minute=0) "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: async with asyncio.TaskGroup() as tg:
checker_tasks: set[asyncio.Task] = set() checker_tasks: set[asyncio.Task] = set()
for c in checkers: for c in checkers: