[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Работа с протоколом ошибок

Функция ведения протокола ошибок автоматически включается во время инициализации системы с помощью сценария rc.boot и автоматически выключается во время завершения работы системы с помощью сценария shutdown. Средства диагностики (команда diag) анализирует записи об аппаратных ошибках, занесенные в протокол не более чем 90 дней назад. Если из протокола будут удалены некоторые записи об аппаратных ошибках, занесенные в течение последних 90 дней, то эффективность анализа протокола понизится.

Информация о работе с протоколом ошибок приведена в следующих разделах:

Средство ведения протокола ошибок

Передача протокола ошибок в другую систему

Команды errclear, errdead, errlogger, errmsg и errpt входят в состав дополнительного пакета Software Service Aids (bos.sysmgt.serv_aid). Этот пакет применяется для создания отчетов на основе протокола ошибок и удаления записей из протокола ошибок. Вы можете установить пакет Software Service Aids в своей системе, либо передать файл с протоколом ошибок в другую систему, в которой установлен этот пакет.

Узнайте каталог, в котором расположен файл с системным протоколом ошибок, введя следующую команду:

/usr/lib/errdemon -l

Существует несколько способов передать файл в другую систему. Например, файл можно скопировать в смонтированную файловую систему из удаленной системы с помощью команды cp. Файл можно передать по сетевому соединению с помощью команды rcp, ftp или tftp. Кроме того, файл можно скопировать на съемный носитель с помощью команды tar или backup, а затем восстановить его в другой системе.

Для создания отформатированных отчетов на основе протокола ошибок, скопированного из другой системы, служит команда errpt с флагом -i. С флагом -i можно задать каталог, в котором расположен файл протокола ошибок, если этот файл расположен не в каталоге по умолчанию. Для удаления записей из протокола ошибок, скопированного из другой системы, служит команда errclear с флагом -i.

Параметры протокола ошибок

Вы можете изменить имя и расположение файла протокола ошибок, а также размер внутреннего буфера ошибок.

Кроме того, можно задать опцию занесения в протокол информации о повторных ошибках.

Просмотр текущих значений параметров

Для того чтобы просмотреть текущие значения параметров, вызовите команду /usr/lib/errdemon -l. В выводе этой команды указывается имя файла протокола ошибок, размер файла протокола ошибок и размер буфера, которые в настоящий момент заданы в базе данных конфигурации протокола ошибок.

Для просмотра текущих значений параметров, вызовите команду /usr/lib/errdemon -l. В выводе этой команды указывается имя файла протокола ошибок, размер файла протокола ошибок, размер буфера и параметры обработки повторных ошибок, которые в настоящий момент заданы в базе данных конфигурации протокола ошибок.

Изменение имени файла протокола

Для того чтобы изменить имя файла протокола ошибок вызовите команду /usr/lib/errdemon -i имя-файла. Указанное имя файла будет сохранено в базе данных конфигурации протокола ошибок. После этого будет автоматически перезапущен демон ведения протокола ошибок.

Изменение размера файла протокола

Для того чтобы изменить максимальный размер файла протокола ошибок, введите:

/usr/lib/errdemon -s размер-протокола

Указанное ограничение на размер файла протокола будет сохранено в базе данных конфигурации протокола ошибок. После этого будет автоматически перезапущен демон ведения протокола ошибок. Если установленное ограничение меньше текущего размера файла протокола, то текущий файл переименовывается путем добавления суффикса .old , после чего создается новый файл с указанным ограничением. Заданный объем памяти резервируется для файла протокола ошибок и недоступен для других файлов. В связи с этим не следует устанавливать очень большое ограничение. Однако если размер протокола будет очень маленьким, то из него преждевременно может быть удалена важная информация. После того как размер файла протокола достигает указанного ограничения, начинается новый цикл записи, то есть самые старые записи заменяются на новые.

Изменение размера буфера

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

/usr/lib/errdemon -B размер-буфера

Указанный размер буфера сохраняется в базе данных конфигурации протокола ошибок. При увеличении размера буфера внутренний буфер немедленно расширяется. Если новый размер меньше текущего размера буфера, то он вступает в силу при следующем запуске демона ведения протокола ошибок после перезапуска системы. Размер буфера не может быть меньше значения по умолчанию, составляющего 8 Кб. Указанный размер округляется с избытком до значения, кратного размеру страницы памяти (4 Кб). Память, выделенная внутреннему буферу драйвера устройства протокола ошибок, недоступна другим процессам (другими словами, буфер размещается в закрепленной памяти).

Если буферу будет выделен слишком большой объем памяти, то производительность системы может снизиться. Однако если размер буфера будет слишком маленьким, то буфер может переполниться. Это может произойти в том случае, если записи об ошибках записываются в буфер чаще, чем считываются из буфера в файл протокола. После заполнения буфера все новые записи отбрасываются до тех пор, пока в буфере не освободиться достаточный объем памяти. В этом случае создается запись протокола ошибок с информацией о неполадке. При получении такой записи нужно увеличить размер буфера.

Изменение способа обработки повторных ошибок

В AIX 5.1 и выше по умолчанию демон ведения протокола ошибок удаляет записи о повторных ошибках. Для этого он просматривает все записи об ошибках, занесенные в протокол. Ошибка считается повторной, если она произошла в течение заданного интервала времени после возникновения аналогичной ошибки. Этот интервал времени можно изменить с помощью команды /usr/lib/errdemon -t интервал-времени. Значение по умолчанию составляет 100. Это значение указывается в мс.

С помощью флага -m максимальное-число-повторов можно указать, сколько повторных ошибок должно произойти прежде чем в протокол ошибок будет занесена повторная запись об ошибке. Значение по умолчанию равно 1000. Оно означает, что при возникновении 1001 повторной ошибки в протокол будет занесена еще одна запись об ошибке, независимо от того, истек ли указанный интервал времени.

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

Примечание: Интервал времени отсчитывается с момента возникновения последней ошибки, а не с момента возникновения первой ошибки. Другими словами, при возникновении очередной повторной ошибки время начинает отсчитываться заново. Обратите внимание, что повторной считается ошибка, которая в точности совпадает с одной из предыдущих ошибок. Например, если подробная информация об ошибке немного отличается от аналогичной информации об одной из предыдущих ошибок, то такая ошибка считается уникальной, и для нее создается отдельная запись протокола.

Удаление записей из протокола ошибок

Записи удаляются из протокола ошибок при вызове команды errclear пользователем root, при вызове команды errclear ежедневно выполняемым заданием cron, либо при начале нового цикла записи в файл протокола ошибок после того, как был достигнут максимальный размер файла. После того как размер файла протокола ошибок достигает ограничения, указанного в базе данных конфигурации протокола ошибок, самые старые записи протокола начинают заменяться на новые записи.

Автоматическое удаление

По умолчанию команда crontab автоматически удаляет записи об аппаратных ошибках, занесенные более 90 дней назад, и остальные записи, занесенные более 30 дней назад. Для просмотра записей файла crontab локальной системы, введите:

crontab -l команда

Для изменения этих записей введите:

crontab -e команда

За дополнительной информацией обратитесь к справке по команде crontab.

Команда errclear

Команда errclear позволяет выборочно удалить записи из протокола ошибок. В качестве критерия выбора записей можно указать ИД ошибки, порядковый номер, метку ошибки, имя ресурса, класс ресурса, класс ошибки и тип ошибки. Кроме того, необходимо указать минимальное время создания записей. Команда удалит все записи, соответствующие заданному критерию и созданные позже указанного времени.

Включение и выключение функции ведения протокола для события

Вы можете выключить функцию ведения протокола для отдельного события путем изменения поля Log или Report в шаблоне записи об ошибке, связанном с данным событием. Для изменения параметров события служит команда errupdate.

Просмотр списка событий, для которых не ведется протокол

Для того чтобы просмотреть список событий, для которых не ведется протокол, введите:

errpt -t -F Log=0 

Если для события не ведется протокол, то информация об этом событии не заносится в файл протокола ошибок.

Просмотр событий, для которых не создается отчет

Для того чтобы просмотреть список событий, для которых не создается отчет, введите:

errpt -t -F Report=0 

Информация о событиях, для которых не создается отчет, заносится в файл протокола ошибок, однако не выводится командой errpt.

Изменение текущих параметров события

Для изменения текущих параметров события служит команда errupdate. Эта команда может считать входные данные из файла или из стандартного ввода.

В приведенном ниже примере входные данные считываются из стандартного ввода. Для того чтобы выключить функцию создания отчета для события ERRLOG_OFF (номер ошибки - 192AC071), запустите команду errupdate и введите следующую информацию:

errupdate <Enter>
=192AC071: <Enter>
Report=False <Enter>
<Ctrl-D>
<Ctrl-D>

Настройка функции уведомления об ошибках

Информация по этому вопросу приведена в разделе Глава 4, Извещение об ошибках руководства Программирование в системе AIX 5L, версии 5.1: Разработка и отладка программ.

Занесение в протокол информации об обслуживании

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

Копирование сообщений из системного протокола в протокол ошибок

Некоторые приложения заносят информацию об ошибках и других событиях в системный протокол. Иногда удобно просматривать записи об ошибках и записи из системного протокола в виде одного отчета. Для этого нужно перенаправить записи из системного протокола в протокол ошибок. Это можно сделать, указав в файле конфигурации системного протокола (/etc/syslog.conf) в качестве целевого объекта errlog. За дополнительной информацией обратитесь к описанию демона syslogd.

Копирование записей протокола ошибок в системный протокол

Записи об ошибках могут заноситься в файл syslog командой logger. Одновременно эти записи будут заноситься в протокол ошибок. Например, для того чтобы в этот файл заносились сообщения системы, добавьте объект errnotify со следующим описанием:

errnotify:
        en_name = "syslog1"
        en_persistenceflg = 1
        en_method = "logger Msg from Error Log: `errpt -l $1 | grep -v 'ERROR_ID TIMESTAMP'`"

Например, создайте файл /tmp/syslog.add с указанным выше описанием и вызовите команду odmadd /tmp/syslog.add (эту команду разрешено выполнять только пользователю root).

За дополнительной информацией о копировании сообщений в другой протокол обратитесь к разделу Глава 4, Извещение об ошибках руководства Программирование в системе AIX 5L версии 5.1: Разработка и отладка программ.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]