mirror of
https://forgejo.altau.su/lego/lego-monitoring.git
synced 2026-03-10 04:41:10 +00:00
remind about persistent alerts
This commit is contained in:
parent
2c234b2fd0
commit
f691180e9b
9 changed files with 115 additions and 30 deletions
|
|
@ -3,6 +3,7 @@ import asyncio
|
|||
import datetime
|
||||
import logging
|
||||
import signal
|
||||
from typing import Coroutine
|
||||
|
||||
from . import checks
|
||||
from .alerting import channel
|
||||
|
|
@ -10,7 +11,7 @@ from .checks.temp.sensors import print_readings
|
|||
from .config import enums as config_enums
|
||||
from .config import load_config
|
||||
from .core import cvars
|
||||
from .core.checkers import IntervalChecker
|
||||
from .core.checkers import BaseChecker, IntervalChecker, ScheduledChecker
|
||||
|
||||
stopping = False
|
||||
|
||||
|
|
@ -52,25 +53,35 @@ async def async_main():
|
|||
|
||||
check_sets = config_enums.CheckSet
|
||||
|
||||
checker_sets = {
|
||||
checker_sets: dict[config_enums.CheckSet, list[Coroutine | BaseChecker]] = {
|
||||
check_sets.START: [channel.send_start_alert()],
|
||||
check_sets.STOP: [], # this is checked later
|
||||
check_sets.CPU: [
|
||||
IntervalChecker(checks.cpu_check, interval=datetime.timedelta(minutes=3), persistent=True).run_checker()
|
||||
],
|
||||
check_sets.RAM: [
|
||||
IntervalChecker(checks.ram_check, interval=datetime.timedelta(minutes=1), persistent=True).run_checker()
|
||||
],
|
||||
check_sets.TEMP: [
|
||||
IntervalChecker(checks.temp_check, interval=datetime.timedelta(minutes=5), persistent=True).run_checker()
|
||||
],
|
||||
check_sets.CPU: [IntervalChecker(checks.cpu_check, interval=datetime.timedelta(minutes=3), 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.VULNIX: [
|
||||
IntervalChecker(
|
||||
checks.vulnix_check, interval=datetime.timedelta(days=3), persistent=True, send_any_state=True
|
||||
).run_checker()
|
||||
checks.vulnix_check,
|
||||
interval=datetime.timedelta(days=3),
|
||||
persistent=True,
|
||||
send_any_state=True,
|
||||
# As those are checked less often than daily, reminds could lead to awkward situations
|
||||
# when the vuln is fixed but you still get reminders about it for 2 more days.
|
||||
remind=False,
|
||||
)
|
||||
],
|
||||
check_sets.REMIND: [
|
||||
ScheduledChecker(
|
||||
checks.remind_check,
|
||||
period=datetime.timedelta(days=1),
|
||||
when=datetime.time(hour=0, minute=0),
|
||||
persistent=False,
|
||||
)
|
||||
],
|
||||
}
|
||||
|
||||
checker_sets[check_sets.REMIND][0].check_args = [checker_sets]
|
||||
|
||||
checkers = []
|
||||
for enabled_set in config.enabled_check_sets:
|
||||
for checker in checker_sets[enabled_set]:
|
||||
|
|
@ -81,6 +92,8 @@ async def async_main():
|
|||
async with asyncio.TaskGroup() as tg:
|
||||
checker_tasks: set[asyncio.Task] = set()
|
||||
for c in checkers:
|
||||
if isinstance(c, BaseChecker):
|
||||
c = c.run_checker()
|
||||
task = tg.create_task(c)
|
||||
checker_tasks.add(task)
|
||||
while True:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue