Elasticsearch:利用 AutoOps 检测长时间运行的搜索查询

作者:来自 Elastic Valentin Crettaz

了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。

AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布,它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。

AutoOps 每分钟运行数百次分析之一,用于检查集群的设置、指标和健康警报,当长时间运行的搜索查询困扰你的集群时。长时间运行的搜索查询会严重影响性能,导致高资源消耗。让我们看看它的具体工作原理。

什么是 AutoOps?

它是如何工作的?

AutoOps for Elastic Cloud Hosted 的优点在于无需执行任何操作。在所有支持 AutoOps 的地区,AutoOps 代理会自动附加到任何新的或现有的部署,几分钟内,指标将开始发送,分析将启动,一旦检测到可疑情况,就会引发事件。

无需启用慢速日志并设置 Filebeat 来跟踪和索引它们,只需仔细并定期监控任务管理(Task Management) API 即可开箱即用。

为了知道是否为给定部署启用了 AutoOps,只需转到其 Elastic Cloud 控制台页面并单击 “Manage - 管理” 部署即可。如果屏幕右上角出现 “打开 AutoOps(Open AutoOps)” 按钮,则表示 AutoOps 已启用。

在 AutoOps 中打开部署视图(Deployment view)时,我们会立即看到所有最近事件的简要历史记录。在下面的屏幕截图中,我们可以看到最近打开了一个 “长时间运行的搜索任务 - Long running search task” 事件。

单击事件会打开一个弹出面板,其中显示已检测到的慢速搜索查询的 DSL 以及与该查询的执行上下文相关的大量信息。

长时间运行的搜索任务的剖析

下面的屏幕截图显示了 AutoOps 能够收集并显示在事件弹出面板中的所有信息。我们现在将更详细地回顾每个部分。

1. 涉及的节点

首先,我们获得检测到长时间运行查询的节点的链接,即 instance-0000000223。该链接允许我们直接跳转到 Nodes 视图(Nodes view),我们可以在其中找到有关该特定节点的大量指标和信息。

2. 涉及的索引

我们还可以看到查询在哪些索引上运行。在本例中,我们可以看到查询在 logs-apache.error-default、logs-nginx.error-default 和另外两个索引上运行。

单击这些索引将转到 Shards 视图(Shards view),该视图将允许我们查看已识别节点上这些索引的详细分片细分以及也位于该节点上的其他索引的所有分片。该视图将帮助我们检测是否存在可能导致查询缓慢的热点。

3. 查询延迟高的潜在原因

深入挖掘后,我们可以看到进行了一些基本的查询分析,并且 AutoOps 揭示了查询可能变慢的一些潜在原因。在这种情况下,我们可以看到:

  1. 查询以 30 天的时间间隔运行,这可能代表大量数据
  2. 存在嵌套聚合,众所周知,这些聚合性能不佳
  3. 响应可能包含多达 20,000 个聚合存储桶,这可能会对节点内存造成负担

对于使用正则表达式或脚本的查询,有更多检测规则。此外,新的检测规则将定期添加,并与索引映射一起考虑。

4. 查询上下文

最后,还有一些关于搜索查询上下文的信息需要收集,例如:

  1. 它运行了多长时间,
  2. 它是否可取消,
  3. 附加到 HTTP 调用的所有标头。在这种情况下,我们可以看到 trace.id 标头(这使得在 APM 中很容易找到它),还可以看到 X-Opaque-Id,其中包含发送此查询的客户端的指示。在这里,我们可以看到查询源自 Kibana 中的 SIEM 警报规则,但它也可能是可视化或仪表板,甚至是在 Dev Tools 中运行查询的用户。

也适用于 ES|QL

但等等,还有更多!AutoOps 不仅检测长时间运行的 DSL 查询,还检测 ES|QL 查询。在下面的屏幕截图中,我们可以看到 AutoOps 检测到了一个缓慢的 ES|QL 查询。

所有相同的上下文信息都可用于 ES|QL 查询,只是目前没有进行查询分析。因此,AutoOps 尚未提供任何有关如何改进 ES|QL 查询的见解,但很快就会添加。

接下来可以做什么?

由于此事件是在检测到长时间运行的搜索查询时引发的,因此有几个选项。检查查询时,如果它看起来像一个恶意查询或由粗心的用户从 Dev Tools 运行的查询,那么如果任务仍在运行,则可以简单地取消该任务。

