Создайте собственный шаблон Grok для сообщения, поданного в elasticsearch

У меня вопрос, связанный с процессором Grok. Например, это мое сообщение подано

{
"message":"agentId:agent003"
}

Я хочу Grok это, и мой вывод должен мне что-то вроде этого

{
"message":"agentId:agent003",
"agentId":"agent003"
}

Может ли кто-нибудь помочь мне в этом, как этого добиться? Если я могу сделать это для одного поля, я могу сделать это для остальных полей. Заранее спасибо.

Это конвейер, который я создал в elasticsearch

PUT _ingest/pipeline/dissectpipeline
{
  "description" : "split message content",
  "processors": [
    {
      "dissect": {
      "field": "message",
      "pattern" : "%{apm_application_message.agentId}:%{apm_application_message.agentId}"
   }
    }
  ]
}

Централизованное управление добавило модуль filebeat другой конфигурации

- pipeline:
    if: ctx.first_char == '{'
    name: '{< IngestPipeline "dissectpipeline" >}'

В моем файле нет ошибки, он работает нормально, но я не могу найти в индексе какое-либо поле, например apm_application_message.agentId.

Как убедиться, что мой пайплайн работает или нет. Также, если я делаю что-то не так, дайте мне знать.


person sanjay m    schedule 17.06.2020    source источник


Ответы (1)


Вместо Grok я бы предложил использовать dissect filter, что более интуитивно понятно и проще в использовании.

dissect {
  mapping => {
    "message" => "%{?agentId}:%{&agentId}"
  }
}

Если вы используете Filebeat, есть также возможность использовать dissect процессор:

processors:
  - dissect:
      tokenizer: "%{?agentId}:%{&agentId}"
      field: "message"
      target_prefix: ""
person Val    schedule 17.06.2020
comment
Если я использую этот процессор в конвейере, он отлично работает в консоли kibana. но я намерен проанализировать его при отправке данных в elasticsearch с помощью filebeat. Не могли бы вы сообщить мне, как использовать этот процессор в filebeat. - person sanjay m; 17.06.2020
comment
Примечание: я отправляю пользовательские данные журнала Java-приложения из файлов журнала, используя ведение журнала ECS для Java-приложений с использованием filebeat. - person sanjay m; 17.06.2020
comment
Хорошо, я думал, вы используете Logstash, пожалуйста, посмотрите мой обновленный ответ. - person Val; 17.06.2020
comment
Мой filebeat.yml создается автоматически в том смысле, что я все настроил в централизованном управлении Beats. В таком случае, где мы можем добавить процессор? - person sanjay m; 17.06.2020
comment
Однако вы должны знать, что Beats Централизованное управление будет прекращено, чтобы в версии 7.8 появилось лучшее решение. - person Val; 17.06.2020
comment
Да, используя модуль filebeat в центральном управлении, я выбрал elasticsearch и указал конвейер, который я создал. Filebeat работает нормально, но никаких следов вновь созданного поля. Учитывая все мои обходные пути выше для вашей справки - person sanjay m; 17.06.2020
comment
Круто, рада, что вы разобрались! - person Val; 17.06.2020
comment
Для вашего сведения, Elastic stack 7.8 появился несколько минут назад, и лучшее решение (также известное как Ingest Manager) описано здесь: elastic.co/guide/en/kibana/current/ingest-manager.html. - person Val; 18.06.2020
comment
К вашему сведению, статья в блоге о Ingest Manager и эластичных агентах: elastic.co/ блог / введение-эластичный-агент-и-менеджер-поглощений - person Val; 19.06.2020