Я использую python -logsta sh для записи в logsta sh. Он предлагает возможность добавлять дополнительные поля, но проблема в том, что все поля находятся под полем «сообщение».
Я должен признать, что это решение не работает для меня: Как добавить пользовательский поле для logstash / kibana?
Мой python сценарий выглядит следующим образом:
LOGGER = logging.getLogger('python-logstash-logger')
LOGGER.setLevel(logging.INFO)
#LOGGER.addHandler(logstash.LogstashHandler(127.0.0.1, 5000, version=1))
LOGGER.addHandler(logstash.TCPLogstashHandler('127.0.0.1', 5000, version=1))
LOGGER.error('python-logstash: test logstash error message.')
LOGGER.info('python-logstash: test logstash info message.')
LOGGER.warning('python-logstash: test logstash warning message.')
# add extra field to logstash message
extra = {
'test_string': 'python version: ' + repr(sys.version_info),
'test_boolean': True,
'test_dict': {'a': 1, 'b': 'c'},
'test_float': 1.23,
'test_integer': 123,
'test_list': [1, 2, '3'],
}
LOGGER.info("python-logstash: test extra fields", extra=extra)
И мой файл журнала logstath:
input {
beats {
port => 5044
}
stdin { codec => plain }
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
Все Я хочу, чтобы создать мои пользовательские поля, например, 'test_string' из ключей в дополнительной переменной. Как я уже сказал, все эти дополнительные переменные попадают в поле «сообщение», а я не хочу, чтобы каждый ключ в этом диктофоне становился полем в кибане. Как выполнить sh это?
Плюс, я получаю следующую ошибку из logsta sh (я вижу это в моем PowerShell):
[ERROR][logstash.codecs.json ][main] JSON parse error, original data now in message field {:error=>#<LogStash::Json::ParserError: Unrecognized token 'mestamp': was expecting ('true', 'false' or 'null')
Это, вероятно, из-за сломанного токена, который выглядит так:
Я знаю, что токен @version: 1, вероятно, исходит от моего logstashHandler, но где этот TIMESTAMP исходит и как исправить этот токен?
************************ ////// update //// ////// ******************************
Я думаю, что единственная причина, почему все Поля Land в поле 'message' - это сломанный токен. Как исправить этот токен "mestamp"? И откуда он? Я не установил его в своем коде python или logsta sh.