另一方面,如果它看起来像一个合法查询并且不再运行,那么下一步应该是调查 “延迟增加的原因 - reasons for increased latency”,其中 AutoOps 列出了通过检查查询检测到的一些潜在问题。目前这仅适用于 DSL,未来将支持 ES|QL。

多长时间算长?

默认情况下,如果搜索查询已运行超过一分钟,AutoOps 将引发 “长时间运行的搜索任务 - Long running search task” 事件。这是默认配置设置,可以通过单击事件弹出面板右上角的三个点图标,然后选择 “自定义 - Customize” 来轻松修改,以更改默认持续时间阈值。

如果 AutoOps 正在监控多个集群,还可以将自定义设置仅应用于特定集群,而不是所有集群。

总结

正如我们所见,AutoOps 有助于检测长时间运行的搜索查询并挖掘出有关它们的大量信息。确保利用所有这些信息来改进你的搜索查询,并尽可能减轻集群的负载。

另请注意,“长时间运行的搜索任务 - Long running search task” 事件只是 AutoOps 知道要检测的数百个其他有见地的事件之一。如果你的部署位于受支持的区域之一,请随时转到你的 Elastic Cloud 帐户并启动 AutoOps,了解它如何使集群管理变得更加简单。还请继续关注有关其他非常有用的事件和建议的未来文章。

使用 AutoOps 管理 Elastic Cloud 很容易。获得即时性能洞察和成本可见性 - 免费试用 AutoOps 14 天。

原文:https://www.elastic.co/search-labs/blog/slow-search-elasticsearch-query-autoops

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/66106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp实现后端数据i18n国际化

1.在main.js配置请求获取到数据再设置到i18n中, 我这里是通过后端接口先获取到一个多个数据的的json链接,通过链接再获取数据,拿到数据后通过遍历的方式设置i18n //接口数据示例:{"vi": "http://localhost:8899/…

关于Flutter应用国际化语言的设置

目录 1. Locale配置 2. 用户切换/启动自动加载缓存里面的locale 由于最近在开发app国际化设置的时候遇到一些问题,所以做出一些总结。 1. Locale配置 具体的初始化配置可以参考文档:i18n | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 值得…

基层医联体医院患者历史检验检查数据的快速Python编程分析

​​​​​​​ 一、引言 1.1 研究背景与意义 在当今数字化医疗时代,医疗数据呈爆炸式增长,涵盖患者的基本信息、病史、检验检查结果、治疗方案等各个维度。这些海量且复杂的数据蕴含着巨大价值,为精准医疗决策提供了关键依据。通过对患者历史检验检查数据的深入对比分析…

如何使用OpenCV进行抓图-多线程

前言 需求: 1、如何使用OpenCV捕抓Windows电脑上USB摄像头的流、 2、采用多线程 3、获知当前摄像头的帧率。 这个需求,之前就有做了,但是由于出现了一个问题,人家摄像头的帧率目前都可以达到60帧/s 了,而我的程序…

数势科技:解锁数据分析 Agent 的智能密码(14/30)

一、数势科技引领数据分析变革 在当今数字化浪潮中,数据已然成为企业的核心资产,而数据分析则是挖掘这一资产价值的关键钥匙。数势科技,作为数据智能领域的领军者,以其前沿的技术与创新的产品,为企业开启了高效数据分析…

26.Java Lock 接口(synchronized 关键字回顾、可重入锁快速入门、Lock 对比 synchronized)

一、synchronized 关键字 1、synchronized 关键字回顾 synchronized 是 Java 中的关键字,是一种同步锁,它修饰的对象有以下几种 修饰一个类:其作用的范围是 synchronized 后面括号括起来的部分,作用的对象是这个类的所有对象 修…

C++11编译器优化以及引用折叠

1.左值与右值的意义 1.左值引用和右值引用最终目的是减少拷贝,提高效率 2.左值引用还可以修改参数/返回值 左值引用不足: 部分函数放回场景,只能传值返回,不能引用左值返回 当前函数局部对象,出了当前函数作用域生…

云手机 —— 手机矩阵的 “超级外挂

如何打造手机矩阵 打造手机矩阵主要包括以下几个步骤: 1.确定目标与需求:首先,明确打造手机矩阵的目的和需求,是为了进行电商运营、自媒体推广、任务管理还是其他目的。这将决定后续的手机数量、操作系统选择以及应用安装等。 2.选择手机与操作系统:根据…

