前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Elasticsearch:Elasticsearch 中的慢日志

Elasticsearch:Elasticsearch 中的慢日志

作者头像
腾讯云大数据
修改于 2021-01-08 08:11:21
修改于 2021-01-08 08:11:21
5.3K00
代码可运行
举报
运行总次数:0
代码可运行

腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景


Shard 级慢速搜索日志允许将慢速搜索(查询和获取阶段)记录到专用日志文件中。日志记录是任何应用程序不可缺的一部分。 对于像 Elasticsearch 这样的分布式解决方案,它必须处理大量的请求,因此日志记录不可避免,其重要性至关重要。

顾名思义,慢速日志用于记录慢速请求,无论是搜索请求还是索引请求。 我们可以设置“”阈值,以便仅记录那些高于该阈值的请求。

对于 Elasticsearch,慢速日志很重要,主要是因为:

  • 它们有助于确定应该与 Elasticsearch 通信的应用程序是否正在这样做。
  • 我们可以检查影响 Elasticsearch 的查询并进行验证。
  • 日志记录可以提供有关索引/群集运行状况的重要信息,从而有助于维护群集。

现在,根据您的理论,让我们介绍可用的慢速日志的主要类型及其用例。

慢日志分类

Elasticsearch 中的慢日志主要有两种:搜索慢日志 (search slow logs)和索引慢日志 (index slow logs)。 让我们讨论一下。

Search Slow Logs

搜索慢速日志用于记录慢速搜索。 慢度阈值取决于应用程序及其 Elasticsearch 实现细节。 每个应用程序可以具有不同的阈值。

在 Elasticsearch 中进行搜索分为两个阶段:

  1. 查询阶段-在查询阶段,Elasticsearch 收集相关结果的文档 ID。 完成此阶段后,仅返回与搜索匹配的文档的 ID,并且不会再出现其他信息,例如字段或它们的值等。
  2. 获取阶段-在获取阶段,使用来自查询阶段的文档 ID 来获取实际文档,由此可以说搜索请求是完整的。

搜索慢速日志显示查询和查询的获取阶段的拆分时间。 因此,我们能够完整地了解完成查询和获取阶段所花费的时间,并且能够检查整个查询本身。

Index Slow Logs

索引慢日志用于记录索引过程。 在 Elasticsearch 中对文档建立索引后,慢速索引日志会记录请求的记录,这些记录需要花费较长的时间才能完成。 同样,在这里,时间窗口也可以在索引日志的配置设置中进行调整。

默认情况下,启用后,Elasticsearch 将文档的前1000行记录到日志文件中。 可以将其更改为 null 或记录整个文档,具体取决于我们如何配置设置。

在下一部分中,让我们看看如何配置日志并检查上面讨论的两种慢速日志类型。

索引慢速日志记录设置

首先,创建要为其配置索引慢日志的测试索引。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT testindex-slowlogs

现在为索引 “testindex-slowlogs” 配置慢日志,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT testindex-slowlogs/_settings{  "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"}

我们可以通过 _settings 来更新这些配置。默认情况下,均未启用(设置为-1)。 级别(warn,info,debug, trace)允许控制将在哪个日志记录级别下记录日志。并非所有要求都进行配置(例如,只能设置warn阈值)。 几个级别的好处是能够针对违反的特定阈值快速 “grep”。默认情况下,Elasticsearch 将在慢速日志中记录 _source 的前1000个字符。 你可以使用 index.indexing.slowlog.source 进行更改。 将其设置为 false 或 0 将完全跳过对源的日志记录,将其设置为 true 将不考虑大小而记录整个源。 默认情况下,原始 _source 会重新格式化,以确保它适合单个日志行。 如果保留原始文档格式很重要,则可以通过将index.indexing.slowlog.reformat 设置为 false 来关闭重新格式化,这将导致源按“原样”记录,并可能跨越多个日志行。

为了便于测试,我们把上面的阈值都设置为0和默认值,我们使用 _settings 来修个我们的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT testindex-slowlogs/_settings{  "index.indexing.slowlog.threshold.index.warn": "0ms",  "index.indexing.slowlog.threshold.index.info": "0ms",  "index.indexing.slowlog.threshold.index.debug": "0ms",  "index.indexing.slowlog.threshold.index.trace": "0ms",  "index.indexing.slowlog.level": "trace",  "index.indexing.slowlog.source": "1000"}

这样如果其中的任何一个阈值是大于0的话,那么就会产生 index slow log。我们在 Kibana 中输入如下的一个文档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST testindex-slowlogs/_doc{  "price": 9925,  "name": "Nariko"}

我们可以找到在 Elasticsearch logs 目录下的文件 elasticsearch_index_indexing_slowlog.log

我们打开这个 elasticsearch_index_indexing_slowlog.log 的内容,我们可以看到:

在这里我们可以看到所有的索引慢速日志的记录。因为我们所设置的阈值为0,所以任何一个操作都会触发相应的索引慢日志操作。在实际的应用中,可以根据自己的实际要求分别进行阈值的设置。

