Эластичное Beanstalk CloudWatch Log streaming перестает работать - Как отлаживать

Моя эластичная среда Beanstalk останавливает потоковые события node.js для журналов CloudWatch. Потоковая передача отлично подходит для просмотра минут в новом экземпляре. После просмотра минут в CloudWatch не появляется больше журналов.

Я настроил AWS Elastic Beanstalk для потока журналов в CloudWatch в разделе "Конфигурация" > "Конфигурация программного обеспечения" > "Журналы CloudWatch" > "Поток журнала" (true). Я отключил поток журналов и реактивировал его в качестве теста. Взгляд на cloudwatch

  • Последний журнал активности eb составляет около 10 минут.
  • Журнал ошибок недоступен (ни в одном из экземпляров)
  • nginx/access.log - это представление в секундах
  • nodejs.log составляет около часа (короткий после перезапуска экземпляра)

Каждая проверка работоспособности записывает запись в журнал каждый вид секунд в nodejs.log.

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

  • Есть ли похожие проблемы?
  • Как я могу создать журналы узлов node.ls с эластичным beanstalk потоком в журналах CloudWatch.

--- EDIT

[[email protected]###-##-##-## log]$ cat /var/log/awslogs.log 
2017-03-07 11:01:05,928 - cwlogs.push.stream - INFO - 31861 - Thread-1 - Detected file rotation, notifying reader
2017-03-07 11:01:05,928 - cwlogs.push.stream - INFO - 31861 - Thread-1 - Reader is still alive.
2017-03-07 11:01:05,928 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/error.log*'.
2017-03-07 11:01:05,928 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/access.log*'.
2017-03-07 11:01:06,052 - cwlogs.push.reader - INFO - 31861 - Thread-8 - No data is left. Reader is leaving.
2017-03-07 11:01:10,929 - cwlogs.push.stream - INFO - 31861 - Thread-1 - Removing dead reader [2177a5cce5ed29525de329bfdc292ff1, /var/log/nginx/access.log]
2017-03-07 11:01:10,929 - cwlogs.push.stream - INFO - 31861 - Thread-1 - Starting reader for [92257964a10edeb586f084f4f2ba35de, /var/log/nginx/access.log]
2017-03-07 11:01:10,930 - cwlogs.push.reader - INFO - 31861 - Thread-11 - Start reading file from 0.
2017-03-07 11:01:10,930 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/error.log*'.
2017-03-07 11:01:10,930 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/access.log*'.
2017-03-07 11:01:15,931 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/error.log*'.
2017-03-07 11:01:15,931 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/access.log*'.
2017-03-07 11:01:16,788 - cwlogs.push.publisher - INFO - 31861 - Thread-7 - Log group: /aws/elasticbeanstalk/production/var/log/nginx/access.log, log stream: i-0bd24767864801e2c, queue size: 0, Publish batch: {'skipped_events_count': 0, 'first_event': {'timestamp': 1488884470930, 'start_position': 0L, 'end_position': 114L}, 'fallback_events_count': 0, 'last_event': {'timestamp': 1488884472931, 'start_position': 341L, 'end_position': 454L}, 'source_id': '92257964a10edeb586f084f4f2ba35de', 'num_of_events': 4, 'batch_size_in_bytes': 554}
2017-03-07 11:01:20,932 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/error.log*'.
2017-03-07 11:01:20,932 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/access.log*'.
2017-03-07 11:01:25,933 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/error.log*'.
2017-03-07 11:01:25,933 - cwlogs.push.stream - WARNING - 31861 - Thread-1 - No file is found with given path '/var/log/httpd/access.log*'.
2017-03-07 11:01:27,881 - cwlogs.push.publisher - INFO - 31861 - Thread-7 - Log group: /aws/elasticbeanstalk/production/var/log/nginx/access.log, log stream: i-0bd24767864801e2c, queue size: 0, Publish batch: {'skipped_events_count': 0, 'first_event': {'timestamp': 1488884481933, 'start_position': 454L, 'end_position': 568L}, 'fallback_events_count': 0, 'last_event': {'timestamp': 1488884482934, 'start_position': 568L, 'end_position': 681L}, 'source_id': '92257964a10edeb586f084f4f2ba35de', 'num_of_events': 2, 'batch_size_in_bytes': 277}

Ответ 1

Когда Эндрю (@andrew-ferk) и я активировали потоковую передачу журналов, он создал все группы журналов и потоки в CloudWatch с текущим журналом. После того, как мы снова развернули, мы заметили, что журналы прекратились. Это потому, что aws хэширует первую строку журнала. Если он видел этот хеш до того, как обработает этот файл, как будто он уже был обработан

Если вы используете npm start в первых строках будет указано имя вашего приложения с версией.

Вы можете добавить CMD date && npm start в ваш dockerfile, чтобы каждый раз запускать новую первую строку, или запускать npm в режиме без вывода сообщений (если ваш первый вывод уникален).

Кроме того, в соответствии с их документами, вы должны добавить некоторые правила в свой эластичный бобовый стебель, прежде чем включать функцию AWS-Docs.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:GetLogEvents",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:PutRetentionPolicy"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

Ответ 2

Следующие часто задаваемые вопросы могут быть полезны:

Некоторые вещи, чтобы проверить, если вы потоковые пользовательские файлы журнала:

  1. eb ssh в экземпляр eb ssh и посмотрите на /var/log/awslogs.log. Если в нем даже не упоминается "Загрузка дополнительных конфигураций из (вашего файла конфигурации awslogs)", убедитесь, что вы правильно устанавливаете свой файл конфигурации, а также перезапускаете сервис awslogs после его установки (предположительно, с использованием .ebextensions. См. "Пользовательский файл журнала"). Потоковая передача "в разделе Использование Elastic Beanstalk с журналами Amazon CloudWatch. Информацию о перезапуске службы awslogs см. В разделе commands в файле logs-streamtocloudwatch-linux.config.
  2. Агент логов CloudWatch находится в состоянии. Если первые несколько строк вашего файла журнала пустые или никогда не меняются, вам может потребоваться установить file_fingerprint_lines. См. Справочник по агентам CloudWatch Logs.