当前位置: 首页 > news >正文

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

相关文章:

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

作者:来自 Elastic Valentin Crettaz 了解 AutoOps 如何帮助你调查困扰集群的长期搜索查询以提高搜索性能。 AutoOps 于 11 月初在 Elastic Cloud Hosted 上发布,它通过性能建议、资源利用率和成本洞察、实时问题检测和解决路径显著简化了集群管理。 Au…...

python二元表达式 三元表达式

目录 二元表达式必须要有else,示例: 二元表达式: 三元表达式 可以嵌套成多元表达式 python 代码中,有时写 if else比较占行,把代码变一行的方法就是二元表达式, 二元表达式必须要有else,示例: if img is None:breakcv2.imwrite("aaa.jpg", img) if coun…...

计算机网络 (22)网际协议IP

一、IP协议的基本定义 IP协议是Internet Protocol的缩写,即因特网协议。它是TCP/IP协议簇中最核心的协议,负责在网络中传送数据包,并提供寻址和路由功能。IP协议为每个连接在因特网上的主机(或路由器)分配一个唯一的IP…...

【UI自动化测试】selenium八种定位方式

🏡个人主页:謬熙,欢迎各位大佬到访❤️❤️❤️~ 👲个人简介:本人编程小白,正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话,记得点赞👍、收藏⭐️、评论💬&am…...

REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架

REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...

Android SPRD 工模测试修改

设备有两颗led灯,工模测试需全亮 vendor/sprd/proprietories-source/factorytest/testitem/led.cpp -13,6 13,10 typedef enum{#define LED_BLUE "/sys/class/leds/blue/brightness"#define LED_RED …...

H3C CN3360B光纤存储交换机配置案例

这几天在项目里面遇到了一台光纤存储交换机,需要划Zone来实现服务器外接存储 接下来我就分享我在项目中的配置 我是通过交换机串口进去的,也可以通过网口,串口的配置我就不介绍了 网口配置的地址是:10.77.77.77/24 登入方式&…...

问题:Flask应用中的用户会话(Session)管理失效

我来分享一个常见的PythonWeb开发问题: 问题:Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后,有时会话会意外失效,导致用户需要重复登录。 解决方案: 1. 首先&#x…...

Backend - C# 操作数据库 DB(ADO.NET、LINQ to SQL、EF)

目录 一、ADO.NET(传统) 二、LINQ to SQL(已过时) 三、EF(推荐) 常见的操作数据库的方法:有三种,分别是 ADO.NET、LINQ to SQL、EF 一、ADO.NET(传统) ADO.NE…...

JMeter + Grafana +InfluxDB性能监控 (二)

您可以通过JMeter、Grafana 和 InfluxDB来搭建一个炫酷的基于JMeter测试数据的性能测试监控平台。 下面,笔者详细介绍具体的搭建过程。 安装并配置InfluxDB 您可以从清华大学开源软件镜像站等获得InfluxDB的RPM包,这里笔者下载的是influxdb-1.8.0.x86_…...

springCloud实战

一、Feign的实战 1、使用 1.1步骤 ①引入feign依赖 ②在启动类上加上EnableFeignClients注解,开启Feign客户端 ③编写FeignClient接口 1.2开启feign调用日志 只需在yml配置文件中开启配置即可 feign:client:default:loggerLevel: FULL #feign接口被调用时的…...

从优化算法到分布式训练-提升AI模型收敛速度的系统性分析【附核心实战代码】

本文收录于专栏:精通AI实战千例专栏合集 https://blog.csdn.net/weixin_52908342/category_11863492.html从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮…...

如何在 Windows 10/11 上录制带有音频的屏幕 [3 种简单方法]

无论您是在上在线课程还是参加在线会议,您都可能需要在 Windows 10/11 上录制带有音频的屏幕。互联网上提供了多种可选方法。在这里,本博客收集了 3 种最简单的方法来指导您如何在 Windows 10/11 上使用音频进行屏幕录制。请继续阅读以探索! …...

鸿蒙应用开发(2)

鸿蒙应用开发启航计划-CSDN博客 鸿蒙应用开发(1)-CSDN博客 没看过前两篇的,建议请先看上面。 如果你学习完了前两篇,那么你学习这篇文章,就很容易理解了。 这一篇文章将介绍声明式UI的 渲染控制。你需要了解的是&…...

单片机-LED点阵实验

要将第一个点点亮,则 1 脚接高电平 a 脚接低电平,则第一个点就亮了;如果要将第一行点亮,则第 1 脚要接高电平,而(a、b、c、d、e、f、g、h )这些引脚接低电平,那么第一行就会点亮&…...

微服务-Nacos(注册中心)

Nacos Nacos可以看作注册中心配置中心&#xff0c;比Eureka更加强大。 注册中心 在父工程中引入SpringCloudAlibaba的版本依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId&g…...

【Linux知识】shell编程知识科普

文章目录 概述文件格式语法及例子 文件读写文件读取文件写入错误处理 后台执行shell1. 使用 & 符号2. 使用 nohup 命令3. 使用 screen 或 tmux使用 screen使用 tmux 4. 使用 disown 命令5. 使用系统服务管理器&#xff08;如 systemd&#xff09; 概述 Linux shell脚本文件…...

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

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

平安产险安徽分公司携手安徽中医药临床研究中心附属医院 共筑儿童安全防护网

为响应金融知识普及教育号召&#xff0c;平安产险安徽分公司联动安徽中医药临床研究中心附属医院&#xff0c;于近日在朝霞小学举办了一场儿童安全防范与健康守护活动。此次活动旨在提升学生的安全防范意识&#xff0c;守护儿童健康成长&#xff0c;同时有力推动金融知识与传统…...

C语言练习:求数组的最大值与最小值

文章目录 1. 提出任务2. 完成任务2.1 方法一&#xff1a;通过返回结构体指针来间接返回结果2.1.1 编写程序&#xff0c;实现功能2.1.2 运行程序&#xff0c;查看结果 2.2 方法二&#xff1a;通过参数传递数组&#xff0c;并在函数中修改传入的参数2.2.1 编写程序&#xff0c;实…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...