Сложный шаблон logsta sh в Гроке - PullRequest
1 голос
/ 28 января 2020

У меня есть следующие 3 строки в журнале, которые должны быть grok'd для ElasticSearch через logsta sh.

2020-01-27 13:30:43,536 INFO  com.test.bestmatch.streamer.function.BestMatchProcessor  - Best match for ID: COi0620200110450BAD5CB723457A9B4747F1727 Total Batch Processing time: 3942
2020-01-27 13:30:43,581 INFO  HTTPConnection                                              - COi0620200110450BAD5CB723457A9B4747F1727 | People: 51 | Addresses: 5935 | HTTP Query Time: 24
2020-01-27 13:30:43,698 INFO  bestRoute                                                    - COi0620200110450BAD5CB723457A9B4747F1727 | Touch Points: 117 | Best Match Time 3943

Я пробовал различные шаблоны grok, но не смог найти ни одного конкретного.

Отредактировано согласно запросу

Мне нужно следующее в ES в контексте заданной c записи журнала

1-я строка

ID: COi0620200110450BAD5CB723457A9B4747F1727 
Total Batch Processing time: 3942 

2-я строка

ID: COi0620200110450BAD5CB723457A9B4747F1727 
People: 51 
Addresses: 5935 
HTTP Query Time: 24

3-я строка

Touch Points 117 
Best Match Time: 3943.

Вывод из журнала Flink. Если есть образцы моргания, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 28 января 2020

1-я строка:

^%{TIMESTAMP_ISO8601:time}\s*%{LOGLEVEL:loglevel}.*ID: (?<ID>[\w\d]*).*time: (?<total_time>[\d]*)$

2-я строка:

^%{TIMESTAMP_ISO8601:time}\s*%{LOGLEVEL:loglevel}.* - (?<ID>[\w]*).*People: (?<people>[\w]*).*Addresses: (?<addresses>[\d]*).*HTTP Query Time: (?<query_time>[\d]*)$

3-я строка:

^%{TIMESTAMP_ISO8601:time}\s*%{LOGLEVEL:loglevel}.* - (?<ID>[\w]*).*Touch Points: (?<touch_points>[\d]*).*Best Match Time (?<best_match_time>[\d]*)$

Есть много способов разобрать это, это только один подход. Я бы порекомендовал настроить имена полей, которые я использовал, для новой ECS. https://www.elastic.co/guide/en/ecs/current/index.html

...