利用 Splunk 对人工智能数据基础设施进行 Spelunk 分析

news2024/11/25 18:45:36

概述

在企业数据方面,MinIO Enterprise Object Store 和 Splunk 有着共生关系。Splunk在其数字流处理器中使用MinIO。MinIO 是一个 Splunk SmartStore 端点。MinIO Enterprise Object Store 是一个高性能、兼容 Amazon S3 的分布式对象存储系统。通过遵循超大规模计算提供商的方法和设计理念,MinIO Enterprise 为私有云中的各种工作负载提供高性能和可扩展性。由于 MinIO Enterprise 专为仅服务对象而构建,因此单层架构可以毫不妥协地实现所有必要的功能。这种设计的优点是对象服务器既高性能又轻量级。在这篇文章中,我们将解释如何使用 Splunk 的高级日志分析来帮助理解 MinIO Enterprise 对象存储的性能和管理的数据。企业版的 MinIO 具有缓存功能,可以大大加快数据访问速度,这将帮助您快速检索频繁访问的数据。查看 AI 建立在对象存储上的真正原因,我们将深入探讨 MinIO 在 AI/ML 生态系统中的使用方式和原因。

MinIO 企业通知 101

MinIO Enterprise 允许管理员配置各种类型的通知,包括审计日志(提供有关集群内发生的任何 API 活动的详细信息,例如创建新存储桶、添加或删除对象、listBucket 调用等)和 MinIO Enterprise 服务器日志,它提供有关服务器上发生的错误的详细信息。在 MinIO Enterprise,我们相信简单性是可以扩展的,这一理念延伸到我们的日志记录。我们只记录严重错误。信息和警告级别日志记录只会使日志中充斥着白噪声,而白噪声很少(如果有的话)有帮助。鉴于这种方法,我们知道如果我们在 MinIO Enterprise 中看到错误,那就是需要解决的问题。Splunk可以帮助我们理解和优化MinIO Enterprise的性能。使用 Splunk 强大的日志分析工具,我们可以深入了解 MinIO Enterprise 集群中发生的情况,以及其中的数据发生的情况。

设置 Splunk HTTP 事件收集器

Splunk 允许将事件直接收集到 http(s) 端点,他们称之为 HEC,即 HTTP 事件收集器(在此处记录)

这需要几个简单的步骤。配置 HEC 全局设置,创建令牌,并配置您希望数据驻留在的索引。

在 Splunk Web UI 中,转到设置 -> 数据输入 -> HTTP 事件收集器

在“全局设置”下,将“所有令牌”设置为“已启用”,并将默认源类型更改为_json

其他设置可以默认保留。由于这是一个未启用 TLS 的测试环境,因此我们将在保存并继续之前取消选中“启用 SSL”框。

完成此操作后,单击“新建令牌”并按照向导进行操作。

在向导的下一页“输入设置”中,单击“创建新索引”

对于名称,请选择一个名称,例如 minio_audit。

将默认索引更改为您刚刚命名的索引,并确保它显示在右侧的“所选项目”框中,以确保您的事件转到新创建的索引。

点击查看并提交,您将看到新创建的令牌

复制此值以在下一步中使用。您可以稍后通过转到设置 -> 数据输入 -> HEC 来查看此令牌

Splunk 配置现已完成。我们可以使用 curl 测试并确保一切正常,然后再进入 MinIO Enterprise 方面。

curl http://localhost:8088/services/collector/raw -H "Authorization: Splunk 2d30fe74-f448-4fc4-9522-6679e5377658" -d '{"event": "hello world"}'

{"text":"Success","code":0}

请注意末尾的“成功”状态。现在我们可以通过搜索 index=“minio_audit” 来查看该事件。

现在我们知道我们使用了正确的令牌,并将数据发送到正确的索引。

配置 MinIO Enterprise 审计通知

在验证 HEC 端点是否已正确配置后,我们可以使用 mc 查看审计通知的现有配置。

首先,让我们看一下使用 mc 的所有可能配置。

有很多配置选项,但现在我们只关心audit_webhook。我们将使用它来告诉 MinIO Enterprise 将其事件发送到 Splunk。

首先,让我们看一下已经配置的内容:

