анализ журналов python с помощью logstash

#python #logstash #logstash-configuration #elk #python-logging

Вопрос:

Я пытаюсь настроить полный конвейер ведения журнала следующим образом: python-logstash -> logstash ->> elasticsearch ->>> кибана

из файла config.yml (конфигурация ведения журнала):

 handlers
 logstash:
   class: logstash.LogstashHandler
   host: logstash
   port: 9010
 

из logstash.conf

 input {
  udp {
      port => 9010
      codec => "json"
  }
}

output {
  elasticsearch {
      hosts => ["***"]
      user => "***"
      password => "***"
  }
  stdout{}
}
 

вот какой результат я получаю:

 logstash_1           | {
logstash_1           |     "@timestamp" => 2021-10-17T08:43:26.456Z,
logstash_1           |           "host" => "172.21.0.3",
logstash_1           |           "tags" => [
logstash_1           |         [0] "_jsonparsefailure"
logstash_1           |     ],
logstash_1           |        "message" => "u0000",
logstash_1           |       "@version" => "1"
logstash_1           | }
 

Это мой формат ведения журнала:

 format: '[%(asctime)s] - %(levelname)s - %(name)s - %(funcName)s:%(lineno)d : %(message) %(extra)s'
 

Может ли кто-нибудь сказать мне, чего именно не хватает в моем файле logstash.conf, чтобы он работал? Не смог найти ничего, что работало бы на меня.

Должен ли я создавать свой собственный шаблон grok? Если да, то как я могу правильно проанализировать дополнительные поля? (я использовал этот исходный код для извлечения дополнительных полей: https://github.com/vklochan/python-logstash/blob/7bd98c049533b101c2357c38135f21aaa441ebb3/logstash/formatter.py#L23)

Заранее спасибо всем помощникам!

Комментарии:

1. Если ваше сообщение в json формате, ваша конфигурация верна, ошибка, которую вы получили, заключается в том, что отправленное сообщение не было json. Это сообщение, которое пытался проанализировать "message" => "u0000" логсташ , которое, конечно, не является json. Вам нужно проверить свой код, чтобы увидеть, что отправляет такого рода сообщение, а не ваше сообщение json.