ABRT

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск
ПРИМЕЧАНИЕ:
Это документ всего лишь является переводом на русский язык официального документа Fedora и распложеного по адресу : https://docs.fedoraproject.org/en-US/Fedora/15/html/Deployment_Guide/ch-abrt.html


Автоматизированый регистратор ошибок (ABRT)

Содержание


Обзор

ABRT является инструментом для создания автоматических отчетов об ошибках. ABRT состоит из демона, который большую часть времени работает в фоновом режиме. Когда происходит сбой приложения, то демон активируется. Затем он собирает дополнительные необходимые данные. Наконец, ABRT способна создать отчет об аварии и послать в систему отслеживания проблем, как например, Red Hat Bugzilla. ABRT можно настроить на автоматическую отсылку ошибок при каждом обнаруженом сбое, или аварийные дампы могут храниться локально и сообщаться или удаляться пользователем вручную. Существуют различные плагины для ABRT, способные анализировать аварийные данные из приложений, написанных на языках C, C + + и Python, а также создавать отчет об аварии для соответствующих систем отслеживания проблем.

ABRT состоит из следующих пакетов :

Можно вручную запустить abrt-gui, для этого необходимо выбрать ( DE Gnome ) : Обзор -> Приложения -> Системные -> Автоматизированый регистратор ошибок

Файл:abrt.png

Все дополнительные пакеты-плагины для ABRT можно просмотреть командой :

yum list all | grep abrt

Установка и запуск ABRT

По умолчанию, ABRT должен быть установлен на вашей системе: abrtd-демон настроен на запуск при загрузке системы и abrt-applet настроен для работы в области уведомлений сессии рабочего стола.

Установка пакетов ABRT:
Для того чтобы использовать ABRT, нужно сначала убедится, устновлен ли пакет abrt-desktop в вашей системе, выполнив команду : su -c "yum install abrt-desktop"

ABRT, как правило, настроен на запуск при загрузке системы. Вы можете проверить, что демон abrtd запущен, запустив следующую команду :

su -c "systemctl is-active abrtd.service"

Если вы увидите, что ABRT остановлен, вы можете запустить демон abrtd командой :

su -c "systemctl start abrtd.service"

Вы можете узнать, что демон abrtd будет запущен во время запуска, выполнив следующую команду :

su -c "systemctl enable abrtd.service"

При обнаружении аварии будет послан сигнал D-Bus об этой катастрофе. abrt-applet получает это сообщение и выдает сигнал тревоги в виде значка в области уведомлений. Вы можете открывать приложение с графическим интерфейсом, нажав на этот значок.

Файл:Abrt-alert.png

Расширения ABRT

ABRT предлагает множество плагинов для анализа и составления отчетов. Эти плагины описаны в следующих двух разделах. Не все плагины, которые упоминаются в следующих разделах, будут установлены по умолчанию. Для просмотра всех доступных плагинов, выполните следующую команду:

yum list all | grep abrt-plugin-*

Расширения для анализа

Эти расширения служат для сбора и анализа информаций по конкретным видам аварий. Например, плагин Kerneloops проверяет сбои в ядре. Использование этих плагинов при запуске системы можно включить/отключить в соответствующих конфигурационных файлах, которые размещаются в каталоге /etc/abrt/plugins/. Ниже приведен список всех плагинов для анализа.

Kerneloops

Python

CCpp

Расширения для отчета

Эти расширения могут собирать данные об аварии, полученные с помощью расширений для анализа, объединять данные с любого пользовательского ввода (например, комментарии по поводу аварии, воспроизводимость и т.д.), а также обеспечить определенный вывод. Каждый из этих модулей можно настроить в соответствующем файле конфигурации, которые размещены в каталоге /etc/abrt/plugins/, или в приложении abrt-gui.

MailX

Report Uploader

Bugzilla

Logger

Настройка расширений в графическом интерфейсе

