Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误

作者:DAVID HOPE

本博客介绍了 Elasticsearch 相关性引擎 (ESRE​​) 及其 Elastic Learned Sparse Encoder 功能的新颖应用,特别是在日志分析中。

最近发布的 Elasticsearch Relevance Engine™ (ESRE™) 包含一系列重要功能,可增强搜索能力,并可使用与询问生成式 AI 问题相同的自然语言来查询 Elasticsearch®。

这让我想知道我们如何将其用于日志。 开始使用 Elastic Learned Sparse Encoder 模型相当容易,这是一种支持语义搜索的重要 ESRE 功能 - 我们将在本博客中介绍如何使用它进行日志记录。 此功能与 Elasticsearch® 当前的功能有很大不同,因为它理解单词的含义并广泛搜索具有相似含义或与我搜索的单词同义的单词。

Elastic Learned Sparse Encoder 也是一种高效的搜索排名解决方案,在域外空间(即,当模型未严格根据用户数据进行训练时),可产生比传统 BM25 和基于向量的 KNN 搜索更好的结果。 后期交互模型通过对原始文本进行编码,以便在查询时提供更多上下文信息,从而提高搜索准确性。

Elastic Learned 稀疏编码器如何工作?

当 Elastic Learned Sparse Encoder 应用于原始文本(例如日志消息)时,它会生成一个数据结构。 该结构的键代表原始文本中找到的术语及其同义词。 在称为术语扩展(text expansion)的过程中,模型根据术语和同义词与原始文本的相关性,从 30K 固定术语的静态词汇表中添加和删除数据中的术语和同义词。 这与向量嵌入类似,创建辅助数据结构(或多个结构)并将其存储在字段中,然后可用于查询中的即时语义匹配。

每个术语还有一个关联的分数,它捕获了其在原始文本中的上下文重要性。 我们将此数据结构称为(评分的)词袋(bag of words)或 BOW。

BOW 示例

请注意如何捕获输入文本的单词、词干、添加同义词以及最终评分。 另请注意,“Scored Bag of Words” 结构只是 [word => Score] 的映射。 稍后你将看到这是如何为我们的系统日志生成的。

在查询时,输入查询字符串在后台经历与我们在摄取时执行的原始日志文本相同的推理过程,以生成 BOW。 然后,将此 BOW 与索引中原始日志文本的 BOW 进行匹配,类似于带有嵌入向量的 k 最近邻搜索。 搜索结果的最终排名分数是一个公式的结果,该公式考虑了查询 BOW 中的匹配单词和原始日志文本的分数。

我们来举个例子说明它的用处,如果我正在搜索 “Are there any TLS warnings?”。 在我的系统日志中,以下日志行 “2023/05/24 17:10:33: Error getting config status, workload certificates may not be configured: HTTP 404” 匹配,尽管该特定日志行中不存在精确匹配。 ESRE 了解 TLS 与证书相关。

这里需要注意的是:此搜索是 “模糊” 搜索,可能不会为你提供所需的结果。 你甚至可以使用更好的模型来实现此目的,例如根据你自己的数据训练的模型。 重要的是要记住,这只是当我们需要解决模糊问题时帮助我们指明正确方向的另一个工具。 能够在搜索过程中一般性地讨论问题,而不必非常具体地讨论我们看到的错误,这可以帮助我们进行根本原因分析。

你可以启动并运行它,然后只需单击几下即可开始使用它来搜索日志。

这能够改变你进行问题检测和修复的方式,因为 ESRE 可能会返回你以前可能从未想过分析但与你要解决的问题相关的日志。 这是减少 MTTx 指标的胜利。 然后,你可以使用从 Elastic 返回的文档和相同的搜索词向 ChatGPT 等生成式 AI 引擎提出问题,我们将在最后探讨该引擎,并且在本博客的其他用例中也进行了探讨。

在本博客的最后,你将得到一个如下所示的高级流程:

设置步骤

在接下来的几个步骤中,我将逐步介绍:

  • 在 Elastic Cloud 上获取帐户(必须是版本 8.8 及以上)并安装 Elastic Agent
  • 在此环境中设置 ESRE 并将日志连接到 ESRE
  • 使用 Kibana® 通过 ESRE 搜索日志
  • 使用 ChatGPT 快速创建可与 Elasticsearch 和 ESRE 配合使用的应用程序

第 0 步:在Elastic Cloud上创建帐户

在继续之前有一些注意事项:

1)确保在创建 Elastic Cloud 实例时单击 “Advanced Options”(如下所示)并为本博客添加至少 4GB RAM 的机器学习节点。

2) 当你按照以下说明操作时,请务必遵循 “Add System” 集成步骤。

牢记这些注意事项,按照说明开始使用 Elastic Cloud。

牢记这些注意事项,按照说明开始使用 Elastic Cloud。

第 1 步:安装 Elastic Learned Sparse Encoder 模型

这些步骤将部署 Elastic Learned Sparse Encoder 以与系统日志一起使用。 文档页面位于此处。中文指南可以在这里获得。

Elastic Learned Sparse Encoder 是由 Elastic 训练的检索模型,使你能够执行语义搜索以检索更相关的搜索结果。 此搜索类型为你提供基于上下文含义和用户意图的搜索结果,而不是精确的关键字匹配。

转到 Analytics -> Machine Learning:

点击 Model Management -> Trained Models:

选择 Elastic Learned Sparse EncodeR v1 并单击最右侧的下载按钮。

下载后,我们需要启动它。

就本博客而言,默认设置就可以了。

第 2 步:修改索引模板

接下来,我们需要向传入文档添加几个字段,以便 Elastic Learned Sparse Encoder 用于 tokens 和搜索。 我们可以通过更新我们想要使用模型的 log 类型的索引模板来做到这一点。

在本节中,我们将添加 token 字段和 text_field — 这两个字段都是与 Elastic Learned Sparse Encoder 模型一起使用所必需的。 运行推理时,模型将在 text_field 字段中查找日志消息。 然后,推理步骤会将日志消息文本转换为 token 权重对列表,该列表存储在 tokens 字段中 - 这就是我们需要这些映射的原因。

索引模板允许我们定义索引中文档的格式和映射,在本例中为 syslog 索引。

前往 “Stack Management”。

接下来,转到 Index Management -> Index Templates。 我们将修改 “syslog” 索引,如下所示:

单击索引名称,选择右下角的 “Manage”,然后选择 “Edit”。

跳至步骤 4:“Mappings”。

并添加以下映射:ml.tokens 和 text_field。

单击 Next 并保存。

第 3 步:添加自定义 ingest pipeline

接下来,我们将添加一个自定义摄取管道,以便 Elastic Learned Sparse Encoder 可以将 token 添加到发送到 Elastic 的文档中。 这是语义搜索所必需的 —— 请对此进行深入研究。 很酷的是我们可以在文档中看到 token,这让你直观地了解其工作原理。

管道步骤首先将日志消息复制到 text_field 字段中,因为这是模型查找所需数据的地方。 通过推理步骤,它会将日志消息文本转换为 token 权重对的列表,该列表存储在 ml.tokens 字段中。

请注意,如果你在此索引上的日志摄取非常繁忙,则推理将增加一点处理时间 - 如果你的负载非常重,这可能不是一个好主意,但对于我们这里的小型用例来说,这应该还好。

首先,前往 Ingest pipeline:

创建一个名为 “logs-system.syslog@custom” 的新摄取管道。 这是一个从主 syslog 摄取管道调用的特殊名称,并且存在于所有 “Managed” 管道中,因此你可以添加自定义摄取步骤。

现在让我们向该摄取管道添加两个处理器:

1)第一个处理器将使用日志消息字段设置 text_field,其中包含我们要使用 Set 处理器和 Copy from 操作搜索的日志数据,如下所示。

2)添加的第二个处理器是 “inference” 处理器,它将生成语义搜索所需的 token。 按以下方式进行设置。

字段映射:

{"text": "text_field"
}

Inference 配置:

{"text_expansion": {"results_field": "tokens"}
}

完成后,单击 “Create pipeline”。

第 4 步:滚动索引

要强制索引 rollover 并使用我们创建的新索引模板,请转到 Dev Tools 并执行以下 POST:

POST /logs-system.syslog-default/_rollover/

第 5 步:欢迎使用日志进行语义搜索

现在,转到发现并创建一个仅显示系统日志的新数据视图:

你可能需要稍等一下才能在此处填充一些数据。 一旦有数据,你应该会看到 ML Tokens 字段填充如下:

这就是 Elastic Sparse Learned Encoder 的魔力。你可以在此处看到的 token 增强了它如何能够理解日志行的语义,并使你能够找到与搜索参数具有相似含义的日志。

现在我们可以运行语义搜索。 将下面的语言框从 KQL 更改为 Lucene。

在搜索框中输入以下内容。 这里,文本扩展查询使用自然语言处理模型将查询文本转换为 token 权重对列表,然后将其用于针对我们上面定义的 rank features 字段的查询中。

{"text_expansion":{"ml.tokens":{"model_id":".elser_model_1","model_text":"Are there any TLS warnings?"}}}

恭喜! 你刚刚使用 Elastic 进行了语义搜索。

现在这里还有一件事要做:我们需要对结果进行排序,以便我们看到排名靠前的搜索结果。 添加 _score 字段,如下所示。

还有 “message” 字段。

现在我们可以按从高到低的顺序对其进行排序,这可以告诉我们什么是强匹配(类似于 Google 上搜索结果的排名方式):

现在让我们看看是否可以将其连接到 ChatGPT!

第 6 步:将其连接到 ChatGPT

现在让 ChatGPT 为我们编写一些代码。 我们询问 ChatGPT:

Can you write some code to query Elasticsearch and then send the documents that are returned to ChatGPT?

它编写了以下代码:

from elasticsearch import Elasticsearch
from openai import OpenAI, ChatCompletion# Initialize Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])# Search for documents in Elasticsearch
body = {"query": {"match_all": {}}
}res = es.search(index='your_index_name', body=body)# Initialize OpenAI
openai = OpenAI(api_key='your_openai_api_key')# Send documents to ChatGPT
for hit in res['hits']['hits']:message = {"role": "system","content": f"Document : {hit['_source']}"}# Generate response from ChatGPTresponse = openai.ChatCompletion.create(model="gpt-4.0-turbo",messages=[message])# Print the model's responseprint(response['choices'][0]['message']['content'])

现在这很容易修改,因此我们可以使用新的 Elasticsearch “Semantic query”,如下所示。

更改以下行:

# Search for documents in Elasticsearch
body = {"query": {"match_all": {}}
}

下面就到此为止。 请注意,这将确保我们只获得排名前三的结果,从而获得最相关的结果:

body = {"query": {"text_expansion": {"ml.tokens": {"model_id": ".elser_model_1","model_text": "Are there any TLS warnings?"}}},"size": 3,"sort": [{"_score": {"order": "desc"}}]
}

并更改这一行:

"content": f"Document : {hit['_source']}"

变成这样:

 "content": f”Are there any TLS warnings? Log line : {hit['_source']}"

这使我们能够将 Elasticsearch 结果包含在 ChatGPT 查询中,从而大大降低产生幻觉的可能性,并且更有可能为我们提供相关的诊断。 在这里查看最终结果。

ChatGPT responds:

The error message you're seeing seems to suggest that there might be an issue related to Transport Layer Security (TLS) certificates. The HTTP 404 error indicates that the requested resource cannot be found.

  • Incorrect or incomplete configuration: The error suggests that workload certificates may not be configured. If your service requires TLS certificates to communicate securely, but these have not been properly set up, this could cause the issue. You should review your configuration to make sure TLS is correctly set up
  • Wrong path: The system might not be able to find the certificates because they're not located at the specified path in your configuration. You need to ensure that the path to the certificate files is correct.
  • Permission issues: There could be issues with file or directory permissions that are preventing your system from accessing the certificate files. You should ensure that the relevant user or service has the necessary permissions to access these files.
  • Server or service is not available: The HTTP 404 error could indicate that the server or service you're trying to reach is not currently available or doesn't exist. You need to check if the server is running and that the endpoint is correct. Now if you didn’t want to do this yourself, I have created an application that does all of this over here, in this GitHub repository. When you run it, you get this nice graphical user interface:

因此,将所有内容连接起来后,我们解决方案的架构最终如下所示:

现在你已经了解了如何设置 Elastic Learned Sparse Encoder 模型,我向读者提出挑战,要求他们弄清楚他们还可以将该模型用于哪些其他用途,以及他们可以提出哪些日志记录用例。 你还可以扩展此示例以在 Elastic 中缓存和存储 ChatGPT 响应,就像此博客一样,使你能够启动知识库。 随着时间的推移,你可以用自己的知识来增强这一点。

SRE 开箱即用的卓越相关性

在本博客中,我们指导你完成设置用于日志分析的 Elastic Learned Sparse Encoder 的过程,并向我们的读者提出了探索该模型的新用途的挑战。 一个简单的示例可能涉及探测任何与 TLS 相关的问题,如本博客中所示。

随着 Elasticsearch 相关性引擎的推出,我们将独特的 Elastic 检索模型带到你的手中。 这种即用型模型可以轻松地与我们的全系列数据摄取方法集成,包括本博客中所示的摄取管道。 开箱即用,任何人都可以在其可搜索语料库中使用它,而且它足够紧凑,可以容纳在笔记本电脑内存的范围内。

Elastic 的学习稀疏编码器为搜索用例(包括日志)提供跨域语义搜索,如本博客所示,无需定制调整或培训即可提供高度相关的搜索结果。

现场测试一致表明,混合排名技术可产生最相关的搜索结果集。 然而,一个关键因素 —— RRF——一直不存在。 我们现在正在集成 RRF 来满足你的应用程序搜索需求,使你能够融合向量和文本搜索功能。

详细了解 Elasticsearch 和生成式 AI 的可能性。

在这篇博文中,我们可能使用了第三方生成式人工智能工具,这些工具由其各自所有者拥有和运营。 Elastic 对第三方工具没有任何控制权,我们对其内容、操作或使用不承担任何责任,也不对你使用此类工具可能产生的任何损失或损害负责。 使用人工智能工具处理个人、敏感或机密信息时请务必谨慎。 你提交的任何数据都可能用于人工智能培训或其他目的。 无法保证你提供的信息将得到安全或保密。 在使用之前,你应该熟悉任何生成式人工智能工具的隐私惯例和使用条款。

Elastic、Elasticsearch 和相关标志是 Elasticsearch N.V. 的商标、徽标或注册商标。 在美国和其他国家。 所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。

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

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

相关文章

Linux的服务器日志分析及性能调优

作为网络安全和数据传输的重要环节,代理服务器在现代互联网中扮演着至关重要的角色。然而,在高负载情况下,代理服务器可能面临性能瓶颈和效率问题。本文将介绍如何利用Linux系统对代理服务器进行日志分析,并提供一些实用技巧来优化…

原生js实现轮播图及无缝滚动

我这里主要说轮播图和无缝滚动的实现思路,就采用最简单的轮播图了,当然实现的思路有很多种,我这也只是其中一种。 简单轮播图的大概结构是这样的,中间是图片,二边是箭头可以用来切换图片,下面的小圆点也可以…

【大数据实训】基于Hive的北京市天气系统分析报告(二)

博主介绍:✌全网粉丝6W,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于大数据技术领域和毕业项目实战✌ 🍅文末获取项目联系🍅 目录 1. 引言 1.1 项目背景 1 1.2 项目意义 1 2.…

接口测试与功能测试的区别~

今天为大家分享的是我们在日常测试工作中, 一定会接触并且目前在企业中是主要测试内容的 功能测试与接口测试 一.功能测试与接口测试的基本概念。 1.1 什么是功能测试呢? 功能测试: 是黑盒测试的一方面, 检查实际软件的功能是否符合用户的需求 功能测试测试的内容包括以下…

SQL sever中用户管理

目录 一、用户管理常见方法 二、用户管理方法示例 2.1. 创建登录账户: 2.1.1 检查是否创建账户成功: 2.2. 创建数据库用户: 2.2.1检查用户是否创建成功: 2.3. 授予权限: 2.3.1授予 SELECT、INSERT 和 U…

Java作业3

1.下面代码的运行结果是(C) public static void main(String[] args){String s;System.out.println("s"s);}A.代码编程成功,并输出”s” B.代码编译成功,并输出”snull” C.由于String s没有初始化,代码不…

vue+elementui前端rules校验缓存问题

场景: 最近公司要求项目前端不要用element-ui,改为使用公司其他组开发的ui组件。 这个ui组件使用基本就是安装后,直接全局替换elementui的el-前缀为公司开发的xx-前缀。 替换之后,发现替换倒是很丝滑,问题不大。可以运…

