mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-08-02 22:06:31 +00:00
update 1.2.2.2 beta
This commit is contained in:
Binary file not shown.
@@ -1 +1 @@
|
|||||||
24f4dac2561773ea88bd1eb866ce25e7908d54435932ea3a3f265f3e6fe1ecc0 ProxMenux-1.2.2.2-beta.AppImage
|
82e84f7428c85a14c0eb4f8e779699548274858f22af3ffc913892634280c8b5 ProxMenux-1.2.2.2-beta.AppImage
|
||||||
|
|||||||
@@ -1400,7 +1400,7 @@ class HealthMonitor:
|
|||||||
category='temperature',
|
category='temperature',
|
||||||
severity='WARNING',
|
severity='WARNING',
|
||||||
reason=reason,
|
reason=reason,
|
||||||
details={'temperature': max_temp, 'duration': actual_duration, 'dismissable': False}
|
details={'temperature': max_temp, 'duration': actual_duration, 'dismissable': True}
|
||||||
)
|
)
|
||||||
elif len(recovery_samples) >= 3:
|
elif len(recovery_samples) >= 3:
|
||||||
# Temperature has been ≤80°C for 30 seconds - clear the error
|
# Temperature has been ≤80°C for 30 seconds - clear the error
|
||||||
@@ -1618,7 +1618,7 @@ class HealthMonitor:
|
|||||||
'mount': mount_point,
|
'mount': mount_point,
|
||||||
'used': str(round(usage.percent, 1)),
|
'used': str(round(usage.percent, 1)),
|
||||||
'available': avail_str,
|
'available': avail_str,
|
||||||
'dismissable': False,
|
'dismissable': True,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -1649,7 +1649,7 @@ class HealthMonitor:
|
|||||||
'pool_name': real_pool,
|
'pool_name': real_pool,
|
||||||
'health': pool_info.get('health', ''),
|
'health': pool_info.get('health', ''),
|
||||||
'device': f'zpool:{real_pool}',
|
'device': f'zpool:{real_pool}',
|
||||||
'dismissable': False,
|
'dismissable': True,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
@@ -2760,7 +2760,7 @@ class HealthMonitor:
|
|||||||
'device': disk,
|
'device': disk,
|
||||||
'error_count': error_count,
|
'error_count': error_count,
|
||||||
'smart_status': smart_health,
|
'smart_status': smart_health,
|
||||||
'dismissable': False,
|
'dismissable': True,
|
||||||
'error_key': error_key,
|
'error_key': error_key,
|
||||||
}
|
}
|
||||||
elif smart_ok:
|
elif smart_ok:
|
||||||
@@ -2779,7 +2779,7 @@ class HealthMonitor:
|
|||||||
'device': disk,
|
'device': disk,
|
||||||
'error_count': error_count,
|
'error_count': error_count,
|
||||||
'smart_status': smart_health,
|
'smart_status': smart_health,
|
||||||
'dismissable': False,
|
'dismissable': True,
|
||||||
'error_key': error_key,
|
'error_key': error_key,
|
||||||
}
|
}
|
||||||
elif smart_health == 'FAILED':
|
elif smart_health == 'FAILED':
|
||||||
@@ -2799,7 +2799,7 @@ class HealthMonitor:
|
|||||||
'serial': resolved_serial or '',
|
'serial': resolved_serial or '',
|
||||||
'error_count': error_count,
|
'error_count': error_count,
|
||||||
'smart_status': smart_health,
|
'smart_status': smart_health,
|
||||||
'sample': sample, 'dismissable': False}
|
'sample': sample, 'dismissable': True}
|
||||||
)
|
)
|
||||||
disk_results[display] = {
|
disk_results[display] = {
|
||||||
'status': severity,
|
'status': severity,
|
||||||
@@ -2807,7 +2807,7 @@ class HealthMonitor:
|
|||||||
'device': disk,
|
'device': disk,
|
||||||
'error_count': error_count,
|
'error_count': error_count,
|
||||||
'smart_status': smart_health,
|
'smart_status': smart_health,
|
||||||
'dismissable': False,
|
'dismissable': True,
|
||||||
'error_key': error_key,
|
'error_key': error_key,
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
@@ -3026,13 +3026,13 @@ class HealthMonitor:
|
|||||||
category='network',
|
category='network',
|
||||||
severity='CRITICAL',
|
severity='CRITICAL',
|
||||||
reason=alert_reason or 'Interface DOWN',
|
reason=alert_reason or 'Interface DOWN',
|
||||||
details={'interface': interface, 'dismissable': False}
|
details={'interface': interface, 'dismissable': True}
|
||||||
)
|
)
|
||||||
|
|
||||||
interface_details[interface] = {
|
interface_details[interface] = {
|
||||||
'status': 'CRITICAL',
|
'status': 'CRITICAL',
|
||||||
'reason': alert_reason or 'Interface DOWN',
|
'reason': alert_reason or 'Interface DOWN',
|
||||||
'dismissable': False
|
'dismissable': True
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
active_interfaces.add(interface)
|
active_interfaces.add(interface)
|
||||||
@@ -4263,7 +4263,7 @@ class HealthMonitor:
|
|||||||
'log_persistent_errors': {'active': persistent_count > 0, 'severity': 'WARNING',
|
'log_persistent_errors': {'active': persistent_count > 0, 'severity': 'WARNING',
|
||||||
'reason': f'{persistent_count} recurring pattern(s) over 15+ min:\n' + '\n'.join(f' - {s}' for s in persist_samples) if persistent_count else ''},
|
'reason': f'{persistent_count} recurring pattern(s) over 15+ min:\n' + '\n'.join(f' - {s}' for s in persist_samples) if persistent_count else ''},
|
||||||
'log_critical_errors': {'active': unique_critical_count > 0, 'severity': 'CRITICAL',
|
'log_critical_errors': {'active': unique_critical_count > 0, 'severity': 'CRITICAL',
|
||||||
'reason': f'{unique_critical_count} critical error(s) found', 'dismissable': False},
|
'reason': f'{unique_critical_count} critical error(s) found', 'dismissable': True},
|
||||||
}
|
}
|
||||||
|
|
||||||
# Track which sub-checks were dismissed
|
# Track which sub-checks were dismissed
|
||||||
@@ -4333,7 +4333,7 @@ class HealthMonitor:
|
|||||||
'log_critical_errors': {
|
'log_critical_errors': {
|
||||||
'status': _log_check_status('log_critical_errors', unique_critical_count > 0, 'CRITICAL'),
|
'status': _log_check_status('log_critical_errors', unique_critical_count > 0, 'CRITICAL'),
|
||||||
'detail': reason if unique_critical_count > 0 else 'No critical errors',
|
'detail': reason if unique_critical_count > 0 else 'No critical errors',
|
||||||
'dismissable': False,
|
'dismissable': True,
|
||||||
'error_key': 'log_critical_errors'
|
'error_key': 'log_critical_errors'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4658,7 +4658,7 @@ class HealthMonitor:
|
|||||||
health_persistence.record_error(
|
health_persistence.record_error(
|
||||||
error_key='system_age', category='updates',
|
error_key='system_age', category='updates',
|
||||||
severity='CRITICAL', reason=reason,
|
severity='CRITICAL', reason=reason,
|
||||||
details={'days': last_update_days, 'update_count': update_count, 'dismissable': False}
|
details={'days': last_update_days, 'update_count': update_count, 'dismissable': True}
|
||||||
)
|
)
|
||||||
elif last_update_days and last_update_days >= 365:
|
elif last_update_days and last_update_days >= 365:
|
||||||
status = 'WARNING'
|
status = 'WARNING'
|
||||||
@@ -5592,7 +5592,7 @@ class HealthMonitor:
|
|||||||
'storage_name': storage_name,
|
'storage_name': storage_name,
|
||||||
'storage_type': storage.get('type', 'unknown'),
|
'storage_type': storage.get('type', 'unknown'),
|
||||||
'status_detail': status_detail,
|
'status_detail': status_detail,
|
||||||
'dismissable': False
|
'dismissable': True
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -5601,7 +5601,7 @@ class HealthMonitor:
|
|||||||
'reason': reason,
|
'reason': reason,
|
||||||
'type': storage.get('type', 'unknown'),
|
'type': storage.get('type', 'unknown'),
|
||||||
'status': status_detail,
|
'status': status_detail,
|
||||||
'dismissable': False
|
'dismissable': True
|
||||||
}
|
}
|
||||||
|
|
||||||
# Build checks from storage_details
|
# Build checks from storage_details
|
||||||
@@ -5612,14 +5612,14 @@ class HealthMonitor:
|
|||||||
checks[st_name] = {
|
checks[st_name] = {
|
||||||
'status': 'INFO',
|
'status': 'INFO',
|
||||||
'detail': f"[Startup] {st_info.get('reason', 'Unavailable')} (checking...)",
|
'detail': f"[Startup] {st_info.get('reason', 'Unavailable')} (checking...)",
|
||||||
'dismissable': False,
|
'dismissable': True,
|
||||||
'grace_period': True
|
'grace_period': True
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
checks[st_name] = {
|
checks[st_name] = {
|
||||||
'status': 'CRITICAL',
|
'status': 'CRITICAL',
|
||||||
'detail': st_info.get('reason', 'Unavailable'),
|
'detail': st_info.get('reason', 'Unavailable'),
|
||||||
'dismissable': False
|
'dismissable': True
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add excluded unavailable storages as INFO (not as errors)
|
# Add excluded unavailable storages as INFO (not as errors)
|
||||||
|
|||||||
Reference in New Issue
Block a user