Конфигурационные файлы расположеные по адресам /etc/abrt/plugins/*.conf и их настройка влияет на всех пользователей системы. Каждый из модулей, указанных в разделе «Расширения для отчета" можно настроить в приложении abrt-gui. Откройте окно настройки расширений, нажав на кнопку Правка -> Параметры. В этом окне отображается список всех установленных расширений. При выборе одного из настраиваемых расширений, вы можете нажать на кнопку Configure Event, чтобы настроить желаемый плагин. При изменении любого из параметров расширений, они сохраняются в GNOME Keyring и будут использоваться в будущей сессии пользовательского интерфейса.

Не храните конфиденциальные данные в глобальных файлах конфигурации:
Все файлы конфигурации расположенные в /etc/abrt/plugins/*.conf являются глобальными и доступны всем по чтению. Таким образом, не рекомендуется хранить имена пользователей, пароли или другие конфиденциальные данные в них. Настройки для каждого пользователя (они установлены в графическом приложении и читаются только владельцем $HOME) хранятся в наборе ключей Gnome или могут быть сохранены в текстовом файле в $HOME/.abrt/*.conf для использования в abrt-cli.

Файл:Abrt-event-configuration.png

Ниже приведен список всех опций, доступных для каждого настраиваемого расширения в графическом приложении ABRT.

MailX
При конфигурации расширения MailX можно настроить следующие параметры:

Если включена опция Send Binary Data, письмо с отчетом об аварии также будет содержать все бинарные файлы, связанные с ошибкой в виде вложения. Файл дампа памяти также отправляется в виде вложения.

ReportUploader
При конфигурации расширения ReportUploader, можно настроить следующие параметры:

При включенной опции Use encryption отчет направленный на багтрекер будет отсылаться в зашифрованном виде.
При включенной опции Upload все отчеты о сбоях будут загружены в указанный багтрекер. Если этот параметр не установлен, все отчеты о сбоях сохраняются локально.

Bugzilla
При конфигурации расширения Bugzilla, можно настроить следующие параметры:

Когда включена опция SSL verify, протокол SSL используется при передаче данных по сети.

Logger
При конфигурации расширения Logger, можно настроить следующие параметры:

Когда установлена опция Append new logs, Logger плагин будет добавлять новые отчеты аварии в лог-файл, указанный в опции Logger file. Если эту опцию не установить, то новый отчет об аварии всегда заменяет предыдущий.

Создание трассировки

Для того чтобы проанализировать сообщения об аварии, необходимо сообщить разработчикам о сбое настолько подробно, насколько возможно. Трассировки стека является важным источником информации при аварии в двоичной программе (он отлавливается расширением для анализа CCpp ).

ABRT может быть настроена для создания трассировки при аварии, это может быть сделано посредством применения abrt-gui или abrt-cli.

ABRT выполняет следующие шаги для создания трассировки:

Вы можете изменить следующие параметры в файле /etc/abrt/plugins/CCpp.conf:

Устранение неполадок при создании трассировки

В некоторых случаях, при создании отчета об аварии в abrt-gui, может происходить длительная задержка. В этом случае, откройте Details в окне Generating backtrace и изучите сообщения.
Ниже приведен типичный вывод в окно Generating backtrace:

Starting the debuginfo installation
Getting list of build IDs
12 missing debuginfos, getting package list from cache
12 missing debuginfos, getting package list from repositories
Downloading 7 packages
Download 1/7: acl-debuginfo-2.2.49-6.fc13.x86_64
Unpacking: acl-debuginfo-2.2.49-6.fc13.x86_64.rpm
Caching debuginfo:
usr/lib/debug/.build-id/3d/e20df1db609bd9313b1dc440796004f95911fd.debug
Download 2/7: firefox-debuginfo-3.6.7-1.fc13.x86_64
Unpacking: firefox-debuginfo-3.6.7-1.fc13.x86_64.rpm
Caching debuginfo:
usr/lib/debug/.build-id/3d/b29c9308cb276431ce8854a2d88cf83518afc6.debug
Caching debuginfo:
usr/lib/debug/.build-id/a3/86884285365c8288e4e761ec034fafaa1daee1.debug
⋮
Download 7/7: zlib-debuginfo-1.2.3-23.fc12.x86_64
Unpacking: zlib-debuginfo-1.2.3-23.fc12.x86_64.rpm
Caching debuginfo:
usr/lib/debug/.build-id/f7/933750da80f555321576e72b375caf7a3cc075.debug
All needed debuginfos are present
Generating backtrace

Этот процесс осуществляется в скрипте /usr/bin/abrt-debuginfo-install. Этот сценарий использует временный каталог (например /var/run/abrt/tmp-29177-1283344373) для своей деятельности. Как правило, это папка удаляется когда abrt-debuginfo-install завершает работу.

Если установка DebugInfo зависает, или не в состоянии ничего скачивать, вы можете исправить проблемы путем редактирования скрипта abrt-debuginfo-install. Измените следующие параметры:

debug=false
keep_tmp=false

в верхней части сценария:

debug=true
keep_tmp=true

Первый параметр указывает abrt-debuginfo-install, чтобы быть многословным, второй параметр указывает abrt-debuginfo-install, чтобы не удалял каталог /var/run/abrt/tmp-NNN-NNN . Вы можете изучить лог-файлы в этом каталоге, они могут содержать полезные сообщения об ошибках.
abrt-debuginfo-install использует yum и yumdownloader для обработки DebugInfo пакетов. Для того, чтобы быстро проверить, что ваша yum конфигурация не вызывает никаких проблем, которые мешают abrt-debuginfo-install работать должным образом, перейдите в каталог /tmp и выполните следующие команды, как root:

tmp]# yum --enablerepo=*debuginfo* --quiet provides /usr/bin/true
tmp]# yumdownloader --enablerepo=*debuginfo* --quiet coreutils

Обе эти команды должны завершиться успешно, без каких-либо сообщений об ошибках. Вторая команда должна загрузить файлы coreutils-*.rpm. Если сообщение об ошибке появляется, проверьте yum конфигурационныe файлы в каталогах /etc/yum.repos.d/* и /etc/yum/*. Если любая из этих команд зависла, убедитесь, что у вас нет другого исполняемого экземпляра yum, и что ваше сетевое соединение работает должным образом.

Использование интерфейса командной строки

Сбои обнаруженыe ABRT можно просматривать, сообщать и удалять с помощью интерфейса командной строки.

Просмотр крахов

Чтобы получить список всех аварий, просто введите abrt-cli --list или abrt-cli -l:

~]$ abrt-cli --list
0.
  UID        : 500
  UUID       : 784b06666020e9f43718d99bf2649f19b4f251a9
  Package    : bash-4.1.2-3.el6
  Executable : /bin/bash
  Crash Time : Tue 20 Jul 2010 03:22:52 PM CEST
  Crash Count: 2
1.
  UID        : 500
  UUID       : 48007b98d65cca4530d99a564379e2609169239d
  Package    : coreutils-8.4-9.el6
  Executable : /bin/sleep
  Crash Time : Tue 20 Jul 2010 03:22:00 PM CEST
  Crash Count: 1

Этот вывод содержит основную информацию по каждой аварии. UID: поле отображается идентификатор пользователя, который запустил программу, вызвавшую сбой. Поле Package отображает название и версию пакета Fedora, который содержит программу, и поле Executable отображает расположение программы или сценария, который разрушился. Поле Crash Count показывает, сколько раз произошла эта авария.

Отчетность по сбоям

Чтобы сообщить об определенной аварии, введите abrt-cli --report UUID или abrt-cli --r UUID, где UUID является универсальным уникальным идентификатором аварии в списке аварий, чтобы просмотреть этот список, выполните команду abrt-cli --list. Вам не нужно запомнить точный UUID, используйте мышь, чтобы скопировать и вставить его, или просто введите уникальный префикс и нажмите клавишу ENTER.

~]$ abrt-cli --report 480
<ENTER>
>> Starting report creation...

ABRT анализирует аварию и создает отчет о ней. Это может занять некоторое время. Когда отчет будет готов, abrt-cli открывает текстовый редактор с содержанием доклада. Вы видите то, что сообщается, и вы можете заполнить в инструкции о том, чтобы воспроизвести аварии и добавить другие комментарии. Вы должны также проверить другие трассировки, они могут быть отправлены на общедоступный сервер и доступны на просмотр всем желающим, в зависимости от настроек плагина.

Выбор текстового редактора
Вы можете выбрать какой текстовый редактор использовать для создания отчета. abrt-cli использует редактор, определенный в переменной окружения ABRT_EDITOR. Если переменная не определена, она проверяет переменные VISUAL и EDITOR. Если ни одна из этих переменных не установлена то используется редактор VI. Вы можете установить предпочтительный для вас редактор. Например, если вы предпочитаете GNU Emacs, добавьте следующую строку в ваш .bashrc файл:
export VISUAL=emacs

Когда вы закончите с отчетом, сохраните изменения и закройте редактор. Вам будет предложено какие расширения ABRT вы хотите использовать для отправки отчета. Ответить Y чтобы отправить отчет, используя желаемый плагин или N, чтобы пропустить плагин если вы не хотите его использовать.

Удаление отчетов по сбоям

Если вы не хотите, сообщать об определенных авариях, вы можете удалить его из списка аварии. Чтобы удалить определенные дампы аварий, введите следующую команду: abrt-cli --delete UUID.

Обратите внимание, что ABRT производит обнаружение дубликатов аварий, сравнивая новые аварии со всеми локально сохраненными авариями. Для повторяющих аварии, ABRT объединяет их в одну. Однако, если вы удалите из аварийного дампа, любую аварию, в следующий раз этот конкретный сбой, ABRT будет рассматривать его в качестве новой аварии: ABRT предупредит вас об этом и попросит вас заполнить описание, и сообщить об этом. Это может быть излишним, поэтому, удаляя аварии не рекомендуется.

Настройка ABRT

Основным конфигурационным файлом для ABRT является /etc/abrt/abrt.conf. Расширения ABRT можно настроить через конфигурационные файлы, расположенные в каталоге : /etc/abrt/plugins/.

Перезагрузка abrtd демона, чтобы применить изменения
После изменения и сохранения конфигурационного файла /etc/abrt/abrt.conf, необходимо перезапустить демон abrtd, чтобы новые параметры вступили в силу: su -c "systemctl restart abrtd.service"

В конфигурации в настоящее время поддерживается следующие директивы:

OpenGPGCheck = yes/no
Установка OpenGPGCheck директивы да(yes) (по умолчанию) говорит чтобы ABRT мог только анализировать и обрабатывать сбои в приложениях, предоставляемые пакеты, которых подписаны ключами GPG, и перечислены в файле /etc/abrt/gpg_keys. Если директива установлена в не(no) то ABRT будет ловить аварии во всех программах.

BlackList = nspluginwrapper, valgrind, strace, avant-window-navigator, [additional_packages ]
Сбои в пакетах и файлах, перечисленные после директивы BlackList не будет отлавливаться ABRT. Если вы хотите чтобы ABRT игнорировал и другие пакеты и файлы, перечислите их здесь через запятую.

ProcessUnpackaged = yes/no
Эта директива сообщает ABRT стоит ли обрабатывать сбои в исполняемых файлах, которые не входят в обычный пакет.

BlackListedPaths = /usr/share/doc/*, */example*
Если программы приводящие к сбоям будут находится в этих каталогах то они будут проигнорированы ABRT.

