Настройка агента журналов AWS

Недавно мы настроили агент журналов AWS на одном из наших тестовых серверов. Наши файлы журналов обычно содержат многострочные события. например, одно из наших событий журнала:

[10-Jun-2016 07:30:16 UTC] SQS Post Response: Array
(
    [Status] => 200
    [ResponseBody] => <?xml version="1.0"?><SendMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"><SendMessageResult><MessageId>053c7sdf5-1e23-wa9d-99d8-2a0cf9eewe7a</MessageId><MD5OfMessageBody>8e542d2c2a1325a85eeb9sdfwersd58f</MD5OfMessageBody></SendMessageResult><ResponseMetadata><RequestId>4esdfr30-c39b-526b-bds2-14e4gju18af</RequestId></ResponseMetadata></SendMessageResponse>
)

В справочной документации агента журнала говорится, что для таких журналов следует использовать параметр «multi_line_start_pattern». Конфигурация нашего агента журнала AWS выглядит следующим образом:

[httpd_info.log]
file = /var/log/httpd/info.log*
log_stream_name = info.log
initial_position = start_of_file
log_group_name = test.server.name
multi_line_start_pattern = '(\[)+\d{2}-[a-zA-Z]{3}+-\d{4}'

Однако агент журналов сообщает о вышеупомянутых и подобных событиях с перерывами. Об этом сообщается в CloudWatch Logs следующим образом:

Событие 1:

[10-Jun-2016 11:21:26 UTC] SQS Post Response: Array

Событие 2:

( [Status] => 200 [ResponseBody] => <?xml version="1.0"?><SendMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/"><SendMessageResult><MessageId>053c7sdf5-1e23-wa9d-99d8-2a0cf9eewe7a</MessageId><MD5OfMessageBody>8e542d2c2a1325a85eeb9sdfwersd58f</MD5OfMessageBody></SendMessageResult><ResponseMetadata><RequestId>4esdfr30-c39b-526b-bds2-14e4gju18af</RequestId></ResponseMetadata></SendMessageResponse>

Событие 3:

)

Несмотря на то, что это всего лишь единичное событие. Любая подсказка, что здесь происходит?


person Furhan S.    schedule 10.06.2016    source источник


Ответы (1)


Я думаю, все, что вам нужно добавить, это следующее в ваш awslogs.conf

datetime_format = %d-%b-%Y %H:%M:%S UTC
time_zone = UTC
multi_line_start_pattern = {datetime_format}

http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html

multi_line_start_pattern

Задает шаблон для определения начала сообщения журнала. Сообщение журнала состоит из строки, соответствующей шаблону, и любых последующих строк, не соответствующих шаблону. Допустимые значения: регулярное выражение или {datetime_format}. При использовании {datetime_format} необходимо указать параметр datetime_format. Значение по умолчанию — «^[^\s]», поэтому любая строка, начинающаяся с символа, отличного от пробела, закрывает предыдущее сообщение журнала и запускает новое сообщение журнала.

Если этот формат даты и времени не работает, вам нужно будет обновить регулярное выражение, чтобы оно действительно соответствовало вашему конкретному времени и дате. Я не думаю, что тот, который вы перечислили выше, действительно работает для вашего формата.

Вы можете попробовать это, например:

[\d{2}-[\w]{3}-\d{4}\s{1}\d{2}:\d{2}:\d{2}\s{1}\w+]

соответствует

[10 июня 2016 г., 11:21:26 UTC]

См. здесь: http://www.regexpal.com/?fam=96811.

После завершения выполните перезапуск службы и проверьте правильность ее синтаксического анализа.

$ sudo service awslogs перезапустить

person tragicrock    schedule 03.02.2017