2016-08-19 4 views
0

Я использую LogStash, который принимает данные из файла журнала, который имеет разные типы журналов.Как использовать регулярное выражение для файлов конфигурации в этом случае?

Я попытался это:

filter { 
    grok { 
    match => { "message" => "%{WORD:tag} %{WORD:message} %{WORD:value} 
    } 
}   

Но это не работает.

+0

В вашем фильтте grok вам не хватает «в конце». – baudsp

+0

Все ли теги и сообщения всегда одно слово (только буквы без пробела или символов другого типа)? – baudsp

+0

@baudsp, я попытался воссоздать минималистичный пример моего использования. Да, это может быть и больше символов. И я пробовал даже с двойной кавычкой, но это не сработает. Я думаю, что в моем файле журнала есть несколько форматов, продвигаясь вперед, Правильный вариант. –

ответ

0

Я использую фильтр grok, чтобы проверить, имеет ли строка журнала один формат.

Если фильтр grok не может проанализировать строку журнала (например, с линиями json), _grokparsefailure будет добавлен в теги. Затем вы можете использовать этот тег, чтобы различать два типа журнала.

filter { 
    grok { 
     match => { 
     "message"=> 
      "tag: %{GREEDYDATA:tag} message: %{GREEDYDATA:message} value: %{WORD:value}" 
     } 
    } 

    if "_grokparsefailure" in [tags] { 
     json { 
      source => message 
     } 
    } 
} 

Чтобы проверить шаблон ГРОК, Grok Constructor является хорошим инструментом.

+0

Есть ли способ сделать это с регулярным выражением? Потому что, наконец, мне тоже нужно изменить содержимое журналов. Следовательно, путь с регулярным выражением был бы лучшим выходом. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^