¿Cómo me notifican los errores de ECC en Linux?

23

¿Cómo me notifican cuando una máquina Linux equipada con memoria ECC reconoce una falla de memoria? Estoy interesado en los errores corregibles y no corregibles.

  • si un mensaje está escrito en dmesg / syslog, esto ya está bien, pero me encantaría saber qué buscar
  • instalar demonios adicionales (como smartmontools para discos duros) es aceptable
  • El monitoreo de Nagios / Icinga sería otro camino a seguir
  • no todas las máquinas a monitorear tienen IPMI

Los sistemas de interés tienen placas Supermicro (X9SCM-F), con respecto a un microservidor HP N54L, solo tengo curiosidad, pero no me importa demasiado. Todos los sistemas ejecutan Debian o Ubuntu Linux.

Jens Erat
fuente
Describa el tipo de servidor y la marca / modelo, la versión de distribución del sistema operativo y cualquier otro detalle de hardware relevante.
ewwhite
2
Ni siquiera sabía que se informaba ...
Halfgaar
Correr mcelogmientras se monitorea el syslog parece ser el camino a seguir.
Jens Erat

Respuestas:

6

El kernel de Linux admite las características de detección y corrección de errores ( EDAC ) de algunos conjuntos de chips. En un sistema compatible con ECC, se puede acceder al estado de su controlador de memoria a través de sysfs:

/sys/devices/system/edac/mc

El árbol de directorios debajo de esas ubicaciones debe corresponder a su hardware, por ejemplo:

/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
...

Dependiendo de su hardware, es posible que deba cargar explícitamente el controlador edac correcto, cf .:

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

El edac-utilspaquete proporciona una interfaz de línea de comandos y una biblioteca para acceder a esos datos, por ejemplo:

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

Puede configurar algún tipo de trabajo cron que periódicamente llama eac-utily alimenta los resultados en su sistema de monitoreo, donde luego puede configurar algunas notificaciones.

Además de eso, correr mceloges generalmente una buena idea. Depende del sistema, pero los errores de ECC corregibles / corregibles probablemente también se notifiquen como una excepción de verificación de máquina ( MCE ). Quiero decir, incluso breves períodos de aceleración de la CPU debido a una temperatura más alta se informan como MCE.

maxschlepzig
fuente
9

mcelogmonitoreará el controlador de memoria e informará los eventos de error de memoria a syslog, y en algunas configuraciones puede desconectar páginas de memoria defectuosa . Esto es, por supuesto, además de su uso habitual para monitorear las excepciones de verificación de la máquina y una variedad de otros errores de hardware.

La mayoría de las distribuciones de Linux tienen un servicio configurado para ejecutarlo como demonio, por ejemplo, para EL 6:

chkconfig mcelog on
service mcelog start
Michael Hampton
fuente
Ubuntu ya no lo admite. La instalación da errores.
DimiDak
Sí, gracias. He visto eso, si no me equivoco, habla de ubuntu18 pero tampoco funciona en Ubuntu 14.
DimiDak
@DimiDak Ese es un tema diferente y no relevante aquí. Puede hacer una nueva pregunta al respecto si necesita ayuda.
Michael Hampton
El tipo que publicó la pregunta dice "Todos los sistemas ejecutan Debian o Ubuntu" y su respuesta no funciona. Así que es bastante relevante ...
DimiDak
6

Esto depende del hardware de su servidor. Una caja blanca o un sistema Supermicro manejarán esto de manera diferente que un Dell, HP o IBM ...

Una de las características de valor agregado de los servidores de alta gama es que hay un nivel de integración de hardware / sistema operativo. Los servidores más agradables informarán lo que está buscando como parte de los agentes de administración y / o la solución de administración fuera de banda (OIT, DRAC, IPMI).

Debe usar las herramientas nativas de su plataforma de hardware.

Extracto de un servidor HP ProLiant con Linux y los agentes de administración de HP:

Trap-ID=6056
ECC Memory Correctable Errors  detected.

y

Trap-ID=6052
Advanced ECC Memory  Engaged

o una más severa

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

o lo peor ... Ignorar un error durante 6 días hasta que el servidor falla debido a una RAM defectuosa

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

Estos fueron registrados, además de trampas SNMP y correos electrónicos fueron enviados.

Genéricamente, verá Excepciones de comprobación de máquina en el búfer de anillo del núcleo, por lo que puede comprobar dmesgo ejecutar mcelog . En mis experiencias con el equipo Supermicro sin IPMI, eso no captó todo, y todavía tuve errores de RAM que se escaparon y causaron interrupciones. Desafortunadamente, esto condujo a políticas arcaicas de quemado de RAM antes de las implementaciones del sistema.

ewwhite
fuente