feat(scheduler+ntp): Memory-Alerts + NTP-Status freq/rms — v1.1.107

- Scheduler: runMemoryCheck() liest /proc/meminfo, feuert Warning bei ≥85% und Critical bei ≥95% RAM-Auslastung (5-Min-Intervall, 1h dedupe pro Severity-Key)
- NTP-Status-Karte: freq_ppm (±ppm mit Warnung bei >100) und rms_offset_ms werden jetzt angezeigt — Felder waren im Backend schon vorhanden, aber nie gerendert
- Alerts scopeDesc: mem.high-Trigger in beiden i18n-Dateien dokumentiert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-26 05:54:57 +02:00
parent 99b4225e64
commit ac6c580318
7 changed files with 110 additions and 6 deletions

View File

@@ -161,6 +161,29 @@ export default function NTPPage() {
/>
</Tooltip>
</Col>
{ntpStatus.freq_ppm != null && (
<Col xs={12} sm={6}>
<Tooltip title={t('ntp.statusCard.freqPpmHint')}>
<Statistic
title={t('ntp.statusCard.freqPpm')}
value={(ntpStatus.freq_ppm >= 0 ? '+' : '') + ntpStatus.freq_ppm.toFixed(3) + ' ppm'}
valueStyle={{
fontSize: 13,
color: Math.abs(ntpStatus.freq_ppm) > 100 ? '#d48806' : undefined,
}}
/>
</Tooltip>
</Col>
)}
{ntpStatus.rms_offset_ms != null && ntpStatus.rms_offset_ms > 0 && (
<Col xs={12} sm={6}>
<Statistic
title={t('ntp.statusCard.rmsOffset')}
value={ntpStatus.rms_offset_ms.toFixed(3) + ' ms'}
valueStyle={{ fontSize: 13 }}
/>
</Col>
)}
</Row>
) : (
<Typography.Text type="secondary">{t('ntp.statusCard.loading')}</Typography.Text>