Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • ElasticSearch单机版安装
  • ElasticSearch7集群安装
  • ElasticSearch-Head浏览器插件离线安装
  • ElasticSearch-SQL浏览器离线插件安装
  • ElasticSearch快照脚本
  • ELasticSearch监控之Cerebro
  • Elasticsearch-SQL
  • ElasticSearch优化指南
  • ElastiSearch Merger
  • Elasticsearch Pipeline 详解
  • ElasticSearch正确的重启方式
  • ElasticSearch查询模板Mustache
  • ElasticSearch索引模板
  • ElasticSearch集群快照
  • ElasticSearch集群修改密码
  • 深入理解ElasticSearch慢查询日志
    • 什么是慢查询日志
    • 如何启用慢查询日志
    • 慢查询日志位置
    • 慢查询日志分析
    • 慢查询日志样例
  • ElasticSearch Kibana白金级破解
  • ElasticSearch API查看集群状态
  • ElasticSearch DSL操作
  • ElasticSearch Script操作数据
  • ElasticSearch中副本和分片如何优化?
  • Docker安装ElasticSearchDump备份数据
  • ElasticSearch使用Grafana监控服务状态
  • Grafana配置ElasitcSearch监控-独立部署版本
  • ElasticSearch批量修改报错
  • ElasticSearch数据版本冲突
  • ElasticSearch索引_cat统计数量与_count统计数量不一致
  • Kibana使用Nginx反向代理设置提示404
  • ElasticSearch优化之线程池介绍
  • 当ElasticSearch时间字段设置多个格式到底是用的哪个?
  • 《ElasticSearch教程》笔记
Jast-zsh
2024-04-12
目录

深入理解ElasticSearch慢查询日志

[toc]

# 深入理解 Elasticsearch 慢查询日志

在现代搜索引擎和数据分析领域,Elasticsearch 无疑是其中的佼佼者。它以其强大的搜索能力、灵活的配置和高可用性而闻名。然而,随着数据量的增长和查询复杂性的提高,性能问题也时常困扰着开发者。为了解决这个问题,Elasticsearch 提供了慢查询日志功能,帮助开发者发现并优化性能瓶颈。

# 什么是慢查询日志

慢查询日志是 Elasticsearch 中的一项监控功能,它允许我们记录那些执行时间超过指定阈值的查询。通过分析这些日志,我们可以识别出那些性能不佳的查询,并采取相应的优化措施。

# 如何启用慢查询日志

启用慢查询日志主要分为两步:配置阈值和重启服务。

  1. 配置阈值: 在 Elasticsearch 的配置文件 elasticsearch.yml 中,我们可以设置查询和获取阶段的慢查询阈值。例如:
    # 设置查询阶段的慢查询阈值
    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: 10s
    index.search.slowlog.threshold.fetch.info: 5s
    index.search.slowlog.threshold.fetch.debug: 2s
    index.search.slowlog.threshold.fetch.trace: 500ms
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    这些设置将记录执行时间超过指定阈值的查询。warn, info, debug, trace 是日志级别,可以根据需要调整。
  2. 重启 Elasticsearch 服务: 修改配置文件后,需要重启 Elasticsearch 服务以使配置生效。

# 慢查询日志位置

慢查询日志位于设置的 path.logs 目录,文件名默认为 index_search_slowlog_rolling。如需修改,可调整 Elasticsearch 配置目录下的 log4j2.properties 文件。

log4j2.properties配置样例

...
######## Search slowlog JSON ####################
appender.index_search_slowlog_rolling.type = RollingFile
appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling
appender.index_search_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs\
  .cluster_name}_index_search_slowlog.json
appender.index_search_slowlog_rolling.layout.type = ESJsonLayout
appender.index_search_slowlog_rolling.layout.type_name = index_search_slowlog
appender.index_search_slowlog_rolling.layout.esmessagefields=message,took,took_millis,total_hits,types,stats,search_type,total_shards,source,id

appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs\
  .cluster_name}_index_search_slowlog-%i.json.gz
appender.index_search_slowlog_rolling.policies.type = Policies
appender.index_search_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.index_search_slowlog_rolling.policies.size.size = 1GB
appender.index_search_slowlog_rolling.strategy.type = DefaultRolloverStrategy
appender.index_search_slowlog_rolling.strategy.max = 4
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 慢查询日志分析

慢查询日志通常包含了查询的详细信息,如执行时间、索引名称、节点信息、查询 DSL 等。分析慢查询日志可以帮助我们找到性能瓶颈,并采取相应的优化措施。

  1. 日志格式: 慢查询日志的格式通常如下:
    [日期和时间戳] [日志级别] [节点名称] [索引名称][分片ID] took[执行时间], took_millis[执行时间(毫秒)], total_hits[总命中数], types[文档类型], stats[查询统计信息], search_type[查询类型], total_shards[总分片数], source[查询 DSL]
    
    1
    通过这些信息,我们可以了解到查询的详细情况,包括执行时间、索引名称、节点信息、查询 DSL 等。
  2. 分析工具: 可以使用日志分析工具或编写脚本来自动化日志的分析过程。例如,可以使用 grep、awk 等命令行工具,或者编写 Python 脚本来提取和分析日志数据。
  3. Kibana: 如果你的环境中安装了 Kibana,可以使用它来可视化慢查询日志。可以通过 Filebeat 导入日志数据到 Elasticsearch,然后在 Kibana 中创建 Dashboard 来展示和分析慢查询。

# 慢查询日志样例

以下是一个慢查询日志的样例:

[2023-04-11T12:36:01,123][WARN ][o.e.t.SearchService] [node-1] [my_index][0] took[6.2s], took_millis[6200], total_hits[1000], types[my_type], stats[...], search_type[QUERY_THEN_FETCH], total_shards[5], source[{"query":{"match_all":{}}}]
1

在这个样例中,我们可以看到:

  • 日期和时间戳:[2023-04-11T12:36:01,123]

  • 日志级别:[WARN]

  • 节点名称:[node-1]

  • 索引名称:[my_index]

  • 分片ID:[0]

  • 查询类型:[QUERY_THEN_FETCH]

  • 执行时间:took[6.2s],表示查询执行了6.2秒

  • 总命中数:total_hits[1000]

  • 查询 DSL:source[{"query":{"match_all":{}}}],表示这是一个 match_all 查询

通过分析这些信息,我们可以确定哪些查询需要优化,并采取措施来提高 Elasticsearch 集群的性能。

上次更新: 2024/04/12, 19:10:20
ElasticSearch集群修改密码
ElasticSearch Kibana白金级破解

← ElasticSearch集群修改密码 ElasticSearch Kibana白金级破解→

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式