O mcelog não funciona nessa CPU AMD ou mais recente (como visto em mcelog.c
family >= 15
). O mesmo problema existe para processadores AMD EPYC.
Em vez de mcelog, use o módulo do kernel edac_mce_amd
, que colocará os logs do MCE no log do kernel, que deve terminar no disco via syslog. É possível que o mcelog tenha carregado esse módulo para você desta vez, mas sugiro carregá-lo na inicialização de outra forma, como o arquivo /etc/initramfs-tools/modules
no Linux baseado em Debian e update-initramfs -u
.
Mas eu não consigo encontrar nada dizendo o formato de tal log ... então aqui está um palpite sobre o código-fonte do Linux ...
em include/linux/printk.h
, vemos:
#define HW_ERR "[Hardware Error]: "
em drivers/edac/mce_amd.c
, vemos coisas assim começando alguma saída com pr_emerge(HW_ERR ...)
:
pr_emerg(HW_ERR "MC0 Error: ");
E mais linhas com pr_cont(...)
, mas sem HW_ERR
.
Então, eu acho que você pode procurar por "[Hardware Error]:"
em seus registros. E talvez as linhas digam edac_mce_amd
também.
Aqui está uma regra que eu acho que vai registrar o primeiro pr_emerg, mas não as partes do pr_cont (veja aqui ). Aqui, eu configuro uma regra rsyslog.d
que procura "[Hardware Error]:"
. Mas isso vai combinar com outras coisas além do módulo edac_mce_amd.
vim /etc/rsyslog.d/09-edac_mce_amd.conf
if ($syslogfacility-text == 'kern') and \
($msg contains '[Hardware Error]:') \
then -/var/log/edac_mce_amd.log
#uncomment this to also remove it from the other files
#& stop
Ter apenas a primeira linha é boa o suficiente para mim, pois configurarei um script de monitoramento que simplesmente verifica se o tamanho do arquivo é 0. Se alguém souber uma maneira de fazer isso corretamente, comente.