据我了解,索引(或数据)存储在
/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?
答案1
ES 日志包含有关正在运行的应用程序的信息,即错误。如果您在日志中没有发现任何问题,则可以手动或通过 logrotate 安全地删除旧日志。
为了减少索引的大小,您必须从中删除一些文档,因为索引是 ES 存储数据的地方。不要对索引使用 logrotate,否则会发生奇怪的事情。
答案2
如果有人对我如何解决日志问题感兴趣......
经过一番调查,我发现你实际上可以设置要存储的日志数量其中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
}
简要描述:每天压缩一次文件,最后加上日期(elasticsearch每天会创建1个新文件),如果为空则不执行任何操作,不报告错误。