mc admin config get myminio audit_webhook audit_webhook enable-off endpoint auth_token=

在这里,我们看到 audit_webhook 未启用,并且没有定义终结点或auth_token。现在让我们使用从 Splunk 获得的值来执行此操作。

mc admin config set myminio audit_webhook enable=on

endpoint=http://localhost:8088/services/collector/raw auth_token="Splunk

2d30fe74-f448-4fc4-9522-6679e5377658"


Setting new key has been successful.

Please restart your server with `mc admin service restart myminio`.

正如消息所述,我们需要重新启动 MinIO Enterprise 集群,这可以通过 mc 工具完成。当服务器重新启动时,我们可以验证设置是否正确。

mc admin config get myminio audit_webhook

audit_webhook

endpoint=http://localhost:8088/services/collector/raw auth_token="Splunk 2d30fe74-f448-4fc4-9522-6679e5377658"

到目前为止,一切看起来都是正确的。首先,让我们看一下设置中的存储桶。如果您尚未配置存储桶,则可以使用 mc mb myminio/mybucket 创建一个存储桶。在这里,我们有一个简单的测试设置:

mc ls myminio/

[2020-05-12 11:17:28 PDT]         OB testevents/

只是一个名为“testevents”的存储桶

现在,让我们将一个对象上传到该存储桶

touch mytestobject

mc cp mytestobject myminio/testevents

返回到 Splunk 搜索界面并搜索此对象,可以看到审计通知:

与任何审计日志记录一样,事情可能会变得非常健谈。我们可以通过在 Splunk Web UI 中使用此搜索来过滤掉大量噪音,从而去除所有典型的日常内容:

现在,我们已经过滤掉了管理员可能一直在执行的所有日常操作,例如列出存储桶。现在,这将向我们展示我们可能最关心的事情,例如正在创建或删除的对象或存储桶。让我们进一步研究日志。

以这个例子为例,当我使用搜索词 index=“minio_audit” AND statuscode NOT 200 时可以看到:

这是一个与典型的 PutBucket 略有不同的事件。从此事件的 api: name 字段中,我们知道有人正在尝试创建新的存储桶。当我们查看状态时,我们会看到 Conflict 和 statusCode: 409。这意味着有人尝试创建存储桶,但它已经存在。也许有人不小心重新运行了脚本或命令来尝试创建该存储桶。本身并不一定是什么大不了的。但是,如果我在一天内看到数千个这样的代码,我可能在某个地方运行了一些低效的代码,我可以使用这些信息来进一步调查。

我们可以深入研究其他一些有趣的领域。

deploymentid - 如果我正在运行多个 MinIO Enterprise 集群,我可以使用它来深入到特定集群

服务器 - 查找为请求运行的 MinIO Enterprise 服务器的版本。

TTFB/TTFR - 可用于查找请求花费的时间何时超过预期。

请注意,即使是响应标头也会被记录下来,因此您可以判断是否存在附加到对象的自定义元数据。

配置 MinIO Enterprise Logger 通知

了解用户和应用程序在集群中执行的操作非常重要。但是,如果知道集群本身发生了什么呢?为此,我们可以将 Splunk 配置为 MinIO Enterprise logger_webhook的端点。如果您还记得我们之前的 mc admin config get myminio 输出,还有一个名为 logger_webhook 的字段,用于将 MinIO Enterprise 服务器日志发送到端点。首先,我们看一下配置的内容:

mc admin config get myminio logger_webhook Logger_webhook enable-off endpoint= auth_token=

现在,我们将配置设置为与 audit_webhook 相同的配置。尽管您可以使用相同的 HEC 令牌和索引,但您可能希望通过创建新的 HEC 令牌和索引来将数据放入其中,从而将它们分开。我更喜欢这种方法,因此您会注意到令牌发生了变化,但命令的其余部分保持不变。由于我创建了一个新索引,因此对这些日志事件的搜索将针对 index=“minio_logs”。

之后不要忘记重新启动以使配置生效。

请记住,从以前开始,MinIO Enterprise 不会记录任何不需要操作的内容,因此我们需要尝试创建某种故障才能看到某些事情发生。首先,让我们看一下我们如何运行此测试的服务器。我用来启动服务器的命令如下:

