Спецификации файла формата
Файл формата описывает шаблоны, которые агент ищет для сопоставления событиям в отслеживаемых журналах. Файл формата состоит из одной или нескольких спецификаций формата.
Файл формата можно изменять во время работы экземпляра агента. Агент читает файл при запуске, после чего каждые 60 секунд проверяет, не изменилась ли отметка времени этого файла. Если отметка времени файла конфигурации изменится, агент реинициализирует свою конфигурацию динамически, не требуя перезапуска. Дополнительную информацию смотрите в разделе Изменение файлов конфигурации агента и файлов формата.
Чтобы создать новые шаблоны соответствия для события, используйте новый синтаксис регулярного выражения, который состоит из следующих частей:
- Заголовок формата
- Регулярное выражение
- Отображения слотов
- Оператор завершения
Заголовок формата содержит ключевое слово REGEX, которое сообщает агенту, что вы используете регулярное выражение для сопоставления с шаблоном в отслеживаемом журнале.
REGEX REExample*DISCARD*, любые записи журнала, сопоставленные соответствующему шаблону, отбрасываются, и никакие события для них не генерируются. Например: REGEX *DISCARD*Если найден соответствующий шаблон, то в журнал несовпадений ничего не записывается. Эти отброшенные события включаются в число
сопоставленных записей о состоянии в файле журнала.После заголовка формата содержимое формата состоит из регулярного выражения на первой строке, затем идут отображения. Каждое отображение показано на отдельной строке, и эти отображения описаны в следующем примере.
Все строки, соответствующие регулярным выражениям, выбираются и отправляются на сервер мониторинга как события. Регулярное выражение содержит подвыражения. Можно использовать подвыражения для сопоставления определенных частей этих строк с переменной, которая в Event Integration Facility называется слот.
Ошибка: отказ диска
Ошибка: недостаточно памяти
ПРЕДУПРЕЖДЕНИЕ: неправильный вход в систему Error:, и
проигнорировать строку, начинающуюся с Warning:. Регулярное выражение должно сопоставить строки, начинающиеся с
Error, а также должно включать в себя подвыражение. Подвыражение отмечено круглыми скобками и должно сопоставить только
тот входной текст, который нужно назначить слоту msg. Следующее определение формата содержит простое регулярное
выражение с одним единственным подвыражением.REGEX REExample
Error: (.*)
msg $1
END
С учетом этой спецификации формата и приведенного перед этим набора данных журнала агент генерирует два события. Обоим событиям назначается класс событий REEXample. В первом событии значение disk failure назначается слоту msg. Кроме того, во втором событии значение out of memory назначается слоту msg. Поскольку строка Warning не соответствует регулярному выражению, она игнорируется, и событие не генерируется.
Если вы зададите значение $1 слоту msg, этому слоту будет назначено значение первого подвыражения.
Error: disk failure on device /dev/sd0: bad sector
Error: disk failure on device /dev/sd1: temperature out of rangeМожно включить в событие описание диска, на котором возникла
ошибка, и более конкретное сообщение об ошибке диска.REGEX DiskFailure
Error: disk failure on device (/dev/sd[0-9]):(.*)
device $1 CustomSlot1
msg $2
ENDНазначьте эти два подвыражения слотам событий. Два сгенерированных события будут содержать такие значения:
"device=/dev/sd0" and "msg=bad sector"
"device=/dev/sd1" and "msg=temperature out of range"
Если для генерирования первого события используется EIF, вывод будет как в следующем примере:
DiskError;device='/dev/sd0';msg='bad sector';END
Если событие отправлено на сервер сервер Cloud APM, то слот с именем msg назначается атрибуту Performance Management с тем же именем. Но у слота device нет предопределенного атрибута.
Если нужно узнать значение, непосредственно назначенное device на консоли консоль Cloud APM, или записать пороги для него, необходимо назначить это значение атрибуту Performance Management.
- Десять атрибутов типа строки в диапазоне от CustomSlot1 до CustomSlot10
- Три атрибута целочисленного типа в диапазоне от CustomInteger1 до CustomInteger3
CustomSlot и CustomInteger учитывается регистр, так что их нужно вводить точно так, как показано.Назначьте слот из определения события одному из этих пользовательских атрибутов Performance Management в файле формата.
REGEX DiskFailure
Error: disk failure on device (/dev/sd[0-9]):(.*)
device $1 CustomSlot1
msg $2
ENDКогда событие выводится на Сводная панель Производительность приложений, назначенное device значение назначается атрибуту Performance Management CustomSlot1. Это значение можно вывести на консоль
консоль Cloud APM или использовать для определения порогов. Любой слот в определении события можно назначить любому из 10 пользовательских атрибутов агента аналогичным образом, используя "CustomSlotn", где n - это число от 1 до 10 рядом с определением слота.
В этом примере первое подвыражение конкретное, (/dev/sd[0-9]), а второе подвыражение - общее, (.*). Определяя максимально конкретные регулярные выражения, вы повышаете производительность. Таким образом, если вы вводите поиск ошибки для устройства, не соответствующего конкретному сообщению об ошибке, определенному здесь,
процедура поиска останавливается сразу, как только ошибка не была найдена. При этом время на поиск соответствия не тратится.
REGEX REExample
Ошибка:
msg $1
END <EOL>
<EOF>Пользовательские атрибуты от CustomInteger1 до CustomInteger3 - это атрибуты 64-битового целого типа. Их можно использовать так же, как атрибуты CustomSlot строкового типа. Можно использовать эти атрибуты для отображения отдельных слотов или подвыражений, из файла журнала на отдельные атрибуты
Cloud
APM. Поскольку эти атрибуты числовые, для них можно использовать арифметические операции сравнения < и >, не доступные для строковых атрибутов.
Oct 24 11:05:10 jimmy fschecker[2165]: Filesystem /usr is 97% full.REGEX FileSystemUsage
^([A-Z][a-z]{2}) ([ 0-9][0-9]) ([0-9]{2}:[0-9]{2}:[0-9]{2}) (.*?) (.*?):
Файловая система (.*?) полна на ([0-9]+)%\.$
Месяц $1 CustomSlot1
Дата $2 CustomSlot2
Время $3 CustomSlot3
Хост $4 CustomSlot4
Служба $5 CustomSlot5
Файловая система $6 CustomSlot6
Процент заполнения $7 CustomInteger1
msg PRINTF("%s: %s% full", Filesystem, PctFull)
END ^ и $ на второй и третьей строках должно быть на одной строке.( Class == 'FileSystemUsage' AND CustomInteger1 >= 95) Затем другое событие может использовать CustomInteger1 для других целей без нежелательного срабатывания этого порога. Итак, теперь вы можете написать в Performance Management порог, который использует для атрибутов CustomInteger арифметические операции, недопустимые для атрибутов CustomSlots.
CustomInteger, могут возникнуть нулевые или непредвиденные
значения.