#amazon-cloudwatch #amazon-cloudwatchlogs #aws-cloudwatch-log-insights #log4js-node
#amazon-cloudwatch #amazon-cloudwatchlog #aws-cloudwatch-log-insights #log4js-узел
Вопрос:
У меня проблема с журналами в Cloud Watch. Я продолжаю получать журналы для разных записей вместо одной записи в журнале. Вот пример.
Вывод в консоль:
[2020-12-21T11:51:21.966] [ERROR] default - [handlerProcess] [
ValidationError {
target: OnBroadcastStart {
broadcast_id: 'bro_...',
session_id: null,
timestamp: '2020-12-21T11:51:21.920Z'
},
value: null,
property: 'session_id',
children: [],
constraints: {
isNotEmpty: 'session_id should not be empty',
isString: 'session_id must be a string'
}
}
]
This is the output from a single error log.
Вывод в Cloud watch:
[2020-12-21T11:51:21.966] [ERROR] default - [handlerProcess] [
[2020-12-21T11:51:21.966] ValidationError {
[2020-12-21T11:51:21.966] target: OnBroadcastStart {
[2020-12-21T11:51:21.966] broadcast_id: 'bro_...',
[2020-12-21T11:51:21.966] session_id: null,
[2020-12-21T11:51:21.966] timestamp: '2020-12-21T11:51:21.920Z'
[2020-12-21T11:51:21.966] },
[2020-12-21T11:51:21.966] value: null,
[2020-12-21T11:51:21.966] property: 'session_id',
[2020-12-21T11:51:21.966] children: [],
[2020-12-21T11:51:21.966] constraints: {
[2020-12-21T11:51:21.966] isNotEmpty: 'session_id should not be empty',
[2020-12-21T11:51:21.966] isString: 'session_id must be a string'
[2020-12-21T11:51:21.966] }
[2020-12-21T11:51:21.966] }
[2020-12-21T11:51:21.966] ]
Каждая отдельная строка здесь является записью.
Есть ли способ это исправить? В качестве регистратора для проекта я использую Log4js.
Ответ №1:
Поэтому, если вы используете агент Cloudwatch, вам необходимо настроить параметр Timestamp_format . Если вы не укажете формат, CloudWatch будет проверять каждую строку журнала с указанием временной метки и даты, зависящей от конкретной эпохи.
Чтобы настроить параметры агента, вы можете найти информацию здесь: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html
Комментарии:
1. Что, если я не настроил агента? Например, эти журналы настраиваются автоматически из контейнера ECS с помощью Fargate. Я захожу в консоль из своего приложения, и оно входит в cloud watch. Я ничего не настраивал.
2. Итак, это cloudwatch собирает ваши журналы Log4js и передает их в CW (насколько я понимаю).
3. Хорошо, у вас есть Log4JS, который не выводит журналы в формате, распознанном Cloudwatch, поэтому он добавляет к каждой строке значение, полученное DTG. ознакомьтесь с приложением log4js cloudwatch ( npmjs.com/package/log4js-cloudwatch-appender ) для вашего проекта (я предполагаю, что это NodeJS), если вместо этого вы говорите о log4j (для Apache), пожалуйста, дайте мне знать.
4. Большое спасибо, Эрик! Я обязательно это проверю!
5. @mojave в итоге я вывел в cloudwatch в виде строки. В результате журналы будут преобразовывать строку в объект при установке флажка «просмотр как текст» на консоли. Причина, по которой я в конечном итоге сделал это, также заключается в том, что таким образом вы можете использовать функцию поиска, и она найдет весь раздел, а не только слово separate . Я надеюсь, что это поможет