Агент awslogs не может успевать

Я запускаю агент awslogs на сервере, и когда я просматриваю журналы CloudWatch в консоли AWS, журналы отстают примерно на 60 минут. Наш сервер производит около 650 МБ данных в час, и, похоже, агент не в состоянии справиться.

Вот наш сокращенный конфигурационный файл:

[application.log]
datetime_format = %Y-%m-%d %H:%M:%S
time_zone = UTC
file = var/output/logs/application.json.log*
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = ApplicationLog

[service_log]
datetime_format = %Y-%m-%dT%H:%M:%S
time_zone = UTC
file = var/output/logs/service.json.log*
log_stream_name = {hostname}
initial_position = start_of_file
log_group_name = ServiceLog

Есть ли общий способ увеличить скорость работы агента awslogs?

2 ответа

Объем данных (> 0,2 МБ / с) не является проблемой для агента. Агент имеет емкость около 3 МБ / с на файл журнала. Однако, если вы используете один и тот же поток журналов для нескольких файлов журналов, агенты записывают в один и тот же поток и блокируют друг друга. Пропускная способность более чем вдвое при совместном использовании потока между файлами журналов.

Кроме того, есть несколько свойств, которые можно настроить, которые могут повлиять на производительность:

buffer_duration = <integer>
batch_count = <integer>
batch_size = <integer>

Чтобы решить мою проблему, я сделал две вещи:

  1. Значительно увеличить размер пакета (по умолчанию 32768 байт)
  2. Используйте разные потоки журнала для каждого файла журнала

И у агента не было проблем, чтобы не отставать. Вот мой последний файл конфигурации:

[application.log]
datetime_format = %Y-%m-%d %H:%M:%S
time_zone = UTC
file = var/output/logs/application.json.log*
log_stream_name = {hostname}-app
initial_position = start_of_file
log_group_name = ApplicationLog
batch_size = 524288

[service_log]
datetime_format = %Y-%m-%dT%H:%M:%S
time_zone = UTC
file = var/output/logs/service.json.log*
log_stream_name = {hostname}-service
initial_position = start_of_file
log_group_name = ServiceLog
batch_size = 524288

Агент awslogs поддерживает ротацию журналов, так что это:

file = var/output/logs/application.json.log*

взял бы слишком много файлов?

Пытаться:

file = var/output/logs/application.json.log

ускорить процесс.

Другие вопросы по тегам