ES开启慢查询日志

Posted wjoyxt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES开启慢查询日志相关的知识,希望对你有一定的参考价值。

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

es有几种搜索模式,比如 query_then_fetch , 表示先从各个节点query到id,然后整合,再去各个节点拿具体数据

 

这是一个索引级别的设置,也就是说可以独立应用给单个或所有索引,这个配置是永久的,配置后即使集群重启也会保留

PUT /_all/_settings
{
    "index.search.slowlog.threshold.query.warn":"5s",
    "index.search.slowlog.threshold.query.info":"2s",
    "index.search.slowlog.threshold.query.debug":"1s",
    "index.search.slowlog.threshold.query.trace":"400ms",
    "index.search.slowlog.threshold.fetch.warn":"1s",
    "index.search.slowlog.threshold.fetch.info":"800ms",
    "index.search.slowlog.threshold.fetch.debug":"500ms",
    "index.search.slowlog.threshold.fetch.trace":"200ms",
    "index.indexing.slowlog.threshold.index.warn":"5s",
    "index.indexing.slowlog.threshold.index.info":"2s",
    "index.indexing.slowlog.threshold.index.debug":"1s",
    "index.indexing.slowlog.threshold.index.trace":"400ms"
}

 

查询慢于 5 秒输出一个 WARN 日志
索引慢于 2 秒输出一个 INFO 日志
获取慢于 1 秒输出一个 DEBUG 日志

 

参考资料:https://www.elastic.co/guide/cn/elasticsearch/guide/current/logging.html


两种开启方式:

一、通过修改elasticsearch.yml来启用慢查询:

vim elasticsearch.yml

###Search Slow Log :查询慢日志配置,日志记录在以“_index_isearch_slowlog.log”  结尾的文件中

#注:配置不一定都需要,自己选择需要那种级别(warn、info、debug、trace)日志,关闭的话配置成-1 就可以了,注释掉重启也可以

index.search.slowlog.threshold.query.warn: 10s  #超过10秒的query产生1个warn日志
index.search.slowlog.threshold.query.info: 5s  #超过5秒的query产生1个info日志
index.search.slowlog.threshold.query.debug: 2s #超过2秒的query产生1个debug日志
index.search.slowlog.threshold.query.trace: 500ms #超过500毫秒的query产生1个trace日志

 

index.search.slowlog.threshold.fetch.warn: 1s  ##fetch阶段的配置
index.search.slowlog.threshold.fetch.info: 800ms
index.search.slowlog.threshold.fetch.debug: 500ms
index.search.slowlog.threshold.fetch.trace: 200ms

 

###Index Slow log:索引慢日志配置  ,日志记录在以“_index_indexing_slowlog.log”  结尾的文件中

#注:上边四个配置不一定都需要,自己选择需要那种级别(warn、info、debug、trace)日志关闭的话配置成-1就可以了

index.indexing.slowlog.threshold.index.warn: 10s   ##索引数据超过10秒产生一个warn日志
index.indexing.slowlog.threshold.index.info: 5s  ##索引数据超过5秒产生一个info日志
index.indexing.slowlog.threshold.index.debug: 2s ##索引数据超过2秒产生一个ddebug日志
index.indexing.slowlog.threshold.index.trace: 500ms ##索引数据超过500毫秒产生一个trace日志

 

二、通过API动态的修改配置:

这是一个索引级别的设置,也就是说可以独立应用给单个索引:这个配置是永久的,配置后即使集群重启也会保留。如果关闭日志记录的话将选项修改成 -1 即可(例如: "index.search.slowlog.threshold.query.warn" : -1 

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" 
}
查询慢于 10 秒输出一个 WARN 日志。
获取慢于 500 毫秒输出一个 DEBUG 日志。
索引慢于 5 秒输出一个 INFO 日志。

 

这是一个集群级别的设置:一旦阈值设置过了(可以在 elasticsearch.yml 文件里定义这些阈值。没有阈值设置的索引会自动继承在静态配置文件里配置的参数),你可以和其他日志器一样切换日志记录等级。这个API简单试了下,没效果。并没有改变日志记录级别。而且我没找到集群级别的设置慢查询阈值的API。有知道的发个链接(QQ:1250134974)

 

PUT /_cluster/settings
{
    "transient" : {
        "logger.index.search.slowlog" : "DEBUG", 
        "logger.index.indexing.slowlog" : "WARN" 
    }
}
设置搜索慢日志为 DEBUG 级别。
设置索引慢日志为 WARN 级别。

 

 

 

 

以上是关于ES开启慢查询日志的主要内容,如果未能解决你的问题,请参考以下文章

mysql怎么开启慢查询日志开启

如何开启MySQL慢查询日志

mysql怎么开启慢查询日志开启

开启mysql慢查询日志并使用mysqldumpslow命令查看

如何开启MySQL慢查询日志

如何开启MySQL慢查询日志