Получение нескольких полей из сообщения в filebeat и logstash - PullRequest
0 голосов
/ 27 марта 2019

Я записываю журналы в файл журнала из моего приложения Django, оттуда я отправляю эти журналы вasticsearch. Поскольку я также хочу разделить поля, я использую logstash между filebeat иasticsearch.

Вот пример поля журнала:

2019-03-19 13:39:06 ИНФОРМАЦИЯ о лог-файле save_data {'field1': нет, 'time': '13: 39: 06 ',' mobile ':' 9876543210 ',' list_item ': "[{' item1 ': 10, 'item2': 'path / to / file'}] ", 'response': '{some_complicated_json}}', 'field2': 'некоторые данные', 'date': '19 -03-2019 ',' field3 ':' некоторые другие данные '}

Я пытался написать шаблон соответствия GROK, но все поля входят в поле message:

%{TIMESTAMP_ISO8601:temp_date}%{SPACE} %{WORD:logfile} %{LOGLEVEL:level} %{WORD:save_data} %{GREEDYDATA:message}  

Как мне написать шаблон соответствия GROK, который можно разложить над записью журнала.

1 Ответ

0 голосов
/ 27 марта 2019

Я не знаю, как вы могли бы сделать это с Grok, но способ, которым мы делаем это с процессором json в упругом конвейере узла приема . Как то так:

{
    "my-log-pipeline": {
        "description": "My log pipeline",
        "processors": [{
            "json": {
                "field": "message",
                "target_field": "messageFields"
            }
        }]
    }
}

Тогда вам просто нужно указать вашему источнику (filebeat / logstash) использовать этот конвейер при приеме внутрь.

...