Столкнулся с проблемой на ОС CentOS 7: «ABRT has detected 1 problem(s)».
При входе в систему выдало такую строчку:
ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1613422210
Через день и несколько перезагрузок ещё одну:
ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1613428330
Итак, как с этим быть и что это такое я решил разобраться.
Мы имеет дело с демоном abrtd, который при обнаружение проблем делает dump, который помогает разобраться в произошедшем. Но это и так очевидно. Если выполнить то, что предлагается в сообщении «abrt-cli list —since 1613428330», то появляется детальная информация:
id 3a12ba706d9e4732eb0b32be8a986c8291b7f972 reason: smartmon:175:smart_print_device_info:KeyError: 'smart support is' time: Mon 15 Feb 2021 12:00:01 PM UTC cmdline: python2 /usr/libexec/prometheus-node_exporter/smartmon package: prometheus-node_exporter-0.18.1-2.vl7 uid: 0 (root) count: 5 Directory: /var/spool/abrt/Python-2021-02-15-12:00:01-6208
В отдельных случаях (как в данном) от части ясно в какую сторону смотреть. Но на моей практике так было не всегда. Поэтому сразу рекомендую выполнить ту же саму команду, но с ключом -d, которая выведет более подробную информацию и возможно уже станет понятно, что конкретно не работает:
abrt-cli list -d --since 1613428330
Выводится слишком большая простыня с более подробной информацией. Это сугубо частный случай, поэтому копипастить её сюда не вижу смысла. Вернусь к первоначальному выводу, там достаточно строки: python2 /usr/libexec/prometheus-node_exporter/smartmon. При её выполнении я получаю ошибку:
Traceback (most recent call last): File "/usr/libexec/prometheus-node_exporter/smartmon", line 401, in <module> smart_collect() File "/usr/libexec/prometheus-node_exporter/smartmon", line 310, in smart_collect if not smart_print_device_info(dev): File "/usr/libexec/prometheus-node_exporter/smartmon", line 175, in smart_print_device_info enabled = 'Enabled' in infos['smart support is'] KeyError: 'smart support is'
Вот с этим уже можно работать. Именно это вызывает crush программы (мониторинг smart в моём случае) и abrt это фиксирует.
По моей ситуации это ошибка чисто системы мониторинга (скрипта) и на работу ОС повлиять не должно.
Для решения проблемы, я попробовал для начала обновить пакеты в системе и там оказался большой список пакетов, связанных как раз с abrt-python:
Updating: ... abrt-addon-python x86_64 2.1.11-55.vl7.5 virtuozzolinux-base 103 k abrt-addon-python3 noarch 2.1.11-50.vl7.2 virtuozzolinux-base 9.2 k ... abrt-python x86_64 2.1.11-55.vl7.5 virtuozzolinux-base 110 k ...
Ещё были пакеты NetworkManager, а у меня как раз по другой ошибке от abrt прослеживались в отчёте модули ipv6, настройкой коих на ОС я тоже занимался и там могло пойти что-то не так. Обновление пакетов выглядит как движение в верном направлении (хотя пару дней назад после установки ОС она была полностью обновлена).
Обновления не помогли. Я нашёл, что скрипт smartmon запускается из крона /etc/cron.d/node_exporter_smartmon. Выглядит он вот так:
# Dump SMART stats every 6 hours SHELL=/bin/bash PATH=/sbin:/bin:/usr/bin:/usr/sbin MAILTO=root OUTFILE=/var/lib/node_exporter/textfile_collector/smartmon.prom 0 */6 * * * root /usr/libexec/prometheus-node_exporter/smartmon > ${OUTFILE}.$$ && mv ${OUTFILE}.$$ ${OUTFILE}
Скрипт вызывается кроном каждые 6 часов и завершается это всё с ошибкой. Поскольку работа этого скрипта мне в принципе не нужна, то решаю от него отказаться (убрать запись из крона).
Данный скрипт появился в версии OpenVZ 7.0.15, в прошлых версиях, в частности 7.0.14 его не было. Возможно, проблема связана с тем, что на машине стоят диски nvme, т.к. на другой машине обычные ssd и hdd и там скрипт работает. Вот фрагмент:
# HELP smart_smartctl_run metric smartctl_run # TYPE smart_smartctl_run gauge smart_smartctl_run{disk="/dev/sda",type="sat"} 1613557280 smart_smartctl_run{disk="/dev/sdb",type="sat"} 1613557280 # HELP smart_device_info metric device_info # TYPE smart_device_info gauge smart_device_info{device_model="INTEL SSDSC2BW120A4",serial_number="CVDA440103AA1207GN",disk="/dev/sda",type="sat"} 1 smart_device_info{device_model="ST3320620NS",serial_number="5QF1XR4X",disk="/dev/sdb",type="sat"} 1 # HELP smart_device_smart_available metric device_smart_available
###
В целом по опыту у меня такая ошибка встречалась на разных железных машинах, где крутится с десяток контейнеров (почти как виртуалок) и фатальных случаев пока не было, сервера живут с этим. Пока это 1-2 ошибки на сервере за год.
Используемая информация — http://geckich.blogspot.com/2013/03/abrt-automatic-bug-reporting-tool-rhel6.html.