Wie werde ich bei ECC-Fehlern unter Linux benachrichtigt?

23

Wie werde ich benachrichtigt, wenn ein mit ECC-Speicher ausgestatteter Linux-Computer einen Speicherfehler erkennt? Ich interessiere mich sowohl für korrigierbare als auch für nicht korrigierbare Fehler.

  • Wenn eine Nachricht an dmesg / the syslog geschrieben wird, ist dies bereits in Ordnung, aber ich würde gerne wissen, wonach ich suchen soll
  • Das Installieren zusätzlicher Daemons (wie SmartMontools für Festplatten) ist akzeptabel
  • Nagios / Icinga-Überwachung wäre ein anderer Weg
  • Nicht alle zu überwachenden Maschinen verfügen über IPMI

Systeme von Interesse haben Supermicro-Boards (X9SCM-F), in Bezug auf einen HP N54L Microserver bin ich nur neugierig, aber es interessiert mich nicht allzu sehr. Alle Systeme laufen unter Debian oder Ubuntu Linux.

Jens Erat
quelle
Bitte beschreiben Sie den Servertyp und die Marke / das Modell, die Version der Betriebssystemverteilung und alle anderen relevanten Hardwaredetails.
ewwhite
2
Ich wusste nicht einmal, dass es gemeldet wurde ...
Halfgaar
Das Ausführen mcelogwährend der Überwachung des Syslogs scheint der richtige Weg zu sein.
Jens Erat

Antworten:

6

Der Linux-Kernel unterstützt die Fehlererkennungs- und -korrekturfunktionen ( EDAC ) einiger Chipsätze. Auf einem unterstützten System mit ECC kann über sysfs auf den Status Ihres Speichercontrollers zugegriffen werden:

/sys/devices/system/edac/mc

Der Verzeichnisbaum unter diesen Speicherorten sollte Ihrer Hardware entsprechen, z.

/sys/devices/system/edac/mc/mc0/csrow2/power
/sys/devices/system/edac/mc/mc0/csrow0/power
/sys/devices/system/edac/mc/mc0/dimm2/power
/sys/devices/system/edac/mc/mc0/dimm0/power
/sys/devices/system/edac/mc/mc1/power
...

Abhängig von Ihrer Hardware müssen Sie möglicherweise explizit den richtigen edac-Treiber laden, siehe:

find /lib/modules/$(uname -r) -name '*edac*'

Das edac-utilsPaket enthält ein Befehlszeilen-Frontend und eine Bibliothek für den Zugriff auf diese Daten, z.

edac-util -rfull          
mc0:csrow0:mc#0memory#0:CE:0
mc0:csrow2:mc#0memory#2:CE:0
mc0:noinfo:all:UE:0
mc0:noinfo:all:CE:0
mc1:noinfo:all:UE:0
mc1:noinfo:all:CE:0

Sie können eine Art Cron-Job eac-utileinrichten, der die Ergebnisse regelmäßig aufruft und in Ihr Überwachungssystem einspeist, wo Sie dann einige Benachrichtigungen konfigurieren können.

Darüber hinaus ist Laufen mcelogin der Regel eine gute Idee. Abhängig vom System, aber nicht korrigierbare / korrigierbare ECC-Fehler werden wahrscheinlich auch als Machine Check Exception ( MCE ) gemeldet . Ich meine, auch kurze Zeiträume der CPU-Drosselung aufgrund höherer Temperaturen werden als MCE gemeldet.

maxschlepzig
quelle
9

mcelogüberwacht den Speichercontroller und meldet Speicherfehlerereignisse an Syslog. In einigen Konfigurationen können fehlerhafte Speicherseiten offline geschaltet werden . Dies gilt natürlich zusätzlich zu der üblichen Verwendung zur Überwachung von Maschinenprüfungsausnahmen und einer Reihe anderer Hardwarefehler.

Die meisten Linux-Distributionen haben einen Dienst eingerichtet, um ihn als Daemon auszuführen, z. B. für EL 6:

chkconfig mcelog on
service mcelog start
Michael Hampton
quelle
Wird von Ubuntu nicht mehr unterstützt. Die Installation gibt Fehler.
DimiDak
Ja, danke, ich habe gesehen, dass, wenn ich mich nicht irre, es über Ubuntu18 spricht, aber es funktioniert auch nicht auf Ubuntu 14.
DimiDak
@DimiDak Das ist ein anderes Thema und hier nicht relevant. Sie können eine neue Frage dazu stellen, wenn Sie Hilfe benötigen.
Michael Hampton
Der Typ, der die Frage gestellt hat, sagt "Auf allen Systemen wird Debian oder Ubuntu ausgeführt" und Ihre Antwort funktioniert nicht. Also ist es ziemlich relevant ...
DimiDak
6

Dies hängt von Ihrer Serverhardware ab. Eine Whitebox oder ein Supermicro-System handhaben dies anders als ein Dell, HP oder IBM ...

Eine der Mehrwertfunktionen von High-End-Servern besteht darin, dass eine gewisse Hardware- / Betriebssystemintegration vorhanden ist. Schönere Server melden als Teil der Verwaltungsagenten und / oder der Out-of-Band-Verwaltungslösung (ILO, DRAC, IPMI), wonach Sie suchen.

Sie sollten die Tools auf Ihrer Hardwareplattform verwenden.

Auszug aus einem HP ProLiant Server unter Linux und den HP Management Agents:

Trap-ID=6056
ECC Memory Correctable Errors  detected.

und

Trap-ID=6052
Advanced ECC Memory  Engaged

oder eine strengere

Trap-ID=6029
A correctable memory log entry indicates a memory module needs to be
replaced.

oder das Schlimmste ... Ignoriere einen Fehler für 6 Tage, bis der Server wegen schlechten RAM abstürzt

0004 Repaired       22:21  12/01/2008 22:21  12/01/2008 0001
LOG: Corrected Memory Error threshold exceeded (Slot 1, Memory Module 1)

0007 Repaired       02:58  12/07/2008 02:58  12/07/2008 0001
LOG: POST Error: 201-Memory Error Single-bit error occured during 
memory initialization, 
Board 1, DIMM 1. Bank containing DIMM(s) has been disabled.

0008 Repaired       19:31  12/08/2009 19:31  12/08/2009 0001
LOG: ASR Detected by System ROM

Diese wurden protokolliert sowie SNMP-Traps und E-Mails gesendet.

Generell werden im Kernel-Ringpuffer Machine Check Exceptions angezeigt , sodass Sie mcelog überprüfen dmesgoder ausführen können . In meinen Erfahrungen mit Supermicro-Geräten ohne IPMI hat das nicht alles erfasst, und ich hatte immer noch RAM-Fehler, die durch die Risse rutschten und Ausfälle verursachten. Leider führte dies zu archaischen RAM-Einbrennrichtlinien vor der Systembereitstellung.

ewwhite
quelle