kiwi-simple-metrics/kiwi_simple_metrics/metrics/memory.py
Jörn-Michael Miehe 8b532829a5 improved aggregation by refactoring metrics._report
ReportData mutable, Report immutable
class Report has builtin `aggregate`
2023-08-31 15:23:00 +00:00

43 lines
1 KiB
Python

import psutil
from ..settings import SETTINGS
from ._report import Report, ReportData
def _hwdata() -> list[ReportData]:
vmem = psutil.virtual_memory()
swap = psutil.swap_memory()
if SETTINGS.memory.swap == "exclude":
return [ReportData(
name=SETTINGS.memory.name_ram,
value=vmem.percent,
)]
elif SETTINGS.memory.swap == "combine":
return [ReportData.from_free_total(
name=SETTINGS.memory.name,
free=vmem.available + swap.free,
total=vmem.total + swap.total,
)]
else: # SETTINGS.memory.swap == "include"
return [ReportData(
name=SETTINGS.memory.name_ram,
value=vmem.percent,
), ReportData(
name=SETTINGS.memory.name_swap,
value=swap.percent,
)]
def memory() -> Report | None:
if not SETTINGS.memory.enabled:
return None
data = _hwdata()
return Report.aggregate(
settings=SETTINGS.memory,
data=data,
)