Пользовательские метрики, использующие Grok с logstash - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь интегрировать некоторый код в существующий стек ELK, и мы ограничены использованием filebeats + logstash.Мне бы хотелось иметь способ настроить фильтр grok, который позволит различным разработчикам регистрировать сообщения в заранее заданном формате, чтобы они могли собирать пользовательские метрики и в конечном итоге создавать инструментальные панели kibana.

Например,одна команда может регистрировать следующие сообщения:

metric_some.metric=2
metric_some.metric=5
metric_some.metric=3

А другая команда может регистрировать следующие сообщения из другого приложения:

metric_another.unrelated.value=17.2
metric_another.unrelated.value=14.2

Есть ли способ настроить один фильтр grok, который будетзахватить все после metric_ как новое поле вместе со значением?Все, что я прочитал здесь , похоже, указывает на то, что вам нужно знать имя поля заранее, но моя цель - иметь возможность начать регистрировать новые метрики без необходимости добавлять / изменять фильтры grok.

Примечание: я понимаю, что Metricsbeat, вероятно, является лучшим решением, но поскольку мы интегрируемся с существующим кластером ELK, который мы не контролируем, это не вариант для меня.

1 Ответ

0 голосов
/ 14 февраля 2019

Поскольку ваши сообщения представляют собой последовательность пар ключ-значение, вы можете использовать фильтр kv вместо grok.

. При использовании grok вам необходимо назвать поле назначения,с kv имя поля назначения будет таким же, как key.

Для вашего случая должна работать следующая конфигурация.

filter { kv { prefix => "metric_" } }

Для события metric_another.unrelated.value=17.2ваш вывод будет что-то вроде { "another.unrelated.value": "17.2" }

...