弹性搜索日志的目的是什么?如何管理它们?

Rus*_*nov 4 ubuntu logging disk-space-utilization lucene elasticsearch

据我了解索引(或数据)被存储在

/var/lib/elasticsearch
Run Code Online (Sandbox Code Playgroud)

默认情况下,该文件夹中包含nodes01文件夹和这些文件夹的总体规模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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,他们使用了太多空间,我什至被迫删除了 1 个大小为 的文件28G以释放服务器上的一些空间。

我的elasticsearch version0.90.7

根据官方文档:

从 0.90 版本开始,存储压缩始终处于启用状态。

在我的情况下,我没有看到任何压缩,它是否应用于日志?如果数据在/var/lib/,日志的目的是什么,如果我删除所有日志,我的应用程序是否可以工作?我为什么要保留它们?如果是这样,我不明白如何处理大小,我不能让我的索引更小,也许我可以使用 logrotate?

Rus*_*nov 6

如果有人会对我如何解决日志问题感兴趣...

经过一番调查,我发现,你可以记录的金额实际设置存储logging.yml默认情况下是在于/etc/elasticsearch,加入:

maxBackupIndex: x
Run Code Online (Sandbox Code Playgroud)

像这样的行:

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"
Run Code Online (Sandbox Code Playgroud)

这只会保存 7 个最近的日志文件。

但是因为我的日志文件太大并且上面的解决方案没有应用压缩,我决定使用logrotate压缩代替,这是我的配置/etc/logrotate.d/elasticsearch

/var/log/elasticsearch/elasticsearch.log.????-??-?? {
  daily
  missingok
  rotate 1
  compress
  notifempty
}
Run Code Online (Sandbox Code Playgroud)

简短说明:每天压缩一次最后有日期的文件(elasticsearch每天会新建1个文件),如果为空则不做任何操作,不报错。

  • 如果您选择使用 logrotate,您应该将 logging.yml 更改为:**file**。您不希望两个系统轮换您的日志。除了将 **dailyRollingFile** 更改为 **file** 之外,您还应该删除 **datePattern** 参数,因为它不适用于 FileAppender log4j 类。 (2认同)

小智 3

ES 日志包含有关正在运行的应用程序的信息,即错误。如果您在日志中没有看到任何问题,您可以手动或通过 logrotate 安全地删除旧日志。

为了减少索引的大小,你必须从中删除一些文档,因为索引是 ES 存储数据的地方。不要使用 logrotate 作为索引,否则会发生奇怪的事情。