Я использую агент журнала 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 в этом случае?
Любые идеи или предложения или обходные пути очень ценятся.