minio server /tmp/splunk/{1...4}

这模拟了服务器的多磁盘设置,这意味着擦除代码和 bitrot 保护已打开。默认情况下,MinIO Enterprise 纠删码可以处理 n/2 个磁盘丢失,并且仍然可以读取数据。如果我们看一下后端文件系统,我们会看到类似这样的事情:

简而言之,有四个文件夹(“磁盘”),每个文件夹都包含我们之前上传的 mytestobject 的一定数量的数据或奇偶校验。让我们从“删除”其中两个“磁盘”开始(请记住,在此测试环境中,这些不是真正的磁盘,只是文件夹路径,但删除它们模拟将磁盘从正在运行的服务器中拉出)。

rm -rf /tmp/splunk/{1..2}

现在我们的树命令显示情况很糟糕。

我们设置中的一半“磁盘”是空的。让我们看看 Splunk 中记录了什么。

MinIO Enterprise 报告说,它看到一些空磁盘,并显示字段消息:找到未格式化的磁盘。在典型的生产设置中,丢失几个磁盘(甚至几台服务器)并不是什么大问题,因为 MinIO Enterprise 是为处理大规模故障而构建的。但是,在我们微小的测试设置中,我们已经丢失了一半的磁盘,如果我们丢失了更多磁盘,我们将无法访问数据。现在我们知道我们在寻找什么,我们可以配置 Splunk 以直观地调用此类事件。在“设置”->“事件类型”(在“知识”标题下)中,创建新的事件类型。对于我们的测试,我们将像这样设置它:

现在,当我们在minio_logs索引中浏览事件时,我们将看到一个巨大的红色横幅,让我们知道我们配置的未格式化磁盘事件在这里,需要注意。在大规模部署中,MinIO Enterprise 将通过启动修复过程自动纠正这种情况。在大规模部署中我可以等待,但在这里我不想冒这个险,所以我会在 MinIO Enterprise 服务器上手动启动递归修复。

现在修复已经完成,我们验证后端数据是否完好无损。

一切都恢复了正常,我们可以继续我们的一天。

结论

Splunk在企业中越来越普遍。随着机器数据的增加,他们的部署激增,目前他们有成千上万的客户。一种是将 MinIO Enterprise 用作 SmartStore 端点 - 降低 Splunk 成本,同时实现额外的规模 - 所有这些都不会牺牲性能。另一种方法是利用 Splunk 行业领先的日志分析功能来优化 MinIO Enterprise 部署的性能。两者都提供了充分利用数据的能力 - 通过保护数据、从数据中学习并从中提取价值。自己试一试。如果您需要一些帮助,请查看我们的文档。

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

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

相关文章

免费【2024】springboot 个人用户博客系统设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

STM32学习笔记11-PWR电源控制

目录 PWR简介 电源框图 上电复位和掉电复位 可编程电压监测器 低功耗模式 模式选择 睡眠模式 停止模式 待机模式 低功耗模式应用 睡眠模式 停止模式 待机模式 PWR简介 PWR(Power Control)电源控制PWR负责管理STM32内部的电源供电部分&#…

Unity新输入系统结构概览

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 在学习新输入系统之前,我们需要对其构成有个印象 1.输入动作(Inputaction) 是定义输…

队列---学生信息输入输出

作业:链栈,自己实现一遍,但是节点存储不是整数,存储学生信息(年龄,分数,姓名)三级引用。 1、建立学生信息结构体,将data改为学生信息结构体类型。 2、循环入栈和入队。…

RPC 和 HTTP 理解

网上充斥着各类类似于这样的文章:rpc 比 http 快了多少倍?既然有了 http,为什么还要用 rpc 调用等等。遇到这类文章,说明对 http 和 rpc 是由理解误区的。 这里再次重复强调一遍,通信协议不是 rpc 最重要的部分&#x…

KubeSphere 部署 Kafka 集群实战指南

本文档将详细阐述如何利用 Helm 这一强大的工具,快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群。 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库…

命令行参数环境变量

目录 前言: 命令行参数: 现象: 这些参数的意义: 为什么要这么做? 这些事是谁做的呢? 环境变量 现象: 创建环境变量: 结合程序理解: 前言: 我们在前…

