给ElasticSearch引擎配置慢查询日志,可以实时监控搜索过慢的日志。虽然ElasticSearch以快速搜索而出名,但随着数据量的进一步增大或是服务器的一些性能问题,会有可能出现慢查询的情况。慢查询日志可以帮助你快速定位到是什么 Index 和 语句 过慢。甚至还可以用Opster Search Log Analyzer分析你的慢查询日志,Opster Search Log Analyzer还会针对你的慢查询日志提供专门的优化建议。

默认情况下,慢查询日志打印功能是关闭的。你可以通过设置查询的threshold值来设置,通过如下的命令查看当前设置的值。下面以mytask索引为例:

curl -XGET "http://<your elastic host>:9200/mytask/_settings"

上面查询了mytask当前设置的值,如果你想输出所有索引的设置信息,那么只需要将mytask改为_all就可以了  /_all/_settings .

如果输出的信息中,如果没有threadhold值那么就还没有进行设置。需要分别设置 搜索部分  和 索引部分 两部分。

搜索部分

curl -XPUT "http://<your elastic host>:9200/mytask/_settings" -H 'Content-Type: application/json' -d'
{
"index.search.slowlog.threshold.query.warn": "10s",
"index.search.slowlog.threshold.query.info": "5s",
"index.search.slowlog.threshold.query.debug": "2s",
"index.search.slowlog.threshold.query.trace": "500ms",
"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.search.slowlog.level": "info"
}'

上面给Elastic Search搜索(Search)设置了慢查询日志输出分界线为info级。上面有设置query和fetch两部分,query表示获取文档(Documents)的时间,fetch表示获取实际数据源(Source)的时间。

索引部分

curl -XPUT "http://<your elastic host>:9200/mytask/_settings" -H 'Content-Type: application/json' -d'
{
"index.indexing.slowlog.threshold.index.warn": "10s",
"index.indexing.slowlog.threshold.index.info": "5s",
"index.indexing.slowlog.threshold.index.debug": "2s",
"index.indexing.slowlog.threshold.index.trace": "500ms",
"index.indexing.slowlog.level": "info",
"index.indexing.slowlog.source": "1000"
}'

上面给Elastic Search索引(Indexing)设置了慢查询日志输出的分界线为info级,并且每条数据最多输出源数据(Source)的前1000个字符。

然后你可以再通过命令 mytask/_settings 来检查设置是否生效。如果设置没有问题了,那么你接下来就可以在日志目录中观察到你的慢日志文件了。

获取日志输出目录

curl -XGET "http://<your elatic host>:9200/_nodes/settings?pretty=true"

在settings.path.logs下找到打印日志的目录。默认情况,慢日志文件名格式为:

<cluster_name>_index_search_slowlog.log
<cluster_name>_index_indexing_slowlog.log

由于ElasticSearch的处理速度非常的快,所以很有可能没有慢查询的日志。你可以通过如下的操作,将所有的查询和索引都记录到日志中。

curl -XPUT "http://<your elatic host>:9200/task/_settings" -H 'Content-Type: application/json' -d'
{
"index.search.slowlog.threshold.query.trace": "0ms",
"index.search.slowlog.threshold.fetch.trace": "0ms",
"index.search.slowlog.level": "trace",
"index.indexing.slowlog.threshold.index.trace": "0ms",
"index.indexing.slowlog.level": "trace"
}'

上面将打印日志的级别设置为trace, 并且将trace的相应的时间设置为0ms,这样就会打印所有的操作记录了。注意:这样的设置仅用于测试!

上面都是以mytask索引为例展示数据的索引,你也可以将mytask替换为其他索引名称,或者使用_all给所有索引设置慢查询日志(不建议这样设置).

慢查询日志 对于ElasticSearch引擎的性能 非常地重要,同时也能给你的系统提供一层监控,以便你及时优化出现的慢查询。 通常情况下,可能会偶尔出现慢查询的语句,这种情况无需要做针对性的处理(有可能是垃圾回收或CPU紧张等造成的暂时现象)。但如果出现大片幅度的慢查询日志记录,就需要进行针对性的优化。

