Недавно мы перенесли одно из наших приложений на платформу «Corretto 8, работающую на 64-битной платформе Amazon Linux 2/3.2.12». Теперь мы видим проблему, заключающуюся в том, что файлы журналов заполняют объем нашего диска чуть больше недели. Раньше у нас не было этой проблемы.
Что раздражает, так это то, что мы передаем эти журналы в облачные часы, поэтому они нам действительно не нужны на самом экземпляре.
Что еще более раздражает, так это то, что вся документация, сообщения в блогах и т. д., которые я могу найти по этому вопросу, явно не написаны для этой платформы. Глядя на файловую структуру, кажется, что используется другой подход, который я еще не полностью понял.
Прежде всего, нет папки /var/log/httpd ... или других папок для определенных журналов. До сих пор я выяснил, что то, что отправляется в лог-поток web.stdout.log (который на старой платформе назывался по-другому, но я не помню, как именно. В любом случае, это то место, где регистрируется приложение spring-boot to) хранится в файле /var/log/messages.
Я знаю это, потому что при анализе того, почему у нас заканчивается место на диске, этот файл всегда будет самым большим на всем диске. За исключением того, что сразу после запуска экземпляра он имел разумный размер. Через 3 дня он может достигать размера 2 ГБ и продолжает расти до тех пор, пока ничего не останется. Это, без сомнения, источник наших проблем.
Вопрос в том, что я могу делать об этом? Ротация журналов находится в конфигурации по умолчанию, и я вижу некоторые файлы в /var/log/rotated (это также папка, в которой раньше находились ротируемые журналы), но они крошечные (самый большой из них — восхитительные 1,3 МБ в size...), а размер /var/log/messages никогда не уменьшается, а только растет.
Я читал множество статей о том, как решить подобные проблемы, настроив logrotate с помощью ebextensions, от самих AWS и блоггеров, но во всех них я очень быстро вижу, что они построены поверх совершенно другой структуры, поэтому они не кажутся применимыми. Кроме того, уже во время миграции мы столкнулись с тем, что некоторые вещи, которые выполнялись с помощью ebextensions, теперь не выполняются с помощью ebextensions, но документации скорее не хватает.
Кто-нибудь знает платформу достаточно, чтобы дать мне понять, как я могу это настроить? мне даже не нужно вращать журналы, строго говоря, я просто хочу, чтобы они исчезли, как только они станут старше часа или около того. В конце концов, они у нас есть на облачных часах...
Дополнительная информация
Чем глубже я в это вникаю, тем больше путаюсь. Существует файл /var/log/web.stdout.log, который получает те же сообщения, что и /var/log/messages. Глядя на содержимое logrotate.elasticbeanstalk.hourly, это файл, который на самом деле находится в ротации журнала, и, похоже, он работает нормально.
Выполняя lsof, процесс, использующий этот файл, называется rsyslogd. Согласно комментарию shearn89s ниже, по-видимому, это новый системный журнал, и все, что записывается в стандартный вывод, регистрируется там.
Понимая, что этот файл не подвергается какой-либо ротации, я пытаюсь это настроить. Пока только на экземпляре, позже я разберусь, как это сделать в реальной конфигурации среды.
Я создал новый файл конфигурации в /etc/logrotate/elasticbeanstalk.hourly со следующим содержимым:
/var/журнал/сообщения {
су корень корень
размер 10М
повернуть 5
отсутствует
компресс
непустой
копироватьусечение
дататекст
формат даты %s
старый_каталог /var/log/rotated
}
Бег sudo /usr/sbin/logrotate /etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.messages.conf --debug
, я получаю следующий вывод:
шаблон вращения: /var/log/messages 10485760 байт (5 оборотов)
olddir находится в /var/log/rotated, пустые файлы журналов не ротируются, старые журналы удаляются
учитывая журнал /var/log/messages
журнал нуждается в ротации
журнал ротации /var/log/messages, log->rotateCount равен 5
Преобразование '%s' -> '%s'
суффикс dateext '1646905905'
шаблон глобуса '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0 -9]'
glob не удалось найти старые повернутые журналы
копирование /var/log/messages в /var/log/rotated/messages1646905905
усечение /var/log/messages
сжатие журнала с помощью: /bin/gzip
Это выглядит многообещающе, но факт в том, что ничего не изменилось. Файл по-прежнему имеет тот же размер, и файл не был создан в папке ротации. Кажется, что это не имеет никакого эффекта.
Я изменил конфигурацию, чтобы она перемещалась и создавалась вместо усечения на месте, я пробовал -f, все с тем же результатом. От logrotate ошибки нет, но и эффекта нет. Этот файл кажется чертовски непроницаемым.