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

使用 ES|QL 优化可观察性:简化 Kubernetes 和 OTel 的 SRE 操作和问题解决

作者:Bahubali Shetti

作为一名运营工程师(SRE、IT 运营、DevOps),管理技术和数据蔓延是一项持续的挑战。 简单地管理大量高维和高基数数据是令人难以承受的。

作为单一平台,Elastic® 帮助 SRE 将无限的遥测数据(包括指标、日志、跟踪和分析)统一并关联到单一数据存储 — Elasticsearch® 中。 然后,通过应用 Elastic 的高级机器学习 (ML)、AIOps、AI Assistant 和分析的强大功能,你可以打破孤岛并将数据转化为见解。 作为全栈可观测性解决方案,从基础设施监控到日志监控和应用程序性能监控 (APM) 的所有内容都可以在单一、统一的体验中找到。

在 Elastic 8.11 中,Elastic 的新管道查询语言 ES|QL(Elasticsearch 查询语言)现已提供技术预览,它可以转换、丰富和简化数据调查。 在新的查询引擎的支持下,ES|QL 提供了具有并发处理的高级搜索功能,从而提高了速度和效率,而不受数据源和结构的影响。 通过从一个屏幕创建聚合和可视化来加速解决问题,提供迭代、不间断的工作流程。

ES|QL 对于 SRE 的优势

使用 Elastic Observability 的 SRE 可以利用 ES|QL 来分析日志、指标、跟踪和分析数据,使他们能够通过单个查询查明性能瓶颈和系统问题。 在 Elastic Observability 中使用 ES|QL 管理高维和高基数数据时,SRE 具有以下优势:

  • 提高运营效率:通过使用 ES|QL,SRE 可以使用聚合值作为单个查询的阈值来创建更多可操作的通知,这些通知也可以通过 Elastic API 进行管理并集成到 DevOps 流程中。
  • 通过洞察增强分析:ES|QL 可以处理各种可观测数据,包括应用程序、基础设施、业务数据等,无论来源和结构如何。 ES|QL 可以轻松地通过附加字段和上下文丰富数据,从而允许通过单个查询创建仪表板可视化或问题分析。
  • 缩短解决问题的平均时间:ES|QL 与 Elastic Observability 的 AIOps 和 AI Assistant 结合使用,可通过识别趋势、隔离事件和减少误报来提高检测准确性。 这种上下文的改进有助于故障排除以及快速查明和解决问题。

Elastic Observability 中的 ES|QL 不仅增强了 SRE 更有效地管理客户体验、组织收入和 SLO 的能力,而且还通过提供上下文聚合数据来促进与开发人员和 DevOps 的协作。

在本博客中,我们将介绍 SRE 可以利用 ES|QL 的一些关键用例:

  • ES|QL 与 Elastic AI Assistant 集成,使用公共 LLM 和私有数据,增强了 Elastic Observability 中任何地方的分析体验。
  • SRE 可以在单个 ES|QL 查询中分解、分析和可视化来自多个来源和跨任何时间范围的可观察性数据。
  • 可以通过单个 ES|QL 查询轻松创建可操作的警报,从而增强操作。

我将通过展示 SRE 如何解决使用 OpenTelemetry 检测并在 Kubernetes 上运行的应用程序中的问题来完成这些用例。 OpenTelemetry (OTel) 演示位于 Amazon EKS 集群上,并配置了 Elastic Cloud 8.11。

你还可以查看我们的 Elastic Observability ES|QL 演示,该演示演示了可观察性的 ES|QL 功能。

ES|QL 与 AI 助手

作为 SRE,你正在使用 Elastic Observability 监控 OTel 仪表化应用程序,而在 Elastic APM 中,你会注意到 service map 中突出显示的一些问题。

使用 Elastic AI Assistant,你可以轻松要求进行分析,特别是,我们会检查应用程序服务的总体延迟情况。

My APM data is in traces-apm*. What's the average latency per service over the last hour? Use ESQL, the data is mapped to ECS

Elastic AI Assistant 生成一个 ES|QL 查询,我们在 AI Assistant 中运行该查询以获取所有应用程序服务的平均延迟列表。 我们可以很容易地看到前四名是:

  • load generator
  • front-end proxy
  • frontendservice
  • checkoutservice

通过 AI Assistant 中的简单自然语言查询,它生成了单个 ES|QL 查询,帮助列出跨服务的延迟。

注意到多个服务存在问题,我们决定从前端代理(front-end proxy)开始。 当我们研究细节时,我们看到了重大故障,并且通过 Elastic APM 故障关联,很明显前端代理没有正确完成对下游服务的调用。

Discover 中的 ES|QL 洞察力和上下文分析

了解应用程序在 Kubernetes 上运行后,我们会调查 Kubernetes 中是否存在问题。 我们特别想查看是否有任何服务存在问题。

我们在 Elastic Discover 的 ES|QL 中使用以下查询:

from metrics-* | where kubernetes.container.status.last_terminated_reason != "" and kubernetes.namespace == "default" | stats reason_count=count(kubernetes.container.status.last_terminated_reason) by kubernetes.container.name, kubernetes.container.status.last_terminated_reason | where reason_count > 0

