Каким должен быть рисунок Грока для этих бревен?(приемный конвейер для filebeat) - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в сообществеasticsearch, и мне нужна ваша помощь в чем-то, с чем я борюсь.Моя цель - отправить огромное количество файлов журнала в Elasticsearch с помощью Filebeat.Для этого мне нужно проанализировать данные, используя узлы загрузки с процессором паттернов Grok.Без этого все мои журналы не могут быть использованы, так как каждый из них попадает в одно и то же поле «сообщения».К сожалению, у меня есть некоторые проблемы с регулярным выражением grok, и я не могу найти проблему, так как это первый раз, когда я работаю с этим.Мои журналы выглядят так:

2016-09-01T10:58:41+02:00 INFO (6):     165.225.76.76   entreprise1 email1@gmail.com    POST    /application/controller/action  Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko   {"getid":"1"}   86rkt2dqsdze5if1bqldfl1
2016-09-01T10:58:41+02:00 INFO (6):     165.225.76.76   entreprise2 email2@gmail.com    POST    /application/controller/action  Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko   {"getid":"2"}   86rkt2rgdgdfgdfgeqldfl1
2016-09-01T10:58:41+02:00 INFO (6):     165.225.76.76   entreprise3 email3@gmail.com    POST    /application/controller/action  Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko   {"getid":"2"}

Итак, у нас есть вкладки в качестве разделителя и поля: дата, ip, имя_компании, адрес электронной почты, метод (post, get), URL, браузер, json_request, код_обязания

Мой приемный конвейер json выглядит так:

PUT _ingest/pipeline/elastic_log_index

    {
      "description" : "Convert logs txt files",
      "processors" : [
        {
          "grok": {
            "field": "message",
            "patterns": ["%{TIMESTAMP_ISO8601:timestamp} %{IP:ip} %{WORD:company}% {EMAILADDRESS:email} %{URIPROTO:method} %{URIPATH:page} %{WORD:browser} %{WORD:code}"]

          }
        },
        {
          "date" : {
            "field" : "timestamp",
            "formats" : ["yyyy-MM-ddTHH:mm:ss INFO(6):"]
          }
        }
      ],
      "on_failure" : [
        {
          "set" : {
            "field" : "error",
            "value" : " - Error processing message - "
          }
        }
      ]
    }

Это не работает.

1) Как я могу избежать символов?Например, «INFO (6):» в конце отметки времени

2) Могу ли я просто использовать пробел между полями в моем шаблоне Горка?Разделители в журнале файлов являются вкладками.

3) Код в конце строк не всегда присутствует в журналах, может ли это быть проблемой?

4) У вас есть идеи, почему эта конфигурацияне разбирается ли в любом случае мой документ логов вasticsearch?

Большое спасибо за вашу помощь и извините мой уровень английского я француз.

1 Ответ

0 голосов
/ 13 июня 2018

Ваш шаблон grok не совпадает со всем в вашем журнале, поэтому он не работает.Например, %{WORD} будет соответствовать только Mozilla, а не /5.0.Вы можете создать собственный шаблон, чтобы соответствовать целому browser/version, как это (?<browser>%{WORD}(/%{NUMBER})?).

Вы можете избежать INFO (6):, просто сопоставив его с .*, и он будет проигнорирован в выводе.

Что касается пробелов, пожалуйста, сопоставьте их, используя предопределенный шаблон grok%{SPACE}.

код в конце может стать необязательным при создании пользовательского шаблона, то есть (?<optional_code>%{WORD}?)

Тогда весь ваш шаблон grok станет

%{TIMESTAMP_ISO8601:timestamp}.*%{IP:ip}%{SPACE}%{WORD:company_name}%{SPACE}%{EMAILADDRESS:email}%{SPACE}%{URIPROTO:method}%{SPACE}%{URIPATH:page}%{SPACE}(?<browser>%{WORD}(/%{NUMBER})?)%{SPACE}\(%{GREEDYDATA:content}\).*\{%{GREEDYDATA:json}\}%{SPACE}(?<optional_code>%{WORD}?)

{
  "timestamp": [
    [
      "2016-09-01T10:58:41+02:00"
    ]
  ],
  "YEAR": [
    [
      "2016"
    ]
  ],
  "MONTHNUM": [
    [
      "09"
    ]
  ],
  "MONTHDAY": [
    [
      "01"
    ]
  ],
  "HOUR": [
    [
      "10",
      "02"
    ]
  ],
  "MINUTE": [
    [
      "58",
      "00"
    ]
  ],
  "SECOND": [
    [
      "41"
    ]
  ],
  "ISO8601_TIMEZONE": [
    [
      "+02:00"
    ]
  ],
  "ip": [
    [
      "165.225.76.76"
    ]
  ],
  "IPV6": [
    [
      null
    ]
  ],
  "IPV4": [
    [
      "165.225.76.76"
    ]
  ],
  "SPACE": [
    [
      "   ",
      " ",
      "    ",
      "    ",
      "  ",
      " ",
      "   "
    ]
  ],
  "company_name": [
    [
      "entreprise1"
    ]
  ],
  "email": [
    [
      "email1@gmail.com"
    ]
  ],
  "EMAILLOCALPART": [
    [
      "email1"
    ]
  ],
  "HOSTNAME": [
    [
      "gmail.com"
    ]
  ],
  "method": [
    [
      "POST"
    ]
  ],
  "page": [
    [
      "/application/controller/action"
    ]
  ],
  "browser": [
    [
      "Mozilla/5.0"
    ]
  ],
  "WORD": [
    [
      "Mozilla",
      "86rkt2dqsdze5if1bqldfl1"
    ]
  ],
  "NUMBER": [
    [
      "5.0"
    ]
  ],
  "BASE10NUM": [
    [
      "5.0"
    ]
  ],
  "content": [
    [
      "Windows NT 6.1; Trident/7.0; rv:11.0"
    ]
  ],
  "json": [
    [
      ""getid":"1""
    ]
  ],
  "optional_code": [
    [
      "86rkt2dqsdze5if1bqldfl1"
    ]
  ]
}

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

EMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+
EMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME}
...