ignore first cpu check to prevent guaranteed alert on machine startup

This commit is contained in:
Alex Tau 2025-08-16 13:35:15 +03:00
parent c355583f59
commit 9b884788a6
2 changed files with 11 additions and 2 deletions

View file

@ -56,7 +56,11 @@ async def async_main():
sender.send_alert(checks.generate_start_alert()), sender.send_alert(checks.generate_start_alert()),
IntervalChecker(checks.self_check, interval=datetime.timedelta(minutes=5), persistent=False), IntervalChecker(checks.self_check, interval=datetime.timedelta(minutes=5), persistent=False),
], ],
check_sets.CPU: [IntervalChecker(checks.cpu_check, interval=datetime.timedelta(minutes=3), persistent=True)], check_sets.CPU: [
IntervalChecker(
checks.cpu_check, interval=datetime.timedelta(minutes=3), persistent=True, ignore_first_run=True
)
],
check_sets.RAM: [IntervalChecker(checks.ram_check, interval=datetime.timedelta(minutes=1), persistent=True)], check_sets.RAM: [IntervalChecker(checks.ram_check, interval=datetime.timedelta(minutes=1), persistent=True)],
check_sets.TEMP: [IntervalChecker(checks.temp_check, interval=datetime.timedelta(minutes=5), persistent=True)], check_sets.TEMP: [IntervalChecker(checks.temp_check, interval=datetime.timedelta(minutes=5), persistent=True)],
check_sets.VULNIX: [ check_sets.VULNIX: [

View file

@ -87,14 +87,19 @@ class BaseChecker:
class IntervalChecker(BaseChecker): class IntervalChecker(BaseChecker):
_: KW_ONLY _: KW_ONLY
interval: datetime.timedelta interval: datetime.timedelta
ignore_first_run: bool = False
async def run_checker(self) -> None: async def run_checker(self) -> None:
interval_secs = self.interval.total_seconds() interval_secs = self.interval.total_seconds()
ignore_first_run = self.ignore_first_run
while True: while True:
logging.info(f"Calling {self.check.__name__}") logging.info(f"Calling {self.check.__name__}")
result = await self._call_check() result = await self._call_check()
logging.info(f"Got {len(result)} alerts") logging.info(f"Got {len(result)} alerts")
await self._handle_alerts(result) if ignore_first_run:
ignore_first_run = False
else:
await self._handle_alerts(result)
await asyncio.sleep(interval_secs) await asyncio.sleep(interval_secs)