ES|QL 帮助分析来自 Kubernetes 的 1,000 个/10,000 个指标事件,并突出显示由于 OOMKilled 而重新启动的两个服务。

当被问及 OOMKilled 时,Elastic AI Assistant 表示 pod 中的容器由于内存不足而被终止。

我们运行另一个 ES|QL 查询来了解电子邮件服务和产品目录服务的内存使用情况。

ES|QL 很容易发现平均内存使用量相当高。

我们现在可以进一步调查这两个服务的日志、指标和 Kubernetes 相关数据。 然而,在继续之前,我们创建一个警报来跟踪大量内存使用情况。

使用 ES|QL 发出可操作的警报

怀疑可能会再次出现的特定问题,我们只需创建一个警报,引入我们刚刚运行的 ES|QL 查询,该查询将跟踪内存利用率超过 50% 的任何服务。

我们修改最后一个查询以查找内存使用率高的任何服务:

FROM metrics*
| WHERE @timestamp >= NOW() - 1 hours
| STATS avg_memory_usage = AVG(kubernetes.pod.memory.usage.limit.pct) BY kubernetes.deployment.name | where avg_memory_usage > .5

通过该查询,我们创建一个简单的警报。 请注意如何将 ES|QL 查询引入警报中。 我们简单地将其与寻呼机职责联系起来。 但我们可以从多个连接器中进行选择,例如 ServiceNow、Opsgenie、电子邮件等。

通过此警报,我们现在可以轻松监控 pod 中内存利用率超过 50% 的任何服务。

使用 ES|QL 充分利用你的数据

在这篇文章中,我们展示了 ES|QL 为分析、操作和减少 MTTR 带来的强大功能。 综上所述,Elastic Observability 中 ES|QL 的三个用例如下:

  • ES|QL 与 Elastic AI Assistant 集成,使用公共 LLM 和私有数据,增强了 Elastic Observability 中任何地方的分析体验。
  • SRE 可以在单个 ES|QL 查询中分解、分析和可视化来自多个来源和跨任何时间范围的可观察性数据。
  • 可以通过单个 ES|QL 查询轻松创建可操作的警报,从而增强操作。

Elastic 邀请 SRE 和开发人员亲身体验这种变革性语言,并开启数据任务的新视野。 今天就在 https://ela.st/free-Trial上尝试一下,现在处于技术预览版。

本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 当前不可用的任何特性或功能可能无法按时交付或根本无法交付。

原文:Optimizing SRE efficiency and issue resolution with ES|QL in Elastic Observability, OTel, and Kubernetes | Elastic Blog

相关文章:

使用 ES|QL 优化可观察性:简化 Kubernetes 和 OTel 的 SRE 操作和问题解决

作者:Bahubali Shetti 作为一名运营工程师(SRE、IT 运营、DevOps),管理技术和数据蔓延是一项持续的挑战。 简单地管理大量高维和高基数数据是令人难以承受的。 作为单一平台,Elastic 帮助 SRE 将无限的遥测数据&#…...

Docker 第十九章 : 阿里云个人镜像仓使用

Docker 第十九章 : 阿里云个人镜像仓使用 本章知识点: 如何创建镜像库,如何设置密码,如何登录与退出个人镜像仓,如何本地打镜像,如何将本地镜像推送到个人镜像库。 背景 在项目YapiDocker部署中,因读取mongo:latest 版本不一致,导致后续执行步骤的异常。遇到此场景…...

二、系统知识笔记-系统架构概述

一、系统架构定义 系统架构是指对一个系统的整体结构和组成部分进行描述和规划的过程。系统架构定义决定了系统的设计、开发和实施过程中的关键方向和决策。是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演…...

【高德地图】Android高德地图绘制标记点Marker

📖第4章 Android高德地图绘制标记点Marker ✅绘制默认 Marker✅绘制多个Marker✅绘制自定义 Marker✅Marker点击事件✅Marker动画效果✅Marker拖拽事件✅绘制默认 Infowindow🚩隐藏InfoWindow 弹框 ✅绘制自定义 InfoWindow🚩实现 InfoWindow…...

每天一个知识点 - 如何快速熟悉后端项目

入职一家新公司的时候,不可避免的就是接触到新公司的项目,有些项目一启动就是好几年,业务功能极其复杂,下面我总结几个方法让大家快速熟悉后端项目(图文结合) 用例图简析 用例是系统中的一个功能单元&…...

如何将cocos2d-x js打包部署到ios上 Mac M1系统

项目环境 cocos2d-x 3.13 xcode 12 mac m1 big sur 先找到你的项目 使用xcode软件打开上面这个文件 打开后应该是这个样子 执行编译运行就好了 可能会碰到的错误 在xcode11版本以上都会有这个错误,这是因为iOS11废弃了system。 将上面代码修改为 #if (CC_TARGE…...

pdffactory pro 8中文破解版