小程序学习06——uniapp组件常规引入和easycom引入语法

目录 一 组件注册 1.1 组件全局注册 1.2 组件全局引入 1.3 组件局部引入 页面引入组件方式 1.3.1 传统vue规范: 1.3.2 通过uni-app的easycom 二 组件的类型 2.1 基础组件列表 一 组件注册 1.1 组件全局注册 (a)新建compoents文件…

【时时三省】(C语言基础)常见的动态内存错误2

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 对非动态开辟空间内存使用free释放 示例: 这个arr数组是在栈上的 *p指向的就是arr 对非动态空间也用了free ferr只能在动态开辟空间使用 使用free释放一块动态开辟空间的一部分…

3D高斯点云CUDA版本数据制作与demo运行

0. 简介 关于UCloud(优刻得)旗下的compshare算力共享平台 UCloud(优刻得)是中国知名的中立云计算服务商,科创板上市,中国云计算第一股。 Compshare GPU算力平台隶属于UCloud,专注于提供高性价4090算力资源,配备独立IP,…

【游戏设计原理】46 - 魔杖

幻想,人们可以通过多种形式来引发,比如文字,图片,绘画,语言等,但游戏与以上这些形式的区别,正如游戏与其他艺术形式的区别一样,游戏作为一种艺术和娱乐形式,其独特之处在…

基于Java的敬老院管理系统的设计和实现【源码+文档+部署讲解】

基于Java的敬老院管理系统设计和实现 摘 要 新世纪以来,互联网与计算机技术的快速发展,我国也迈进网络化、集成化的信息大数据时代。对于大众而言,单机应用早已成为过去,传统模式早已满足不了当下办公生活等多种领域的需求,在一台电脑上不联网的软件少之又少&#x…

NLP 技术的突破与未来:从词嵌入到 Transformer

在过去的十年中,自然语言处理(NLP)经历了深刻的技术变革。从早期的统计方法到深度学习的应用,再到如今Transformer架构的普及,NLP 的发展不仅提高了模型的性能,还扩展了其在不同领域中的应用边界。 1. 词嵌…

Git快速入门(一)·Git软件的安装以及GitHubDesktop客户端的安装

目录 1. 概述 1.1 版本控制介绍 1.1.1 集中式版本控制 1.1.2 分布式版本控制 1.1.3 多人协作开发 2. 安装Git 3. 安装GitHubDesktop客户端 1. 概述 Git 是一个免费的、开源的分布式版本控制系统。它能够快速高效地处理从小型到大型的各种项目。Git 具有易于学习…

数据挖掘——神经网络分类

神经网络分类 神经网络分类人工神经网络多层人工神经网络 误差反向传播(BP)网络后向传播算法 神经网络分类 人工神经网络 人工神经网络主要由大量的神经元以及它们之间的有向连接构成。包含三个方面: 神经元的激活规则 主要是指神经元输入…

PDF文件提示-文档无法打印-的解决办法

背景信息 下载了几个签名的PDF文件,想要打印纸质版,结果打印时 Adobe Acrobat Reader 提示【文档无法打印】: 解决办法 网上的方案是使用老版本的PDF阅读器, 因为无法打印只是一个标识而已。 PDF文件不能打印的五种解决方案-zhihu 这些方…

docker容器间基于bridge双向通信

前面介绍了通过link实现容器间的单向通信: docker容器间基于Link单向通信-CSDN博客 情景概述 通过前面已经知道了设置link来达到容器间通过容器名称双向通信,那是不是可以通过每个容器都设置link来达到双向通信,这种方式实现起来太麻烦&…

前端如何判断多个请求完毕

在前端开发中,经常会遇到需要同时发起多个异步请求,并在所有请求都完成后再进行下一步操作的情况。 这里有几个常用的方法来实现这一需求: 使用 Promise.all() Promise.all() 方法接收一个 Promise 对象的数组作为参数,当所有的…

云备份项目--服务端编写

文章目录 7. 数据管理模块7.1 如何设计7.2 完整的类 8. 热点管理8.1 如何设计8.2 完整的类 9. 业务处理模块9.1 如何设计9.2 完整的类9.3 测试9.3.1 测试展示功能 完整的代码–gitee链接 7. 数据管理模块 TODO: 读写锁?普通锁? 7.1 如何设计 需要管理…