R语言里认识机器学习

下面内容摘录自: 1章2节:关于人工智能、机器学习、统计学连和机器学习、R 与 ChatGPT 的探究-CSDN博客文章浏览阅读1k次。在现代科技发展的浪潮中,人工智能(AI)、机器学习(ML)、统计学、R 编程…

网络通信(TCP/UDP协议 三次握手四次挥手 )

三、TCP协议与UDP协议 1、TCP/IP、TCP、 UDP是什么 TCP/IP协议是一个协议簇,里面包括很多协议的, UDP只是其中的一个, 之所以命名为TCP/IP协议, 因为TCP、 IP协议是两个很重要的协议,就用他两命名了,而TCP…

告别知云单一选择,这些文献翻译工具同样值得信赖!

在翻译领域,知云文献翻译以其专业度和便捷性赢得了众多用户的青睐,但市场上还有许多其他翻译工具同样值得关注。本文将为您推荐几款优秀的翻译工具。 Foxit在线翻译 链接: https://fanyi.pdf365.cn/ Foxit在线翻译以其高效的翻译速度和准…

创建第一个Qt项目

创建第一个QT项目 创建工程名称一般不要有特殊符号,不要有中文 项目工程保存路径可修改,路径不要带中文 Base class中的三个选项 QMainWindow:主窗口类,包括菜单栏、工具栏、状态栏。 QWidget:可以创建一个空白的窗口,是所有界…

嵌入式软件--数据结构与算法 DAY 13

在嵌入式中,对算法的要求不高,但顺序查找和冒泡排序是经典算法,必须掌握。 1.算法定义 算法是一个用于解决特定问题的有限指令序列(计算机可以执行的操作)。通俗的理解就是可以解决特定问题的方法。 2.时间复杂度 …

手动和torch.nn实现卷积神经网络、空洞卷积、残差网络

一、数据集 1. 分类问题 数据集——车辆分类数据 ⚫输入图片,输出对应的类别 ⚫共1358张车辆图片 ⚫分别属于汽车、客车和货车三类 ⚫汽车:779张 ⚫客车:218张 ⚫货车:360张 ⚫每个类别随机取20-30%当作测试集 ⚫各图片的大小不一,需要将图片拉伸到相同大小 汽车 …

three.js 安装方法、基础简介、创建基础场景

threejs简介 Three.js是一个基于JavaScript编写的开源3D图形库,‌利用WebGL技术在网页上渲染3D图形。‌ 它提供了许多高级功能,‌如几何体、‌纹理、‌光照、‌阴影等,‌使得开发者能够快速创建复杂且逼真的3D场景。‌ threejs提供了丰富的功…

云原生日志Loki

1. Loki简介 1.1 Loki介绍 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签…

关于Vue项目npm快捷键,点击run启动报错,及npm i也报错的解决办法

1.配置idea的npm 2.点击运行按钮 3.结果 分析原因及问题: npm i npm run dev 由于是刚刚从gitlab新拉的前端代码,可能没有用命令install过类似于没有编译过,所以执行一下上面的命令 结果报错如下: F:\tbyf\qjyy\hip-manager-ui&…

SpringBoot整合MyBatis-Plus完整详细版(提供Gitee源码)

前言:本篇文章完整详细介绍了SpringBoot整合MyBatis-Plus的完整过程,这边我的SpringBoot版本是2.4版本、JDK1.8和Maven3.8.1版本,跟着文章一步步走就可以了,MyBatis-Plus整合非常方便,也是现在企业开发中经常会用的一个…

学习笔记第二十四天

1.exec族函数的区别 int exec l(const char *path, const char *arg, ...); int exec l p(const char *file, const char *arg, ...); int exec l e(const char *path, const char *arg,..., char * const envp[]); int exec v(const char *path, char *const argv[]); …

1011 World Cup Betting

题目 解释 题目讲的就是,给你三行数,每一行包含3个浮点小数,让你找到最大的那个小数,然后如果最后的小数是第一个,输出W,是第二个,输出T,是第三个,输出L,最后…

Day37 | 188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

语言 Java 188.买卖股票的最佳时机IV 买卖股票的最佳时机IV 题目 给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多…