#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.