abrt (automatic bug reporting tool)

Столкнулся с проблемой на ОС 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.

 

Добавить комментарий