详细介绍 PdfFactory,PDF文档虚拟打印机,无须Acrobat即可创建Adobe PDF文件,创建PDF文件的方法比其他方法更方便和高效。支持将多个文档整合到一个PDF文件、增加字体和便签、PDF加密、去水印、压缩优化。 FinePrint,Windows虚拟…...

常用ADB命令整理已经ADB键盘输入

我们在测试Android app过程中 需要经常更换安装包的操作 熟练使用ADB命令可以提升测试效率 * 查看设备 adb devices ps这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示 若有多台安卓设备&#xff0c;可以通过在adb后面加上 -s <设备id>…...

buuctf_N1BOOK_粗心的小李

题目&#xff1a; 看完题目&#xff0c;git下载文件&#xff1f;然后将.git文件传到线上环境&#xff1f;&#xff08;which 会造成git泄露的安全威胁&#xff09;<这个背景抱歉我不太了解哈&#xff0c;可能后续有补充> 这里主要记录做法过程&#xff1a; 工具&#xf…...

爬取链家二手房房价数据存入mongodb并进行分析

实验目的 1.使用python将爬虫数据存入mongodb&#xff1b; 2.使用python读取mongodb数据并进行可视化分析。 实验原理 MongoDB是文档数据库&#xff0c;采用BSON的结构来存储数据。在文档中可嵌套其他文档类型&#xff0c;使得MongoDB具有很强的数据描述能力。本节案例使用的…...

论文阅读:Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases

前言 最近看到一篇ICRA2024上的新文章&#xff0c;是关于多传感器融合SLAM的&#xff0c;好像使用了最近几年文章中较火的轮式里程计。感觉这篇文章成果不错&#xff0c;代码和数据集都是开源的&#xff0c;今天仔细读并且翻译一下&#xff0c;理解创新点、感悟研究方向、指导…...

一键获取电商平台商品信息,快速提高电商业务效率

阿里巴巴店铺所有商品API接口技术全解析 一、引言 在阿里巴巴这个全球领先的电商平台上&#xff0c;店铺所有商品API接口&#xff08;item_search_shop&#xff09;为开发者提供了一个便捷的途径&#xff0c;能够获取店铺的所有商品信息。通过这一接口&#xff0c;无论是数据…...

vue 中实现音视频播放进度条(满足常见开发需求)

由于开发需要&#xff0c;作者封装了一个音视频播放进度条的插件&#xff0c;支持 vue2 及 vue3 &#xff0c;有需要的朋友可联系作者&#xff0c;下面是对该款插件的介绍。 插件默认样式&#x1f447;&#xff08;插件提供了多个配置选项&#xff0c;可根据自身需求进行个性化…...

【广度优先搜索】【网格】【割点】1263. 推箱子

作者推荐 视频算法专题 涉及知识点 广度优先搜索 网格 割点 并集查找 LeetCode:1263. 推箱子 「推箱子」是一款风靡全球的益智小游戏&#xff0c;玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示&#xff0c;其中每个元素可以是墙、地板或…...

论文精读--GPT1

把transformer的解码器拿出来&#xff0c;在没有标号的大量文本数据上训练一个语言模型&#xff0c;来获得预训练模型&#xff0c;然后到子任务上微调&#xff0c;得到每个任务所需的分类器 Abstract Natural language understanding comprises a wide range of diverse tasks…...

C/C++的内存管理(1)

内存管理 C与C的内存分布C语言中动态内存管理方式回顾C内存管理的方式 C与C的内存分布 我们学习C语言时就知道&#xff0c;储存不同的变量计算机会相应分配不同区块的内存。那为什么要把内存化为不同的区域呢&#xff1f;实质上是为了方便管理 下面我们来看看下面一道例题&…...

C 标准库 - <stdlib.h>

简介 <stdlib.h> 头文件定义了四个变量类型、一些宏和各种通用工具函数。 库变量 下面是头文件 stdlib.h 中定义的变量类型&#xff1a; 序号变量 & 描述1size_t2wchar_t3div_t4ldiv_t 库宏 下面是头文件 stdlib.h 中定义的宏&#xff1a; 序号宏 & 描述1…...

Python中回调函数的理解与应用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 前言 回调函数的概念 回调函数的基本用法 回调函数的实现方式 1 使用函数 2 使用类方法 3 使用类实…...

抖音数据挖掘软件|视频内容提取

针对用户获取抖音视频的需求&#xff0c;我们开发了一款功能强大的工具&#xff0c;旨在解决用户在获取抖音视频时需要逐个复制链接、下载的繁琐问题。我们希望用户能够通过简单的关键词搜索&#xff0c;实现自动批量抓取视频&#xff0c;并根据需要进行选择性批量下载。因此&a…...

PostgreSQL如何使用UUID

离线安装时&#xff0c;一般有四个包&#xff0c;都安装的话&#xff0c;只需要开启uuid的使用即可&#xff0c;如果工具包(即 postgresql11-contrib&#xff09;没有安装的话&#xff0c;需要单独安装一次&#xff0c;再进行开启。 开启UUID方法 下面介绍一下如何开启&#…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

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

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

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...