diff --git a/src/lego_monitoring/__init__.py b/src/lego_monitoring/__init__.py index 16bde25..75e1312 100644 --- a/src/lego_monitoring/__init__.py +++ b/src/lego_monitoring/__init__.py @@ -56,7 +56,11 @@ async def async_main(): sender.send_alert(checks.generate_start_alert()), 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.TEMP: [IntervalChecker(checks.temp_check, interval=datetime.timedelta(minutes=5), persistent=True)], check_sets.VULNIX: [ diff --git a/src/lego_monitoring/checks/vulnix/__init__.py b/src/lego_monitoring/checks/vulnix/__init__.py index 2e866e6..c25bfd6 100644 --- a/src/lego_monitoring/checks/vulnix/__init__.py +++ b/src/lego_monitoring/checks/vulnix/__init__.py @@ -2,7 +2,6 @@ from socket import gethostname from lego_monitoring.alerting.alert import Alert from lego_monitoring.alerting.enum import AlertType, Severity -from lego_monitoring.alerting.sender import send_alert from ..utils import format_for_healthchecks_slug from .vulnix import get_vulnix_output @@ -16,15 +15,14 @@ async def vulnix_check() -> list[Alert]: try: vulnix_output = get_vulnix_output(IS_TESTING) except Exception as e: - await send_alert( + return [ Alert( - alert_type=AlertType.ERROR, + AlertType.VULN, message=f"Exception {type(e).__name__} while calling vulnix: {e}", severity=Severity.CRITICAL, healthchecks_slug=slug, ) - ) - return [] + ] for finding in vulnix_output: if not IS_TESTING: non_whitelisted_cves = [k for k in finding.description if k not in finding.whitelisted] diff --git a/src/lego_monitoring/core/checkers.py b/src/lego_monitoring/core/checkers.py index 78168bf..d3e4a0f 100644 --- a/src/lego_monitoring/core/checkers.py +++ b/src/lego_monitoring/core/checkers.py @@ -87,14 +87,19 @@ class BaseChecker: class IntervalChecker(BaseChecker): _: KW_ONLY interval: datetime.timedelta + ignore_first_run: bool = False async def run_checker(self) -> None: interval_secs = self.interval.total_seconds() + ignore_first_run = self.ignore_first_run while True: logging.info(f"Calling {self.check.__name__}") result = await self._call_check() 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)