Я использую сопутствующие функции Graylog с Filebeat для получения нескольких различных файлов журналов с моего сервера, включая Syslog, Nginx и Java App. Все они поступают в один и тот же вход Graylog для Beats (я пытался предоставить несколько входов, к сожалению, Filebeat отправляет в одно и только одно место). Все отлично работает, кроме экстракторов.
Как мне указать конкретный экстрактор для определенного сообщения журнала? Пример: Если поле ' type '=' API '(мое приложение Java), я хочу применить экстрактор JSON. Если type = 'nginx', применить экстракторы регулярных выражений.
Вы можете связать экстракторы таким образом, чтобы, если сообщение содержит API, копировать сообщение в api_message, выполнять экстрактор в этом новом поле.
сделать то же самое для nginx и т. Д.
Я загружаю несколько источников журналов на один вход и к нему привязаны 4 экстрактора. Судя по поведению, которое я наблюдал, если экстрактор не соответствует требованиям, он просто переходит к следующему экстрактору. Это всего лишь попытка, а не сила.
Например, мои экстракторы:
Когда журнал приложения поступает без ошибок, он:
И когда поступает системный журнал Mac OS X:
С некоторым планированием и хорошими наборами приемов , вы можете заставить это работать с большим количеством экстракторов на основе ожидаемого форматирования ваших журналов. Особенно полезной для вас может быть опция «Выполнять извлечение, только если поле содержит (строку / регулярное выражение)» в экстракторах.