Как отправлять только новые логи в CloudWatch Agent?

Вопрос или проблема

Прежде всего, пожалуйста, поймите, что английский может быть странным с использованием переводчика.

Я использую агент логов 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, чтобы он применил новые параметры конфигурации. Это должно решить вашу проблему с дублированием логов. Если у вас есть вопросы или дополнения, пожалуйста, уточните их, и я с удовольствием помогу вам.

Оцените материал
Добавить комментарий

Капча загружается...