Observability:使用 Elastic AI Assistant 和 APM 分析 OpenTelemetry 应用程序

news2025/1/6 20:07:03

作者:来自 Elastic Bahubali Shetti

OpenTelemetry 正在迅速成为云原生计算基金会 (CNCF) 内最广泛的项目,拥有与 Kubernetes 一样多的提交,并获得了客户的广泛支持。 许多公司正在采用 OpenTelemetry 并将其集成到他们的应用程序中。 Elastic® 提供了有关为应用程序实施 OpenTelemetry 的详细指南。 然而,与许多应用程序一样,查明和解决问题可能非常耗时。

Elastic AI Assistant 不仅在识别问题方面,而且在解决问题方面都显着增强了流程。 Elastic 的新服务级别目标 (service leverl objective - SLO) 功能进一步增强了这一点,使你能够简化从检测潜在问题到增强整体客户体验的整个站点可靠性工程 (SRE) 流程。

在本博客中,我们将演示你作为 SRE 如何检测配备 OpenTelemetry 的服务中的问题。 我们将探索使用 Elastic APM、Elastic 的 AIOps 功能和 Elastic AI Assistant 来识别问题。

我们将使用 OpenTelemetry 演示来说明这一点,并激活一个功能标志 (cartService)。

我们的演练将包含两种场景:

  1. 当购物车服务的 SLO 不合规时,我们将通过 Elastic APM 分析错误。 Elastic AI Assistant 将通过提供运行手册和 GitHub 问题来协助问题分析。
  2. 如果购物车服务的 SLO 不合规,我们将检查指示高故障率的跟踪。 我们将使用 AIOps 进行故障关联,并使用 AI Assistant 直接从 Assistant 分析日志和 Kubernetes 指标。

先决条件和配置

如果你计划关注此博客,以下是我们用于设置配置的一些组件和详细信息:

  • 确保你在 Elastic Cloud上有一个帐户并已部署堆栈(请参阅此处的说明)。
  • 我们使用了 OpenTelemetry 演示。 有关将 Elastic 与 OpenTelemetry 演示结合使用的说明,请参见此处。
  • 此外,你还需要将你的人工智能助手连接到你最喜欢的 LLM。 我们使用 Azure OpenAI GPT-4。
  • 我们还在 Kubernetes(特别是 GKE)上运行了 OpenTelemetry 演示。

SLO 不合规

Elastic APM 最近在 8.12 中发布了 SLO(服务级别目标)功能。 此功能允许为服务设置可衡量的性能目标,例如可用性、延迟、流量、错误和饱和度,或者定义你自己的目标。 关键组件包括:

  • 定义和监控 SLI(service level  indicators - 服务水平指标)
  • 监控错误预算以表明允许的性能缺陷
  • 基于错误预算消耗情况进行告警

我们为购物车服务设置了两个 SLO:

  • 可用性 SLO,通过确保事务成功来监控其可用性。 我们在 OpenTelemetry 应用程序中设置了功能标志,该标志在 10% 的情况下会为 EmptyCart 交易生成错误。
  • 延迟 SLO,确保 transaction 不会低于特定延迟,否则会降低客户体验。

由于 OTel cartservice 功能标记,可用性 SLO 被触发,并且在 SLO 详细信息中,我们看到在 7 天的时间内可用性远低于我们的目标 99.9(95.5)。 此外,所有可用的错误预算也已耗尽。

借助 SLO,你可以轻松识别何时会出现客户体验问题,或者何时会出现潜在的服务问题,以免问题变得更糟。

场景一:使用AI助手分析APM轨迹和日志

一旦发现 SLO 不合规,我们就可以深入到购物车服务中,在 Elastic APM 中进行调查。 下面介绍了你可以在 Elastic APM 中执行的一系列步骤以及如何使用 AI Assistant 来分析问题:

OTEL AI - Elastic 可观则

从视频中我们可以看到,一旦进入 APM,我们就采取了以下步骤。

  • 调查了 EmptyCart 踪迹,发现其故障率高于正常水平。
  • 跟踪显示大量故障,这也导致延迟稍长。
  • 我们使用 AIOps 故障关联来识别导致故障的潜在组件,该组件与 FailedPrecondition 的字段值相关。
  • 在过滤该值并查看日志时,我们仍然无法理解这意味着什么。
  • 你可以在此处使用 Elastic 的 AI Assistant 来进一步了解该问题。

