Создайте logStream для каждого файла журнала в cloudwatchLogs.

Я использую агент журнала AWS CloudWatch для отправки журнала приложений в AWS Cloudwatch.

В файле конфигурации cloudwatchLogs внутри моего EC2 instance у меня есть эта запись:

[/scripts/application]
datetime_format = %Y-%m-%d %H:%M:%S
file = /workingdir/customer/logfiles/*.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /scripts/application

В соответствии с этой конфигурацией все файлы журналов в каталоге workdir отправляются в cloudwatchLogs в том же потоке, где имя является идентификатором экземпляра.

У меня вопрос: Я хочу для каждого файла журнала создать отдельный logStream, чтобы чтение журналов было более быстрым и разборчивым. Другими словами, каждый раз, когда у меня появляется новый файл журнала, автоматически создается новый поток журнала.

Я думал сделать это с помощью сценария оболочки в задании cron, но тогда мне придется изменить многие другие конфигурации в архитектуре, поэтому я ищу способ сделать это в файле конфигурации. В документации говорят, что:

log_stream_name

Указывает целевой поток журнала. Вы можете использовать литеральную строку или предопределенные переменные ({instance_id}, {hostname}, {ip_address}) или их комбинацию для определения имени потока журнала. Поток журнала создается автоматически, если он еще не существует.

Имена файлов журналов не могут быть предсказуемы на 100%, но они всегда имеют такую ​​структуру:

CustomerName-YYYY-mm-dd.log

Кроме того, еще одна проблема заключается в том, что:

Работающий агент должен быть остановлен и перезапущен, чтобы изменения конфигурации вступили в силу.

Как я могу установить logStream в этом случае?

Любые идеи или предложения или обходные пути очень ценятся.


person Souad    schedule 21.03.2017    source источник
comment
Я знаю, что вы спрашивали об этом довольно давно, но нашли ли вы в конце концов решение? Я сталкиваюсь с теми же ограничениями при попытке настроить агент ведения журналов AWS, чтобы он был более автоматизированным, избегая необходимости настраивать каждый поток журналов отдельно; у нас просто слишком много лог-файлов, чтобы это было возможно, поэтому мы будем очень признательны за любой вклад. Спасибо!   -  person sndrsnk    schedule 17.01.2018


Ответы (1)


Я знаю, что прошло почти два года, но я хотел сделать то же самое и не мог найти способ заставить его работать. Я обратился в службу поддержки AWS, которая затем подтвердила, что это невозможно. Мы ограничены вариантами, предлагаемыми в документации, как и вы. Однако вы можете иметь группы журналов, содержащие путь к файлу журнала до первой точки:

log_group_name — необязательно. Указывает, что использовать в качестве имени группы журналов в CloudWatch Logs. Допустимые символы включают a-z, A-Z, 0-9, '_' (подчеркивание), '-' (дефис), '/' (косая черта) и '.' (период).

Мы рекомендуем указать это поле, чтобы избежать путаницы. Если вы опустите это поле, путь к файлу до последней точки будет использоваться в качестве имени группы журналов. Например, если путь к файлу — /tmp/TestLogFile.log.2017-07-11-14, имя группы журналов — /tmp/TestLogFile.log.

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html

person Marco A.    schedule 26.02.2019