日志记录edit

Elasticsearch 会输出很多日志,都放在ES_HOME/logs目录下。 默认的日志记录等级是INFO。 它提供了适度的信息,但又设计得比较轻量,不至于让你的日志太过庞大。

当调试问题的时候,特别是节点发现相关的问题(因为这通常取决于复杂的网络配置),提高日志记录等级到 DEBUG是很有帮助的。

可以修改 logging.yml 文件然后重启节点 —— 但是这样做即繁琐还会导致不必要的宕机时间。 相反,你可以用前面刚刚学过的cluster-settings API 更新日志记录等级。

要实现这个更新,选择你感兴趣的日志记录器,然后在前面补上 logger. 。对根日志记录器你可以用logger._root来表示。

让我们调高发现(discovery)模块的日志记录等级:

PUT /_cluster/settings
{
    "transient" : {
        "logger.discovery" : "DEBUG"
    }
}

设置生效,Elasticsearch 将开始为discovery模块输出DEBUG级别的日志。

避免使用 TRACE 。这个级别非常的详细,详细到日志反而不再有用了。

慢日志 (slowlog)edit

还有一个日志叫 慢日志(slowlog) 。 这个日志的目的是捕获那些超过指定时间阈值的查询和索引请求。 这个日志对于追踪由用户产生的特别慢的查询很有用。

默认情况,慢日志是不开启的。 要开启它,需要定义具体动作(query,fetch 还是 index)、期望的事件记录等级( WARNDEBUG 等)、时间阈值。

这是一个索引级别(index-level)的设置,也就是说可以独立应用到单个索引:

PUT /my_index/_settings
{
    "index.search.slowlog.threshold.query.warn" : "10s", 
    "index.search.slowlog.threshold.fetch.debug": "500ms", 
    "index.indexing.slowlog.threshold.index.info": "5s" 
}

查询(query)时间超过 10 秒, 输出WARN级别的日志。

获取(fetch)时间超过 500 毫秒,输出DEBUG级别的日志。

索引写入(indexing)时间超过 5 秒,输出INFO级别的日志。

你也可以在elasticsearch.yml文件里定义这些阈值。 没有阈值设置的索引会自动继承在静态配置文件里配置的参数。

一旦阈值设置好了,你可以和其他日志记录器器一样切换日志记录等级:

PUT /_cluster/settings
{
    "transient" : {
        "logger.index.search.slowlog" : "DEBUG", 
        "logger.index.indexing.slowlog" : "WARN" 
    }
}

设置搜索(search)慢日志为DEBUG级别。

设置索引写入(indexing)慢日志为WARN级别。