Ответ 1
После некоторого копания (также в исходном коде ElasticSearch) я нашел ответ.:)
Обычно, когда вы используете такое программное обеспечение, как ElasticSearch, и хотите, чтобы оно использовалось в производстве, вы думаете, что основная функция, такая как ведение журнала, все заботится. К сожалению, в текущей версии (1.4 и ранее) это не так.
ElasticSearch использует log4j в качестве механизма ведения журнала.
log4j делает следующее:
- Добавить журналы в файл журнала
- Поверните файл журнала, когда он больше, чем CONFIGURED_VALUE
Если в ElasticSearch сильно используется, журналы накапливаются и в конечном итоге заполняют ваше хранилище.
Ответ на этот вопрос заключается в следующем:
- Заблокировать старый файл с измененным журналом
- Убедитесь, что общие файлы журнала не будут превышать CONFIGURED_VALUE
Ответ на этот вопрос заключается в том, что существует еще один API, который вызывает log4j-extensions, и он расширяет возможности log4j и застегивает вращающиеся файлы журналов.
К сожалению, он будет доступен только в следующей версии 1.5 или в ветке master для сумасшедших людей среди нас, которые скомпилируют ElasticSearch из исходного кода. (см. log4j поддержка rollPolicy).
НО, существует более простое решение:
ИСПОЛЬЗУЙТЕ ЛОГОТИП, ЧТОБЫ ОБРАТИТЬ ВАШИ ЛОГИСТИКИ.
Если ElasticSearch работает на ОС Linux, вы можете использовать демон logrotate. (см. то, что лог вращается Общие сведения об утилите logrotate)
Вам нужно сделать следующее:
- Reset конфигурация журнала
- Создать новый файл для обработки файлов журнала
Reset конфигурация журнала
sudo vi /etc/elasticsearch/logging.yml
Измените следующее в logging.yml
# Mark the dailyRollingFile Appender
# file:
# type: dailyRollingFile
# file: ${path.logs}/${cluster.name}.log
# datePattern: "'.'yyyy-MM-dd"
# layout:
# type: pattern
# conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
# Add the file Appender
file:
type: file
file: ${path.logs}/${cluster.name}.log
datePattern: "'.'yyyy-MM-dd"
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
Создать новый файл для обработки файлов журнала
sudo vi /etc/logrotate.d/elasticsearch
Добавьте в файл logrotate следующее:
/var/log/elasticsearch/*.log {
daily
rotate 100
size 50M
copytruncate
compress
delaycompress
missingok
notifempty
create 644 elasticsearch elasticsearch
}
После этого перезапустите ElasticSearch
sudo service elasticsearch stop
sudo service elasticsearch start
Таким образом вы ограничите общее хранилище файлов журналов в 5 ГБ (поверните 100 * 50 М).
Очевидно, вы можете настроить его по своему усмотрению.