Monitor server memory errors
Problem
Serwery czasem sypią błędami pamięci i fajnie byłoby jakoś alertować o tym.
Rozwiązania
EDAC
Informacje o błędach pamięci można odczytać z /sys/devices/system/edac/mc/
.
Są tutaj proste liczniki podzielone po kontrolerze i module pamięci, z których można odczytać:
-
liczbę błędów naprawialnych (correctable),
-
liczbę błędów nienaprawialnych (uncorrectable),
-
liczbę błędów niepowiązanych z żadnym modułem (więc nie wystarczy tylko sumować po modułach).
Implementacja sprowadzałaby się do prostego skryptu w Pythonie, analogicznego do innych naszych skryptów monitorujących liczniki systemowe.
rasdaemon
Telegraf ma plugin do rasdaemona.
Z tego pluginu można wyczytać różne fajne rzeczy:
memory_read_corrected_errors
memory_read_uncorrectable_errors
memory_write_corrected_errors
memory_write_uncorrectable_errors
cache_l0_l1_errors
tlb_instruction_errors
cache_l2_errors
upi_errors
processor_base_errors
processor_bus_errors
internal_timer_errors
smm_handler_code_access_violation_errors
internal_parity_errors
frc_errors
external_mce_errors
microcode_rom_parity_errors
unclassified_mce_errors
Wymaga to jednak zainstalowania na każdym hoście rasdaemona.
logi systemowe
Informację o błędzie można wyczytać z logów systemowych, Telegraf ma jakieś podstawowe narzędzia do tego, ale nie wiem, czy w przypadku parsowania logów nie użyć jednak OpenSearcha.