基于Springcloud微服务框架 +VUE框架开发的智慧工地系统源码

建筑行业快速发展,各建筑工程的建设规模在不断扩大,各岗位工作人员的工作内容所涉及的方面也越来越广泛。随着信息技术水平不断提高,人工记录的方式已经不能够满足大项目的管理要求,就此,创造出一种新型的施工管理技术——智慧工地…

三步完成echers展示离线地图

1.首先要去阿里云提供的地图选择器网站选择你需要下载的地图矢量数据。链接 以湖北省为例: 2.复制上图中的JSON API,在浏览器输入json api链接,可以看到数据格式是很规整的json数据,在浏览器中右键保存为json格式数据&#xff0c…

时序预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM和BiLSTM时间序列预测

时序预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM和BiLSTM时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM和BiLSTM时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.Matlab实现QPSO-BiLSTM、PSO-BiLSTM和BiLSTM神经网络时间序列预测…

react 初级基础

react基本使用 项目创建 项目的创建命令 npx create-react-app react-basic创建一个基本元素进行渲染 // 1 导入react 和 react-dom import React from "react"; import ReactDOM from "react-dom";// 2 创建 react 元素 React提供了创建元素的api Rea…

scala基础

scala 基础 1. scala简介 scala是运行在 JVM 上的多范式编程语言,同时支持面向对象和面向函数编程早期scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘…

芯片开发之难如何破解?龙智诚邀您前往DR IP-SoC China 2023 Day

2023年9月6日(周三),龙智即将亮相D&R IP-SoC China 2023 Day,呈现集成了Perforce与Atlassian产品的芯片开发解决方案,助力企业更好、更快地进行芯片开发。 龙智资深顾问、技术支持部门负责人李培将带来主题演讲—…

Open3D(C++) 点云格网分块

目录 一、算法概述二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法概述 点云格网分块是点云二维格网化的一个具体应用案例,与Open3D (C++) 使用点云创建数字高程模型DEM类似,对每个格…

MySQL加密的几种常见方式

MySQL提供了多种加密方式来保护数据的安全性。下面是几种常见的MySQL加密方式: 密码加密: MySQL5.7及以上版本使用SHA-256算法对密码进行加密。这种加密方式更安全,可以防止密码泄露。 之前的MySQL版本使用SHA-1算法进行密码加密。这种加密方…

Java 面试 - Redis

Redis Redis 是基于键值对的非关系型数据库。Redis 拥有string、hash、list、set、zset等多种数据结构, redis具有惊人的读写性能, 其优秀的持久化机制是的它在断电和机械故障时也不会发生数据丢失, 可以用于热点数据存放, 还提供了键过期、发布订阅、食物、流水线、LUA脚本等多…

诗诺克科技引领数字资产智能交易革命

在当今全球金融市场中,数字资产的崛起正引发着一场前所未有的变革。随着区块链技术不断演进和数字资产广泛获得认可,智能交易系统正在迅速成为投资者和交易者的首选工具。这一趋势不仅在全球范围内显著,而且为金融领域的未来带来了令人瞩目的…

1.2 互联网概述

思维导图: 主要内容 : 这段话描述了“互联网”的基本概念和组成。首先,强调了该段文本主要是关于计算机网络的讨论,而不是关于电信网络或有线电视网络。 接下来,描述了计算机网络的基本构成,由结点&…

赞奇科技参与华为云828 B2B企业节,云工作站入选精选产品解决方案

8月27日,由华为云携手上万家伙伴共同发起的第二届 828 B2B 企业节拉开帷幕,围绕五大系列活动,为万千中小企业带来精细化商机对接。 聚焦行业数字化所需最优产品,举办超1000场供需对接会,遍及20多个省100多个城市&…

ACL 访问控制 过滤数据 维护网络安全(第七课)

一 ACL 简介 ACL是Access Control List(访问控制列表)的缩写,是一种用于控制文件、目录、网络设备等资源访问权限的方法。ACL可以对每个用户或用户组设置不同的访问权,即在访问控制清单中为每个用户或用户组指定允许或禁止访问该资源的权限。它通常由一系列规则组成,规则…