AI 助手帮助我们分析了以下内容:

  • 它帮助我们理解日志消息的含义以及它与 Redis 连接失败问题相关。
  • 由于我们无法连接到 Redis,我们要求 AI Assistant 为我们提供 Redis Kubernetes Pod 的指标。
  • 我们从过去两个小时的日志中了解到 Redis 有两个 pod。
  • 然而,我们也了解到,一个人的记忆力似乎在增加。
  • Redis 似乎已重新启动(因此出现了第二个 Pod),通过这些信息,我们可以更深入地了解 Redis 发生了什么。

你可以看到我们通过 AI Assistant 和 Elastic 的 APM 功能关联大量信息、日志、指标和跟踪的速度有多快。 我们不必通过多个屏幕来寻找信息。

场景2:使用 AI 助手分析 APM 错误

一旦发现 SLO 不合规,我们就可以深入到购物车服务中,在 Elastic APM 中进行调查。 以下逐步介绍了你可以在 Elastic APM 中执行并使用 AI Assistant 来分析问题的一组步骤:

可观察性 AI 助手-8.12

从视频中我们可以看到,进入APM后,我们采取了以下步骤:

  1. 我们注意到 APM 服务存在一个特定错误。
  2. 我们在错误选项卡中对此进行了调查,虽然我们发现这是与 Redis 连接的问题,但我们仍然需要更多信息。
  3. AI Assistant 帮助我们理解堆栈跟踪,并提供一些潜在的错误原因以及诊断和解决它的方法。
  4. 我们还要求其提供由我们的 SRE 团队创建的操作手册,其中为我们提供了解决此特定问题的步骤。

但正如你所看到的,AI Assistant 不仅为我们提供了有关错误消息的信息,还为我们提供了如何诊断它并可能通过内部运行手册解决它。

实现卓越运营、最佳性能和可靠性

我们展示了如何使用 Elastic 的功能(尤其是与 Elastic APM、AIOps 和最新的 SLO 功能相结合的 AI Assistant)来分析 OpenTelemetry 仪表化应用程序(OTel 演示)。 Elastic 显着简化了识别和解决应用程序中问题的过程。

通过对两个不同场景的详细演练,我们了解了 Elastic APM 和 AI Assistant 如何有效分析和解决购物车服务中不符合 SLO 的问题。 通过这些工具快速关联信息、日志、指标和跟踪的能力不仅可以节省时间,还可以提高故障排除过程的整体效率。

在这些场景中使用 Elastic 的 AI Assistant 凸显了将高级 AI 功能集成到操作工作流程中的价值。 它超越了简单的错误分析,提供了对潜在原因的洞察并提供了可行的解决方案,有时甚至提供了定制的运行手册。 这种技术集成从根本上改变了 SRE 解决问题的方式,使流程更加高效,减少对人工调查的依赖。

总体而言,Elastic 的 APM、AIOps 功能和 AI Assistant 的进步,特别是在处理 OpenTelemetry 数据方面,代表了卓越运营方面的重大进步。 这些工具使 SRE 不仅能够对新出现的问题做出快速反应,还能主动管理和优化其服务的性能和可靠性,从而确保增强的客户体验。

原文:Analyzing OpenTelemetry Apps with Elastic AI Assistant and APM | Elastic Blog

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

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

相关文章

【AI+应用】一步步搭建聊天机器人搭配多种国内外大模型以及api接口调用

如果你看过我之前写的一篇文章 【AI应用】怎么快速制作一个类chatGPT套壳网站, 你可能顺利地使用chatGPT、Gemini, 用得很happy。 突然有一天,你发现一些网站,除了chatGPT、Gemini ,还可以切换使用国内外其他的大模型…

“风口”上的量化大厂“绣球”抛向中低频人才

量化人才这几年是人才舞台上的“香饽饽”。 遵循着低频不如高频、小厂不如大厂的薪资逻辑,各路人才被各路机构“哄抢”,薪资一路走高。 但2024年的“信号”再强烈不过——量化大厂们到了改变的时候了。 而量化大厂们显然对此已“心知肚明”....... “…

Vue.js 应用实现监控可观测性最佳实践

前言 Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。 TinyPro 是一套使用 Vue …

固态存储是未来|浅析SSD架构的演进与创新技术-2

除了性能和容量这两个最大的诉求外,其他的需求已经成为SSD现场架构的核心竞争力。 一是安全性:随着数据安全威胁日益严重,SSD的安全设计成为关键,包括提供单芯片硬件信任根、遵循FIPS140-3安全标准以及支持一次性可编程位字段来锁…

