Update health_monitor.py

This commit is contained in:
MacRimi
2026-02-28 17:31:03 +01:00
parent 95fa2440ce
commit cb96bea73d

View File

@@ -2340,6 +2340,8 @@ class HealthMonitor:
try: try:
apt_history_path = '/var/log/apt/history.log' apt_history_path = '/var/log/apt/history.log'
last_update_days = None last_update_days = None
sec_result = None
age_result = None
if os.path.exists(apt_history_path): if os.path.exists(apt_history_path):
try: try:
@@ -2422,13 +2424,16 @@ class HealthMonitor:
# 1+ year without updates - WARNING # 1+ year without updates - WARNING
status = 'WARNING' status = 'WARNING'
reason = f'System not updated in {last_update_days} days (>1 year)' reason = f'System not updated in {last_update_days} days (>1 year)'
health_persistence.record_error( age_result = health_persistence.record_error(
error_key='system_age', error_key='system_age',
category='updates', category='updates',
severity='WARNING', severity='WARNING',
reason=reason, reason=reason,
details={'days': last_update_days, 'update_count': update_count} details={'days': last_update_days, 'update_count': update_count, 'dismissable': True}
) )
if age_result and age_result.get('type') == 'skipped_acknowledged':
status = 'INFO'
reason = None
elif kernel_pve_updates_packages: elif kernel_pve_updates_packages:
# Informational: Kernel or critical PVE components need update # Informational: Kernel or critical PVE components need update
status = 'INFO' status = 'INFO'
@@ -2444,7 +2449,9 @@ class HealthMonitor:
reason = 'Failed to check for updates (apt-get error)' reason = 'Failed to check for updates (apt-get error)'
# Build checks dict for updates sub-items # Build checks dict for updates sub-items
update_age_status = 'CRITICAL' if (last_update_days and last_update_days >= 548) else ('WARNING' if (last_update_days and last_update_days >= 365) else 'OK') age_dismissed = bool(age_result and age_result.get('type') == 'skipped_acknowledged')
update_age_status = 'CRITICAL' if (last_update_days and last_update_days >= 548) else (
'INFO' if age_dismissed else ('WARNING' if (last_update_days and last_update_days >= 365) else 'OK'))
sec_dismissed = security_updates_packages and sec_result and sec_result.get('type') == 'skipped_acknowledged' sec_dismissed = security_updates_packages and sec_result and sec_result.get('type') == 'skipped_acknowledged'
sec_status = 'INFO' if sec_dismissed else ('WARNING' if security_updates_packages else 'OK') sec_status = 'INFO' if sec_dismissed else ('WARNING' if security_updates_packages else 'OK')
kernel_status = 'INFO' if kernel_pve_updates_packages else 'OK' kernel_status = 'INFO' if kernel_pve_updates_packages else 'OK'
@@ -2461,6 +2468,7 @@ class HealthMonitor:
'status': update_age_status, 'status': update_age_status,
'detail': f'Last updated {last_update_days} day(s) ago' if last_update_days is not None else 'Unknown', 'detail': f'Last updated {last_update_days} day(s) ago' if last_update_days is not None else 'Unknown',
'dismissable': False if update_age_status == 'CRITICAL' else True if update_age_status == 'WARNING' else False, 'dismissable': False if update_age_status == 'CRITICAL' else True if update_age_status == 'WARNING' else False,
'dismissed': bool(age_dismissed),
'error_key': 'system_age' 'error_key': 'system_age'
}, },
'pending_updates': { 'pending_updates': {