Форматирование журналов AWS Cloud Watch

#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 . Я надеюсь, что это поможет