【ElasticSearch】给ElasticSearch数据库配置慢查询日志的更多相关文章

  1. centos LAMP第四部分mysql操作 忘记root密码 skip-innodb 配置慢查询日志 mysql常用操作 mysql常用操作 mysql备份与恢复 第二十二节课

    centos  LAMP第四部分mysql操作  忘记root密码  skip-innodb 配置慢查询日志 mysql常用操作  mysql常用操作 mysql备份与恢复   第二十二节课 mysq ...

  2. mysql数据库开启慢查询日志

    修改配置文件 在配置文件my.ini中加上下面两句话 log-slow-queries = C:\xampp\mysql_slow_query.log long_query_time=3 第一句使用来 ...

  3. MySQL数据库之慢查询日志

    一.开启慢查询日志 通过show global variables like '%slow%' #查看MySQL慢查询日志是否开启 [root@mysqlmaster01 ~]# mysql --lo ...

  4. Mysql 配置慢查询日志(SlowQueryLog)以及使用日志分析工具

    [ 查看系统关于慢查询的设置 ] mysql> show variables like '%slow%'; +---------------------------+-------------- ...

  5. Laravel 多数据库配置及查询操作

    laravel文档好像没有写得很详细 https://docs.golaravel.com/docs/5.3/database/ Using Multiple Database Connections ...

  6. MySQL备份和还原数据库及慢查询日志使用

  7. mysql配置调优-开启慢查询日志-slow_query_log

    工作中,会遇到需要查看mysql的top 20 慢sql,逐个进行优化,加上必要的索引这种需求,这时就需要开启数据库的慢查询日志的功能 1.查询当前慢查询日志的状态 # 默认为关闭状态 mysql - ...

  8. Mysql 慢查询日志配置

    查询日志 1.主配置文件下对添加参数.重启生效. vim /etc/my.cnf 注:主要用于查看开发程序执行时间. 注:log_slow_queries = /tmp/mysql.slow    # ...

  9. 【第九课】MriaDB密码重置和慢查询日志

    目录 1.如何进行修改MariaDB的密码 2.Mariadb的慢查询日志 1.如何进行修改MariaDB的密码 记得root密码的修改方式: [root@localhost ~]# mysqladm ...

随机推荐

  1. Day002 Java三大版本

    Java三大版本 Write Once .Run Anywhere JavaSE: 标准版(桌面程序,控制台开发......) JavaME:嵌入式开发(手机,小家电.......) JavaEE:E ...

  2. JAVA教程 Java学习路线

  3. 关于MySQL参数,这些你要知道

    前言: 在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚 MySQL 参数是啥.本篇文章我们来聊聊 MySQL 参数,学习下如何管理维护 MySQL 参数. 1.MySQL参数 ...

  4. [BUAA2021软工助教]结对项目-第二阶段小结

    一.作业链接 结对项目-第二阶段 二.优秀作业推荐 本次博客作业虽然是简单总结,但是以下作业中都不乏有思考.有亮点的精彩内容,推荐给同学们阅读学习. 磨练,结对编程!(中) zzx 和 zzy 同学实 ...

  5. primary key

    只要使用innodb就要为表指定主键: 如果不指定mysql就会自己找不为空且为一的作为主键,如果找不到,就会使用默认的(软件自己预定好的)作为主键: 主键分为单列主键和复合主键,用法和单列唯一,联合 ...

  6. Docker Swarm(四)Volume 数据(挂载)持久化

    前言 为了获得最佳的性能和可移植性,应该避免将重要数据直接写入容器的可写层,而应使用数据卷或绑定挂载. 可以为集群中的服务创建两种类型的挂载,数据卷挂载(volume mounts)或绑定挂载(bin ...

  7. mysql 无法执行select查询

    场景:mysql无法执行select命令查询,对于已存在的数据库,除了mysql.information_schema数据库,其它诸如nova.keystone.cinder等数据库都有此现象. 日志 ...

  8. Samba服务配置及配置文件说明

    前言 1.配置Samba服务为什么要关闭防火墙(firewalld)和Selinux? 在linux操作系统中默认开启了防火墙,Selinux也处于启动状态,一般状态为enforing:所以,在我们搭 ...

  9. 运维常用shell脚本二(压缩文件、过滤不需要的文件、检测进程)

    一.压缩指定目录下的文件并删除原文件 #!/bin/bashZIP_DAY=7 function zip { local dir=$1 if [ -d $dir ];then local file_n ...

  10. 第35章-CentOS7实战

    补充安装软件包 yum -y install vim lrzsz bash-completion telnet nmap 关闭selinux:/etc/selinux/config 关闭防火墙:sys ...