Отсутствует сообщение об отсутствии журнала Django Elastic APM Trace
У меня установлен Django-elastic APM, который отправляет трассировки и логи в elk stack. Это действительно работает, но не так, как мне нужно. Я получаю трассировку, я получаю метаданные, даже журналы получены (2-я картинка)
Но проблема в том, что я не получаю никаких сообщений в разделе журналов, и я не нашел, как настроить поля.
Но! Когда я ищу непосредственно в журналах, я вижу следующее: Сообщение существует
Наконец, когда я ищу в разделе discover, я вижу еще больше информации. Поля, которые мне действительно нужны.
ВОПРОС
Итак, вот мои вопросы. Возможно ли добавить хотя бы информацию о сообщениях в журналы транзакций (первый рисунок), Возможно ли добавить хотя бы пользовательские поля в раздел журналов (второй рисунок) Также, есть ли способ сделать журналы хотя бы кликабельными? (Также на втором рисунке, я имею в виду, что это просто текст, я должен перейти к обнаружению и использовать эту информацию, как ctrl+c ctrl+v) Наконец, почему журналы помечены как Errors, если это просто журналы, и используются как журналы? Я пытался установить различные уровни как debug, или info, как вы видите на втором экране, но он все равно приходит как ошибка и попадает в apm-7.14-error* index.
Вот мои настройки протоколирования:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': 'velname)s %(message)s'
},
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'elasticapm': {
'level': 'DEBUG',
'class': 'elasticapm.contrib.django.handlers.LoggingHandler',
},
},
'loggers': {
'meditations': {
'handlers': ['elasticapm'],
'level': 'DEBUG',
'propagate': False,
},
}
} И вот как я отправляю журналы:
logger = logging.getLogger('meditations')
logger.info(
'info',
extra={
'request.data': request.data,
'user_utc_time': request.user.fcmTime
}
)
logger.warning(
'log',
extra={
'request.data': request.data,
'user_utc_time': request.user.fcmTime
}
)
logger.debug(
'debug',
extra={
'request.data': request.data,
'user_utc_time': request.user.fcmTime
}
)
Я сам догадался. Elastic logs не предоставляет debug-info-warn logs, он используется только для передачи высокоуровневых (критичных к ошибкам) логов и не хранит сообщения. Если вы пришли сюда, вам следует использовать логи Django и отправлять их в elastic через logstash или filebeat. Я использовал logstash.