Насколько я понимаю, индексы (или данные) хранятся в
/var/lib/elasticsearch
по умолчанию эта папка содержит nodes
с участием 0
и 1
папки и общий размер этих папок 376M
.
Журналы хранятся в
/var/log/elasticsearch
-rw-r--r-- 1 elasticsearch elasticsearch 1.4G Dec 17 23:59 elasticsearch.log.2014-12-17
-rw-r--r-- 1 elasticsearch elasticsearch 1.5G Dec 18 19:35 elasticsearch.log.2014-12-18
-rw-r--r-- 1 elasticsearch elasticsearch 383M Dec 19 20:11 elasticsearch.log.2014-12-19
-rw-r--r-- 1 elasticsearch elasticsearch 7.2G Dec 30 23:59 elasticsearch.log.2014-12-30
-rw-r--r-- 1 elasticsearch elasticsearch 9.1G Jan 1 23:59 elasticsearch.log.2015-01-01
-rw-r--r-- 1 elasticsearch elasticsearch 29G Jan 2 23:59 elasticsearch.log.2015-01-02
-rw-r--r-- 1 elasticsearch elasticsearch 928K Jan 3 23:59 elasticsearch.log.2015-01-03
-rw-r--r-- 1 elasticsearch elasticsearch 91M Jan 4 23:59 elasticsearch.log.2015-01-04
И, как вы можете видеть, они используют СЛИШКОМ МНОГО места, мне даже пришлось удалить 1 файл размером 28G
чтобы освободить место на сервере.
Мой elasticsearch version
является 0.90.7
Согласно официальным документам:
Начиная с версии 0.90, сжатие хранилища всегда включено.
В моем случае я не вижу сжатия, применяется ли оно к журналам? Если данные лежат в /var/lib/
, какова цель журналов, будет ли мое приложение работать, если я удалю все журналы? Зачем мне их хранить? И если да, то я не понимаю, что делать с размером, я не могу уменьшить свои индексы, может, я могу использовать logrotate?
Если кому-то будет интересно, как я решил проблему с логами ...
После некоторого расследования, Я обнаружил, что вы можете установить количество журналов для хранения в logging.yml
которые по умолчанию лежат в /etc/elasticsearch
, добавляя:
maxBackupIndex: x
строка вроде этого:
file:
type: dailyRollingFile
file: ${path.logs}/${cluster.name}.log
datePattern: "'.'yyyy-MM-dd"
maxBackupIndex: 7
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"
что сохранит только 7 последних файлов журнала.
Но поскольку мои файлы журналов слишком велики и в приведенном выше решении не применяется сжатие, я решил использовать logrotate
со сжатием, вот моя конфигурация /etc/logrotate.d/elasticsearch
:
/var/log/elasticsearch/elasticsearch.log.????-??-?? {
daily
missingok
rotate 1
compress
notifempty
}
Краткое описание: один раз в день сжимайте файлы с датами в конце (каждый день эластичным поиском будет создаваться 1 новый файл), ничего не делать, если он пуст, не сообщать об ошибках.
Журналы ES содержат информацию о вашем запущенном приложении, то есть об ошибках. Если вы не видите никаких проблем в своих журналах, вы можете безопасно удалить старые журналы вручную или с помощью logrotate.
Чтобы уменьшить размер ваших индексов, вам нужно удалить из них некоторые документы, потому что индексы - это место, где ES хранит данные. Не используйте logrotate для индексов, иначе произойдут странные вещи.