日志
> 文档中心 > 文档中心 > INFINI Easysearch > 功能手册 > 管理模块 > 日志

日志 #

Easysearch 日志包含监控群集操作和故障排除问题的重要信息。日志的位置因安装类型而异:

  • 在 Docker 上,Easysearch 将大多数日志写入控制台,并将其余日志存储在 Easysearch/logs/ 中。 tarball 安装也使用 easysearch/logs/
  • 在 RPM 和 Debian 安装上, Easysearch 将日志写入 /var/log/Easysearch/

日志可作为 .log (纯文本)和 .json 文件使用。

应用程序日志 #

对于其应用程序日志,Easysearch 使用 Apache Log4j 2 其内置日志级别(从最低到最高)为 TRACE 、 DEBUG 、 INFO 、 WARN 、 ERROR 和 FATAL 。默认 Easysearch 日志级别为 INFO 。

您可以更改各个 Easysearch 模块的日志级别,而不是更改默认日志级别( logger.level ):

PUT /_cluster/settings
{
  "persistent" : {
    "logger.org.easysearch.index.reindex" : "DEBUG"
  }
}

此示例更改后,Easysearch 在重新索引操作期间会发出更详细的日志:

[2019-10-18T16:52:51,184][DEBUG][o.e.i.r.TransportReindexAction] [node1] [1626]: starting
[2019-10-18T16:52:51,186][DEBUG][o.e.i.r.TransportReindexAction] [node1] executing initial scroll against [some-index]
[2019-10-18T16:52:51,291][DEBUG][o.e.i.r.TransportReindexAction] [node1] scroll returned [3] documents with a scroll id of [DXF1Z==]
[2019-10-18T16:52:51,292][DEBUG][o.e.i.r.TransportReindexAction] [node1] [1626]: got scroll response with [3] hits
[2019-10-18T16:52:51,294][DEBUG][o.e.i.r.WorkerBulkByScrollTaskState] [node1] [1626]: preparing bulk request for [0s]
[2019-10-18T16:52:51,297][DEBUG][o.e.i.r.TransportReindexAction] [node1] [1626]: preparing bulk request
[2019-10-18T16:52:51,299][DEBUG][o.e.i.r.TransportReindexAction] [node1] [1626]: sending [3] entry, [222b] bulk request
[2019-10-18T16:52:51,310][INFO ][o.e.c.m.MetaDataMappingService] [node1] [some-new-index/R-j3adc6QTmEAEb-eAie9g] create_mapping [_doc]
[2019-10-18T16:52:51,383][DEBUG][o.e.i.r.TransportReindexAction] [node1] [1626]: got scroll response with [0] hits
[2019-10-18T16:52:51,384][DEBUG][o.e.i.r.WorkerBulkByScrollTaskState] [node1] [1626]: preparing bulk request for [0s]
[2019-10-18T16:52:51,385][DEBUG][o.e.i.r.TransportReindexAction] [node1] [1626]: preparing bulk request
[2019-10-18T16:52:51,386][DEBUG][o.e.i.r.TransportReindexAction] [node1] [1626]: finishing without any catastrophic failures
[2019-10-18T16:52:51,395][DEBUG][o.e.i.r.TransportReindexAction] [node1] Freed [1] contexts

DEBUG 和 TRACE 级别非常冗长。如果启用其中一个来解决问题,请在完成后禁用它。

还有其他方法可以更改日志级别:

  1. easysearch.yml 添加行:
logger.org.easysearch.index.reindex: debug

如果您希望在多个集群中重用日志记录配置,或者使用单个节点调试启动问题,那么修改 easysearch.yml 最有意义。

  1. Modify log4j2.properties:
   # Define a new logger with unique ID of reindex
   logger.reindex.name = org.easysearch.index.reindex
   # Set the log level for that ID
   logger.reindex.level = debug

这种方法非常灵活,但需要熟悉 Log4j 2 属性文件语法. 通常,其他选项提供了更简单的配置体验。

如果检查配置目录中的默认 log4j2.properties 文件,可以看到一些 Easysearch 特定的变量:

   appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
   appender.rolling_old.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log
  • ${sys:es.logs.base_path} is the directory for logs (for example, /var/log/easysearch/ ).
  • ${sys:es.logs.cluster_name} is the name of the cluster.
  • [%node_name] is the name of the node.

Slow logs #

Easysearch 有两个 slow logs ,帮助您识别性能问题的日志:搜索慢日志和索引慢日志。

这些日志依赖于阈值来定义什么是“慢”搜索或索引操作。例如,如果完成一个查询需要 15 秒以上的时间,您可能会认为它很慢。与为模块配置的应用程序日志不同,为索引配置慢日志。默认情况下,两个日志都被禁用(所有阈值都设置为“-1”):

GET <some-index>/_settings?include_defaults=true

{
  "indexing": {
    "slowlog": {
      "reformat": "true",
      "threshold": {
        "index": {
          "warn": "-1",
          "trace": "-1",
          "debug": "-1",
          "info": "-1"
        }
      },
      "source": "1000",
      "level": "TRACE"
    }
  },
  "search": {
    "slowlog": {
      "level": "TRACE",
      "threshold": {
        "fetch": {
          "warn": "-1",
          "trace": "-1",
          "debug": "-1",
          "info": "-1"
        },
        "query": {
          "warn": "-1",
          "trace": "-1",
          "debug": "-1",
          "info": "-1"
        }
      }
    }
  }
}

要启用这些日志,请增加一个或多个阈值:

PUT <some-index>/_settings
{
  "indexing": {
    "slowlog": {
      "threshold": {
        "index": {
          "warn": "15s",
          "trace": "750ms",
          "debug": "3s",
          "info": "10s"
        }
      },
      "source": "500",
      "level": "INFO"
    }
  }
}

在此示例中,Easysearch 记录 WARN 级别需要 15 秒或更长时间的索引操作,以及 INFO 级别需要 10 到 14.x 秒的操作。如果将阈值设置为 0 秒,Easysearch 将记录所有操作,这对于测试是否确实启用了慢速日志非常有用。

  • reformat 指定是将文档 _source 字段记录为单行( true )还是让它跨越多行( false )。
  • source 是要记录的文档 _source 字段的字符数。
  • level 是要包含的最低日志级别。

easysearch_index_indexing_slowlog.log 中的一行可能如下所示:

node1 | [2019-10-24T19:48:51,012][WARN][i.i.s.index] [node1] [some-index/i86iF5kyTyy-PS8zrdDeAA] took[3.4ms], took_millis[3], type[_doc], id[1], routing[], source[{"title":"Your Name", "Director":"Makoto Shinkai"}]

如果将阈值或级别设置得太低,慢日志可能会占用大量磁盘空间。考虑暂时启用它们以进行故障排除或性能调整。要禁用慢速日志,请将所有阈值返回到 -1

弃用日志 #

弃用日志记录客户端对集群进行弃用 API 调用的时间。这些日志可以帮助您在升级到新的主要版本之前识别并修复问题。默认情况下,Easysearch 在 WARN 级别记录不推荐的 API 调用,这几乎适用于所有用例。如果需要,可以使用 _cluster/settingseasysearch.ymllog4j2.properties 配置 logger.deprecation.level