Database = SQLite3
Эта директива указывает ABRT в какой базе данных хранить данные об аварии. Другие базы данных в настоящее время не поддерживается. Тем не менее, архитектура плагинов позволяет ABRT в будущей поддержки альтернативных баз данных.

#WatchCrashdumpArchiveDir = /var/spool/abrt-upload/
Эта директива закомментирована по умолчанию. Включите (раскомментировать) ее, если хотите чтобы abrtd использовался для автоматической распаковки архивов дампа, которые появляются в указанном каталоге - в данном случае в /var/spool/abrt-upload/ - (например, загруженные через ftp, scp, и т.д.). Вы должны убедиться, что этот каталог, указанный в этой директиве существует и имеет права на запись для abrtd. abrtd не создаст его автоматически.

MaxCrashReportsSize = size_in_megabytes
Этот параметр задает объем дискового пространства в мегабайтах, используемое ABRT, чтобы хранить все аварийную информацию от всех пользователей. Значение по умолчанию составляет 1000 Мб. После того как квоты указанные здесь будут достигнуты, ABRT будет продолжать ловить новые сбои, за счет удаления самых старых и самых крупных записей об крахах.

ActionsAndReporters = SOSreport, [additional_plugins ]
Эта опция говорит ABRT, чтобы запустить указанный плагин(ы) сразу же после обнаружения и сохранения аварии. Например, плагин SOSreport, sosreport инструмент, который добавляет данные, собранные при создании аварийного дампа. Вы можете отключить это поведение, комментируя эту линию. Для получения дополнительной тонкой настройки, вы можете добавить SOSreport (или любой другой указанный плагин) после CCpp или Python вариантов, чтобы создать более детальный отчет.