这些日志提供以下信息:

  • time stamp
  • log level
  • type of log
  • node name
  • index name
  • time taken in micro/milli seconds
  • index type
  • document id
  • "_source" field

使用此信息,我们可以了解索引操作的过程,并可以检测/调试任何异常(如果存在)。

Search Slow Logging

与慢索引日志相似,搜索慢日志将应用于特定索引。 记录所有搜索请求的示例配置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT testindex-slowlogs/_settings{  "index.search.slowlog.threshold.query.warn": "0ms",  "index.search.slowlog.threshold.query.info": "0ms",  "index.search.slowlog.threshold.query.debug": "0ms",  "index.search.slowlog.threshold.query.trace": "0ms",  "index.search.slowlog.threshold.fetch.warn": "0ms",  "index.search.slowlog.threshold.fetch.info": "0ms",  "index.search.slowlog.threshold.fetch.debug": "0ms",  "index.search.slowlog.threshold.fetch.trace": "0ms",  "index.search.slowlog.level": "info"}

由于上述设置的所有参数值均为0ms,因此将记录所有搜索请求。 日志文件位于日志目录下,名称为:“elasticsearch_index_search_slowlog.log

对索引运行以下查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET testindex-slowlogs/_search{  "query": {    "match": {      "name": "Nariko"    }  },  "sort": [    {      "price": {        "order": "desc"      }    }  ]}

成功执行此查询后,打开上述搜索慢日志文件。 您会发现看起来像这样的日志:

我们可以查看文件 elasticsearch_index_search_slowlog.log。由于我们所设置的日志里的阈值都为0,所以每一个搜索都会生产相应的日志记录。在实际的使用中,我们可以根据自己的情况设置相应的阈值。查看 elasticsearch_index_search_slowlog.log 文件:

如您所见,上面为单个搜索生成了2个日志。 这是因为搜索是按分片方式执行的,并且在默认配置下,索引中有2个分片。 当我们执行搜索时,请求被传递到2个分片中的每个分片,并生成了2个日志。

在这些日志中,我们可以查看详细信息,例如搜索类型,节点以及带有详细查询的分片号信息。

结论

在本教程中,我们探讨了 Elasticsearch 慢日志的重要性。 我们介绍了索引和搜索慢日志,以及配置示例和日志样本。

参考:

【1】https://qbox.io/blog/slow-logs-in-elasticsearch-search-index-config-example


最新活动

包含文章发布时段最新活动,前往ES产品介绍页,可查找ES当前活动统一入口

Elasticsearch Service自建迁移特惠政策>>

Elasticsearch Service 新用户特惠狂欢,最低4折首购优惠 >>

Elasticsearch Service 企业首购特惠,助力企业复工复产>>

