Агент 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>
Чтобы решить мою проблему, я сделал две вещи:
- Значительно увеличить размер пакета (по умолчанию 32768 байт)
- Используйте разные потоки журнала для каждого файла журнала
И у агента не было проблем, чтобы не отставать. Вот мой последний файл конфигурации:
[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
ускорить процесс.