Вопрос или проблема
Прежде всего, пожалуйста, поймите, что английский может быть странным с использованием переводчика.
Я использую агент логов AWS CloudWatch, чтобы отправлять свои логи приложения в AWS Cloudwatch.
Я ищу возможность отправлять только новые логи в CloudWatch.
Сейчас, когда новый лог записывается, отправляется весь файл, что приводит к множеству дублирующих логов.
Я только хочу отправлять новую строчку лога, чтобы избежать этого.
Возможно, в старых настройках CloudWatch я мог указать начальное местоположение с помощью initial_position = end_of_file
, но есть ли такая опция и в Unified CloudWatch? Я не смог найти это в официальной документации.
Я оставляю текущие настройки файла. Я был бы благодарен, если бы вы могли сообщить, что добавить.
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "<path>/test.log",
"log_group_name": "test.log",
"log_stream_name": "test.{date}",
"timestamp_format": "%Y/%m/%d %H:%M:%S.%f"
}
]
}
}
}
У меня есть лог, такой как
log1
log2
Если новый лог log3
добавлен, я хочу получить результат, такой как
log1
log2
log3
Но сейчас у меня результат, такой как
log1
log1
log2
log2
log3
Ответ или решение
Для решения вашей проблемы с отправкой только новых логов в AWS CloudWatch, вы можете использовать параметр multiline_start_pattern
, а также включить опцию file_position
в конфигурации Unified CloudWatch Agent (UCA).
Ваш текущий файл конфигурации выглядит таким образом:
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "<path>/test.log",
"log_group_name": "test.log",
"log_stream_name": "test.{date}",
"timestamp_format": "%Y/%m/%d %H:%M:%S.%f"
}
]
}
}
}
Чтобы предотвратить дублирование логов, добавьте в ваш файл конфигурации параметр file_position
с значением end_of_file
. Это укажет агентов на то, чтобы они начинали чтение лог файла с конца, а не с начала. Вот исправленная версия конфигурации:
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "<path>/test.log",
"log_group_name": "test.log",
"log_stream_name": "test.{date}",
"timestamp_format": "%Y/%m/%d %H:%M:%S.%f",
"file_position": "end_of_file"
}
]
}
}
}
Дополнительно, если вам необходимо обрабатывать многострочные логи, вы можете использовать параметр multiline_start_pattern
, чтобы указать, как определять начало новой записи. Однако для вашей задачи это может не быть необходимо.
Обратите внимание, что при первом запуске CloudWatch Agent после внесения изменений в конфигурацию этот будет отправлять только новые записи, добавленные в файл лога после установки параметра.
После внесения этих изменений, перезапустите CloudWatch Agent, чтобы он применил новые параметры конфигурации. Это должно решить вашу проблему с дублированием логов. Если у вас есть вопросы или дополнения, пожалуйста, уточните их, и я с удовольствием помогу вам.