mirror of
https://forgejo.altau.su/lego/lego-monitoring.git
synced 2026-03-10 04:41:10 +00:00
move existing stuff to archive dir (for now)
This commit is contained in:
parent
ae1204449c
commit
4fc491f61a
32 changed files with 0 additions and 0 deletions
90
archive-arch/service.py
Executable file
90
archive-arch/service.py
Executable file
|
|
@ -0,0 +1,90 @@
|
|||
#!/usr/bin/env python3
|
||||
import asyncio
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import signal
|
||||
|
||||
from alerting import alerts, delayed
|
||||
from misc import checks, cvars
|
||||
from misc.checkers import interval_checker, scheduled_checker
|
||||
from misc.common import TMP_DIR
|
||||
from misc.config import get_config
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
stopping = False
|
||||
|
||||
|
||||
def stop_gracefully(signum, frame):
|
||||
global stopping
|
||||
stopping = True
|
||||
|
||||
|
||||
def create_temp_dir() -> None:
|
||||
try:
|
||||
os.mkdir(str(TMP_DIR))
|
||||
except FileExistsError:
|
||||
pass
|
||||
os.chmod(str(TMP_DIR), 0o770)
|
||||
try:
|
||||
shutil.chown(str(TMP_DIR), user="root", group="alerting")
|
||||
except LookupError:
|
||||
shutil.chown(str(TMP_DIR), user="root", group="root")
|
||||
with open(str(TMP_DIR / "pid"), "w") as pf:
|
||||
pf.write(str(os.getpid()))
|
||||
|
||||
|
||||
async def main():
|
||||
create_temp_dir()
|
||||
|
||||
signal.signal(signal.SIGTERM, stop_gracefully)
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.add_signal_handler(signal.SIGUSR1, lambda: asyncio.create_task(delayed.handler()))
|
||||
|
||||
config = get_config()
|
||||
cvars.config.set(config)
|
||||
|
||||
client = await alerts.get_client()
|
||||
cvars.matrix_client.set(client)
|
||||
|
||||
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:
|
||||
task = tg.create_task(c)
|
||||
checker_tasks.add(task)
|
||||
while True:
|
||||
if stopping:
|
||||
await client.close()
|
||||
shutil.rmtree(str(TMP_DIR))
|
||||
raise SystemExit
|
||||
else:
|
||||
await asyncio.sleep(3)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Loading…
Add table
Add a link
Reference in a new issue