基础:TCP是什么?

1. TCP 是什么? TCP(Transmission Control Protocol 传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1]定义。 TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机…

TCP相关特性

协议段格式 • 源/⽬的端⼝号:表⽰数据是从哪个进程来,到哪个进程去; • 32位序号/32位确认号:后⾯详细讲; • 4位TCP报头⻓度:表⽰该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最⼤⻓度是15*460 • 6位标志位: ◦ URG:紧急指针是否有效 ◦ ACK:确认号是否有效…

yocto是个什么东东

yocto不是个什么东东 在我们了解Yocto项目是什么之前,让我们先了解一下它不是什么。 Yocto项目不是用于现有硬件的软件开发工具包(SDK),而是用于构建这样一个工具包。 Yocto项目不是可以部署到硬件上的系统二进制镜像&#xff…

软考高级:BPR 和 BPM概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

ubuntu下docker安装

目录 官网链接 安装步骤 docker使用方法 拉取镜像 创建镜像 运行镜像 查看运行结果 保存镜像文件 传输到windows下 官网链接 Install Docker Engine on Ubuntu | Docker Docs 安装步骤 1.运行以下命令卸载所有冲突的包: for pkg in docker.io docker-d…

mysql实战开发之 mysql 删除一张表某个字段的sql语句

有一张表, 我需要删除这张表其中的某一个或者某几个字段, 相信大家在日常开发中应该会遇到这种情况, 然后刚好自己接触的项目安装的mysql关闭了允许远程连接的设置, 也就是说不允许使用类似于navicat 等可视化工具连接, 那么就没办法通过可视化工具直接去通过鼠标操作就可以 完…

Android Studio实现内容丰富的安卓宠物医院管理系统

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号128 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.系统公告 3.宠物社区(可发布宠物帖子&#xf…

详细分析Java中Stream流和for循环的差异之处

目录 前言1. 基本知识2. Demo 前言 事情起因是遍历大数据的时候,数据卡顿很严重 对于Java的基本知识推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 1. 基本知识 在Java中,Stream API提供…

对模型性能进行评估(Machine Learning 研习十五)

在上一篇我们已然训练了一个用于对数字图像识别的模型,但我们目前还不知道该模型在识别数字图像效率如何?所以,本文将对该模型进行评估。 使用交叉验证衡量准确性 评估模型的一个好方法是使用交叉验证,让我们使用cross_val_score…

emment语法

文章目录 1. 生成普通的标签2. 生成 div类名3. 生成指定标签类名/id 值4. 生成带有子元素的标签5. 生成内部文本6. 一次可以生成多个标签7. 生成带有指定属性 的元素8. 生成相邻兄弟元素 1. 生成普通的标签 本质使用的就是元素选择器,例如 div p a 标签等等。 2. …

绝地求生:PUBG 2024年 更新重点偏向于武器平衡、游戏互动及联名道具

一、游戏体验 1. 增加可破坏的环境 1.1 增加更多互动功能 通过可破坏环境将游戏方式变得千变万化。待功能上线,在后续游戏中玩家可以对建筑物进行部分破坏来开辟新的进攻、撤退路线,或搭建掩体进行战略性攻击。 环境破坏部分功能,将会在4…

uniapp无感登录封装

全局请求封装 https://blog.csdn.net/qq_42618566/article/details/109308690 无感登录封装 import {http} from "./index.js" let requestsQueue []; // 请求队列// 记录请求队列 export function recordRequests(path, params, loading, method) {requestsQueu…

SQLiteC/C++接口详细介绍之sqlite3类(四)

快速跳转文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(三) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(五) 编写不易,有用的朋友点个赞或加粉一下万分感…

详解命令docker run -d --name container_name -e TZ=Asia/Shanghai your_image

docker run 是Docker的主要命令,用于从镜像启动一个新的容器。下面详细解释并举例说明 -d, --name, -e TZ 参数的用法: -d 或 --detach: 这个标志告诉Docker以守护进程(后台)模式运行容器。这意味着当你执行 docker ru…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《适应分布式资源渗透率提高的配电网网元规划方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextArea)

多行文本输入框组件,当输入的文本内容超过组件宽度时会自动换行显示。 高度未设置时,组件无默认高度,自适应内容高度。宽度未设置时,默认撑满最大宽度。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容&…