关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Elasticsearch 日志能否把全部请求打印出来?
由低到高分别为:TRACE -> DEBUG -> INFO -> WARN -> ERROR -> FATAL,如下图所示。
铭毅天下
2023/08/18
5770
Elasticsearch 日志能否把全部请求打印出来?
为什么Elasticsearch查询变得这么慢了?
Elasticsearch社区中经常看到慢查询问题:“你能帮我看看Elasticsearch的响应时间吗?”或者是:“我的ES查询耗时很长,我该怎么做?”
铭毅天下
2018/10/24
17.4K0
为什么Elasticsearch查询变得这么慢了?
Elasticsearch Index Setting一览表
索引的配置项按是否可以更改分为static属性与动态配置,所谓的静态配置即索引创建后不能修改。
丁威
2019/06/10
2.8K0
Elasticsearch--配置文件
config目录下有2个配置文件:es的配置文件:elasticsearch.yml日志配置文件:logging.yml,更多内容请参考:ELK教程 cluster.name: elasticsearch 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群 node.name: "Franz Kafka" 节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹
用户1174963
2018/01/17
6270
你不得不关注的 Elasticsearch Top X 关键指标
到本文结尾,你应该对关键指标有一个很好的了解,以便在你遇到Elasticsearch集群的性能或操作问题时进行监视。
铭毅天下
2020/11/04
1.1K0
你不得不关注的 Elasticsearch  Top X 关键指标
Elasticserach学习笔记之Elasticsearch查询慢和集群慢查询日志配置
ES集群又慢查询记录到log的功能,有时候研发反应es查询比较慢,此时在确认集群健康,green,indices数据green,集群负载正常后,可以打开该功能排查es查询慢的问题。
Jetpropelledsnake21
2020/12/03
3K0
Elasticserach学习笔记之Elasticsearch查询慢和集群慢查询日志配置
ES 慢查询日志收集实战总结
在执行elasticsearch查询的时候,有些查询会占用大量的资源导致响应很慢,这个时候就需要ES对慢查询进行监控。找到那些响应很慢的请求。ES的请求主要分为搜索和索引,ES也分别提供了这两种类型请求的慢查询日志。
民工哥
2020/09/15
4.1K0
Elasticsearch高级调优方法论之——根治慢查询!
Elasticsearch是非常灵活且功能丰富的搜索引擎,它提供了许多不同查询数据的方法。在实战业务场景中,经常会出现远远低于预期查询速度的慢查询。作为分布式系统的Elasticsearch,可能有各种影响查询性能的因素,包括外部因素,如负载均衡设置,网络延迟(带宽,NIC卡/驱动程序)等。
猿天地
2019/10/09
5.2K0
Elasticsearch高级调优方法论之——根治慢查询!
面试题之 Elasticsearch 性能优化详解
大多数 Elasticsearch 部署往往对 CPU 要求不高。因此,相对其它资源,具体配置多少个(CPU)不是那么关键。你应该选择具有多个内核的现代处理器,常见的集群使用 2 到 8 个核的机器。如果你要在更快的 CPUs 和更多的核数之间选择,选择更多的核数更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。
wayn
2024/03/11
5770
面试题之 Elasticsearch 性能优化详解
【Elasticsearch系列十四】Elasticsearch
ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。
kwan的解忧杂货铺
2024/09/20
1240
ES 日志类型
ES7.0增加通过json记录ES日志,可在日志中加入node.id,cluster.uuid,type。其中type主要用于区分docker环境下的每个节点的日志。 ES日志包括集群节点日志、过时日志、查询慢日志和写入慢日志等。 日志级别调整,可以细化到包级别,此外还支持动态修改,例如将discovery模块日志级别设置为debug,其他模块仍然保持info级别。 具体的一些日志文件: deprecation: 查看被废弃的功能的调用日志; 例如 _all 即将被废弃,如果你某一个索引启用了 _all,则
用户4235284
2022/12/03
4200
ES自治索引功能测试与介绍
1500条/s写入, 在写入数据doc数量2w,数据量在6-700MB间时进行落盘刷新。
沈小翊
2023/11/13
2881
ElasticSearch 配置文件译文解析
##################### ElasticSearch 配置示例 #####################
星哥玩云
2022/07/04
3280
【 ES 私房菜】ElasticSearch 详细部署教程
一、环境准备 1、挂载分区 Ps:通用方法,此处略过,以下为示例挂载配置,方便直接复制粘贴。 /dev/sdb1 /data1 ex
张戈
2017/09/27
6.3K0
【ES三周年】写给ES开发者的Elasticsearch入门指南
首先,来了解一下Elasticsearch,它是一个分布式可扩展高实时的搜索和分析引擎,可以很轻松的让高量级数据具有搜索分析和探寻能力,其自身的水平伸缩性可以让数据在生产环境下具有更高价值。
三掌柜
2023/02/08
1.5K13
【ES三周年】写给ES开发者的Elasticsearch入门指南
Elasticsearch 常见的 8 种错误及最佳实践
Elasticsearch 社区有大量关于 Elasticsearch 错误和异常的问题。
铭毅天下
2020/08/10
5.3K0
Elasticsearch 索引容量管理实践
作者:gavinyao,腾讯 PCG 后台开发工程师 Elasticsearch 是目前大数据领域最热门的技术栈之一,腾讯云 Elasticsearch Service(ES)是基于开源搜索引擎 Elasticsearch 打造的高可用、可伸缩的云端全托管 Elasticsearch 服务,完善的高可用解决方案,让业务可以放心的把重要数据存储到腾讯云 ES 中。 了解 ES 的索引管理方法有助于扬长避短,更好的利用 ES 的强大功能,特别是当遇到性能问题时,原因通常都可回溯至数据的索引方式以及集群中的
腾讯技术工程官方号
2020/07/06
1.2K0
Elasticsearch Index模块
index.number_of_shards :一个索引应该有的主分片(primary shards)数。默认是5。而且,只能在索引创建的时候设置。(注意,每个索引的主分片数不能超过1024。当然,这个设置也是可以改的,通过在集群的每个节点机器上设置系统属性来更改,例如:export ES_JAVA_OPTS="-Des.index.max_number_of_shards=128")
java架构师
2019/03/04
9830
Elasticsearch Index模块
Elasticsearch 索引容量管理实践
Elasticsearch是目前大数据领域最热门的技术栈之一,腾讯云 Elasticsearch Service(ES)是基于开源搜索引擎 Elasticsearch 打造的高可用、可伸缩的云端全托管 Elasticsearch 服务,完善的高可用解决方案,让业务可以放心的把重要数据存储到腾讯云 ES 中。
腾讯云大数据
2021/01/07
9940
Elasticsearch 索引容量管理实践
Elasticsearch 线上实战问题及解决方案探讨
我有 1tb 的一个大索引若干,要迁移到另外一个新集群去,有没有好办法?reindex好像会中断......
铭毅天下
2023/11/27
3590
Elasticsearch 线上实战问题及解决方案探讨
推荐阅读
相关推荐
Elasticsearch 日志能否把全部请求打印出来?
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文