Отсутствует сообщение об отсутствии журнала Django Elastic APM Trace

У меня установлен Django-elastic APM, который отправляет трассировки и логи в elk stack. Это действительно работает, но не так, как мне нужно. Я получаю трассировку, я получаю метаданные, даже журналы получены (2-я картинка) I get trace, I get metadata, even logs received (2nd pic)

Но проблема в том, что я не получаю никаких сообщений в разделе журналов, и я не нашел, как настроить поля.

no messages!

Но! Когда я ищу непосредственно в журналах, я вижу следующее: Сообщение существует Message exist

Наконец, когда я ищу в разделе discover, я вижу еще больше информации. Поля, которые мне действительно нужны.fields, I actually need

ВОПРОС

Итак, вот мои вопросы. Возможно ли добавить хотя бы информацию о сообщениях в журналы транзакций (первый рисунок), Возможно ли добавить хотя бы пользовательские поля в раздел журналов (второй рисунок) Также, есть ли способ сделать журналы хотя бы кликабельными? (Также на втором рисунке, я имею в виду, что это просто текст, я должен перейти к обнаружению и использовать эту информацию, как 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.

Вернуться на верх