Этот раздел позволяет объядинить определенные действия анализаторов и генераторов отчетов которые исполняются когда ABRT отлавливает kernel oopses или крахах в C, C++ или Python программах. Действия или специальные отчеты, указанных в любой из директив ниже, будут работать только, если вы запустите abrt-gui или abrt-cli и сообщите об аварии, которые произошли. Если вы не укажите никаких действий и отчетов в этих директивах, вы не сможете сообщить об аварии через abrt-gui или abrt-cli. Порядок действий и отчетов очень важна. Комментируя эти директивы, вы укажите ABRT не отлавливать сбои, связанные с этой директивой. Например, комментируя линию Kerneloops укажет ABRT, чтобы он не реагировал на kernel ​​oopses.

Kerneloops = Logger
Эта директива определяет, что для kernel oopses, Logger корреспондент будет работать.

CCpp = Logger
Эта директива определяет, что для сбоев в программах C или C++, Logger корреспондент будет работать.

Python = Logger
Эта директива определяет, что для сбоев в программах на языке Python, Logger корреспондент будет работать.

Каждое из этих методов отчтетов можно указать в соответствующих конфигурационных файлах plugins/*.conf. Все эти параметры можно настроить через abrt-gui интерфейс.

time = action_to_run
[Cron] раздел abrt.conf позволяет указать точное время, или интервал времени между действиями, когда ABRT должен выполнять определенные действия, такие как сканирование для kernel oopses или при выполнении передачи файлов. Вы можете указать список действий для запуска, добавляя их в конце этого раздела.
Пример секции [ Cron ] в файле /etc/abrt/abrt.conf:

# Which Action plugins to run repeatedly
[ Cron ]
# h:m - at h:m
# s - every s seconds
120 = KerneloopsScanner
#02:00 = FileTransfer

Формат записи либо time_in_seconds = action_to_run или hh:mm = action_to_run, где hh (часы) находится в диапазоне 00-23 (все часы менее 10 должны начинаться с 0) и mm (минута) является 00-59, нулевой разряд должен быть заполнен таким же образом.

Настройка Централизованных мест сбора сбоев

Вы можете настроить ABRT, чтобы отчеты о сбоях собирались с нескольких систем и отправлялись в специальную систему для дальнейшей обработки. Это полезно, когда администратор не хочет входить в сотни систем вручную и проверять наличие найденых аварий через ABRT. Для того, чтобы использовать этот метод, вам нужно установить расширение abrt-plugin-reportuploader (su -c "yum install abrt-plugin-reportuploader").

Чтобы настроить централизованный сбор аварий ABRT нужно сделать:

1. Выполните следующие шаги на выделенном сервере ("сервер системы"):

a.) Создайте каталог, в который вы хотите, загружать отчеты о сбоях. Как правило для этого используется , /var/spool/abrt-upload/ (остальная часть документа предполагает, что вы используете /var/spool/abrt-upload/) Убедитесь, что этот каталог доступен для записи пользователю abrt.

Пользователь и группа abrt
Когда abrt-desktop пакет установлен, он создает нового пользователя системы и группу с названием abrt. Этот пользователь используется демоном abrtd для различных вещей, например, владелец и группа каталога /var/spool/abrt/*.


b.) В конфигурационном файле /etc/abrt/abrt.conf, установить директиву WatchCrashdumpArchiveDir к следующему виду:

WatchCrashdumpArchiveDir = /var/spool/abrt-upload/

c.) Определить нужный механизм загрузки, например, FTP или SCP. По соображениям безопасности, убедитесь, что загрузка может быть выполнены только для конкретного пользователя и с конкретным паролем. Остальная часть документа предполагает, что имя пользователя используется для использования является USERNAME и пароль PASSWORD. Если вы не выбрали подходящее имя пользователя, который может быть использован для выполнения загрузок, Вы можете использовать abrt пользователя, который уже существует в любой системе, где установлен ABRT.
Желательно, проверить что метод загрузки работает.

d.) В случае необходимости желательно проверить и изменить следующие параметры:

2. Выполните следующие действия по каждому клиенту которые будут использовать центральный метод управления:

a.) Изменитe конфигурационный файл /etc/abrt/plugins/ReportUploader.conf, чтобы расширение ReportUploader знало, куда копировать сохраненные отчеты о сбоях:

Enabled = yes
Upload = yes
URL = ftp://USERNAME:PASSWORD@SERVERNAME/var/spool/abrt-upload/

b.) Чтобы автоматически отправлять отчеты на серверную систему сразу после сбоя, обнаружения, и сохранения, установите директиву [ActionsAndReporters] в конфигурационном файле /etc/abrt/abrt.conf:

ActionsAndReporters = ReportUploader

c.) И наоборот, если пользователю не требуется до аварийного дампа отправлять на сервер системы, установитe ReportUploader быть дополнением для отсылки отчета по конкретному типу аварии в
[AnalyzerActionsAndReporters] раздел файле конфигурации /etc/abrt/abrt.conf. Пользователь должен запустить abrt-cli или abrt-gui и поручить демону abrtd, чтобы сообщить о проишествии и отправить его на сервер системы. Например, если вы хотите, чтобы все аварии использовали этот метод, изменитe [AnalyzerActionsAndReporters] раздел в конфигурационном файле /etc/abrt/abrt.conf следующим образом:

Kerneloops = ReportUploader
CCpp = ReportUploader
Python = ReportUploader

Тестирование ABRT на обнаружение сбоев

После завершения всех этапов процесса конфигурации, базовая настройка закончена. Чтобы проверить, что эта установка работает правильно используйте комнаду kill -s SEGV PID прекратить процесс на клиентской системе. Например, начать процесс сна (sleep) и остановить его (kill) используется следующим образом:

~]$ sleep 100 &
[1] 2823
~]$ kill -s SEGV 2823

ABRT должен обнаружить сбой сразу после выполнения kill команды. Убедитесь, что крушение было обнаружено ABRT на клиентской системе (это можно проверить, изучив соответствующий файл журнала, запустив команду abrt-cli --list --full, или путем изучения дампа созданого в каталоге /var/spool/abrt), скопировано а затем и распаковано на сервер системы и его можно увидеть ( и принять соответствующие меры ) с помощью команд abrt-cli или abrt-gui на сервере системы.

Тестирование загрузки

Проверьте работает ли ваш метод загрузки с клиентской системы. Например, попытайтесь загрузить файл, используя интерактивный клиент FTP:

~]$ ftp
ftp> open SERVERNAME
Name: USERNAME
Password: PASSWORD
ftp> cd /var/spool/abrt-upload
250 Operation successful 
ftp> put TESTFILE
ftp> quit

Проверьте, правильно ли TESTFILE появился в нужной директории на сервере системы.

Автоматическая настройка отчетов

ABRT может быть настроен чтобы автоматически сообщать о любых обнаружены проблемах или аварии. Ниже показано, как включить эту функцию:
1. В файле конфигурационном файле для каждого анализатора /etc/abrt/abrt.conf, изменить список расширений для отчета в соответствии с вашими потребностями, например:

[ AnalyzerActionsAndReporters ]
Kerneloops = Logger
CCpp = Logger
Python = Logger

2. В файлы конфигурации, соответствующих каждому расширению для анализа (то есть, /etc/abrt/plugins/CCpp.conf, /etc/abrt/plugins/Kerneloops.conf и /etc/abrt/plugins/Python.conf), добавьте следующие строки:

AutoReportUIDs = USERNAME

где USERNAME представляет пользователя, для которого обнаружены сбои и проблемы будут автоматически сообщается через указанный вами расширениями для отчета. Можно указать несколько пользователей, разделяя их запятой (,).