使用 Splunk 探索您的 AI 数据基础设施

概述
MinIO 企业版对象存储 和 Splunk 在企业数据方面有着共生关系。Splunk 在其数字流处理器中使用 MinIO。MinIO 是 Splunk SmartStore 端点。
MinIO 企业版对象存储是一个 高性能, 兼容 Amazon S3, 分布式对象存储系统。通过遵循超大规模计算提供商的方法和设计理念,MinIO 企业版为私有云中的各种工作负载提供高性能和可扩展性。由于 MinIO 企业版专为仅服务对象而构建,因此单层架构在不影响性能的情况下实现了所有必要的功能。这种设计的优势在于对象服务器既具有高性能又轻量级。
在这篇文章中,我们将解释如何使用 Splunk 的高级日志分析来帮助了解 MinIO 企业版对象存储的性能以及所管理的数据。MinIO 企业版具有缓存功能,可以极大地加快数据访问速度,帮助您快速检索经常访问的数据。请查看 AI 建立在对象存储上的真正原因,我们深入探讨了 MinIO 如何以及为什么在 AI/ML 生态系统中使用。
MinIO 企业版通知 101
MinIO 企业版允许管理员配置各种类型的通知,包括审计日志(提供有关集群内发生的任何 API 活动的详细信息,例如创建新的存储桶、添加或删除对象、listBucket 调用等)和 MinIO 企业版服务器日志,提供有关服务器上发生的错误的详细信息。
在 MinIO 企业版,我们相信简单性可以扩展,这一理念也扩展到我们的日志记录。我们只记录严重错误。信息和警告级别的日志记录只会用很少有用(如果有的话)的白噪声淹没日志。鉴于这种方法,我们知道,如果我们在 MinIO 企业版中看到错误,则需要解决该错误。
Splunk 可以帮助我们了解和优化 MinIO 企业版的性能。使用 Splunk 强大的日志分析工具,我们可以深入了解 MinIO 企业版集群内发生的事情,以及存储在其中的数据发生了什么。
设置 Splunk HTTP 事件收集器
Splunk 允许将事件直接收集到 http(s) 端点,他们称之为 HEC,即 HTTP 事件收集器(文档 在此)
这需要几个简单的步骤。配置 HEC 全局设置,创建一个令牌,并配置您希望数据驻留的索引。
从 Splunk Web UI 中,转到设置 -> 数据输入 -> HTTP 事件收集器
在全局设置下,将所有令牌设置为“已启用”,并将默认源类型更改为 _json
其他设置可以保留默认值。由于这是一个没有启用 TLS 的测试环境,因此在保存和继续之前,我们将取消选中“启用 SSL”框。
完成后,单击“新建令牌”,然后按照向导进行操作。
在向导的下一页“输入设置”中,单击“创建新的索引”。
对于名称,选择一个名称,例如 minio_audit。
将默认索引更改为您刚命名的索引,并确保它出现在右侧的“已选择项目”框中,以确保您的事件进入新创建的索引。
单击“查看并提交”。
您将看到新创建的令牌。
将此值复制以用于下一步。您稍后可以通过转到设置 -> 数据输入 -> HEC 来查看此令牌。
Splunk 配置现已完成。我们可以在继续进行 MinIO 企业版方面之前,使用 curl 进行测试,并确保一切正常。
curl http://localhost:8088/services/collector/raw -H "Authorization: Splunk 2d30fe74-f448-4fc4-9522-6679e5377658" -d '{"event": "hello world"}'
{"text":"Success","code":0}
请注意最后面的“Success”状态。现在,我们可以通过搜索 index="minio_audit" 来查看该事件。
现在我们知道我们正在使用正确的令牌,并将数据发送到正确的索引。
配置 MinIO 企业版审计通知
验证 HEC 端点配置正确后,我们可以使用 mc 查看审计通知的现有配置。
首先,让我们使用 mc 查看所有可能的配置。
有很多配置选项,但现在我们只关心 audit_webhook。我们将使用它来告诉 MinIO 企业版将其事件发送到 Splunk。
首先,让我们看一下已经配置了什么。
在这里,我们看到 audit_webhook 未启用,并且没有定义端点或 auth_token。现在让我们使用从 Splunk 获取的值来进行定义。
如消息所示,我们需要重新启动 MinIO 企业版集群,这可以通过 mc 工具完成。当服务器恢复后,我们可以验证设置是否生效。
到目前为止,一切看起来都很正确。首先,让我们看一下我们设置中的存储桶。如果您尚未配置存储桶,可以使用 mc mb myminio/mybucket 创建一个存储桶。在这里,我们有一个简单的测试设置。
只有一个名为“testevents”的存储桶。
现在,让我们将一个对象上传到该存储桶。
返回到 Splunk 搜索界面,搜索此对象,将显示审计通知。
与任何审计日志记录一样,日志可能非常繁杂。我们可以使用 Splunk Web UI 中的以下搜索过滤掉很多噪音,以剔除所有典型的日常事务。
现在,我们已经过滤掉了管理员可能执行的所有日常操作,例如列出存储桶。现在,这将显示我们可能最关心的内容,例如对象或存储桶的创建或删除。让我们进一步调查日志。
以这个例子为例,当使用搜索词 index="minio_audit" AND statuscode NOT 200 时可以看到。
此事件与典型的 PutBucket 事件略有不同。从此事件的 api: name 字段中,我们知道有人尝试创建新的存储桶。当我们查看状态时,我们看到 Conflict 和 statusCode: 409。这意味着有人尝试创建存储桶,但该存储桶已存在。也许有人不小心重新运行了脚本或命令来尝试创建该存储桶。本身并不一定是什么大事。但如果我在一天中看到数千个这样的事件,我可能在某个地方运行了效率低下的代码,我可以使用这些信息进一步调查。
我们可以深入研究一些其他有趣的字段。
deploymentid - 如果我运行多个 MinIO 企业版集群,我可以使用它来深入了解特定集群。
Server - 查找为请求运行的 MinIO 企业版服务器版本。
TTFB/TTFR - 可用于查找何时请求花费的时间超过预期。
请注意,甚至响应标头也被记录,因此您例如可以确定您附加到对象的自定义元数据是否存在。
配置 MinIO 企业版记录器通知
了解用户和应用程序在集群中执行的操作很重要。但是,如何了解集群本身发生了什么?为此,我们可以将 Splunk 配置为 MinIO 企业版 logger_webhook 的端点。如果您还记得我们之前使用的 mc admin config get myminio 输出,还有一个名为 logger_webhook 的字段,它将 MinIO 企业版服务器日志发送到端点。首先,我们看一下配置了什么。
现在,我们与 audit_webhook 一样设置配置。虽然您可以使用相同的 HEC 令牌和索引,但您可能希望通过创建新的 HEC 令牌和索引来将它们分开,并将数据放入其中。我更喜欢这种方法,因此您会注意到令牌发生了变化,但其他命令保持不变。由于我创建了一个新的索引,因此对这些日志事件的搜索将针对 index="minio_logs" 进行。
请不要忘记在配置生效后重新启动。
还记得之前,MinIO Enterprise 不会记录任何不需要采取行动的信息,所以我们需要尝试创建某种故障才能看到一些事情发生。首先,让我们看一下如何运行用于此测试的服务器。我用来启动服务器的命令如下:
minio server /tmp/splunk/{1...4}
这模拟了为服务器设置多磁盘,这意味着启用了擦除码和位腐蚀保护。默认情况下,MinIO Enterprise 擦除编码可以处理丢失 n/2 个磁盘,仍然可以读取数据。
如果我们看一下后端文件系统,我们会看到类似这样的东西:
简而言之,有四个文件夹(“磁盘”),每个文件夹包含我们之前上传的 mytestobject 的部分数据或奇偶校验。让我们从“移除”两个“磁盘”开始(请记住,在这个测试环境中,这些不是真正的磁盘,只是文件夹路径,但移除它们模拟了从运行的服务器中取出磁盘)。
rm -rf /tmp/splunk/{1..2}
现在我们的树命令显示情况不妙。
我们设置中的一半“磁盘”是空的。让我们看看 Splunk 中记录了什么。
MinIO Enterprise 报告它看到了一些空磁盘,字段消息为:发现未格式化的磁盘。在典型的生产环境中,丢失几个磁盘(甚至几个服务器)不是什么大问题,因为 MinIO Enterprise 是为处理大规模故障而构建的。但是,在我们这个小型的测试环境中,我们丢失了一半的磁盘,如果再丢失任何磁盘,我们将无法访问数据。现在我们知道要找什么了,我们可以配置 Splunk 来直观地调用此类事件。在“设置”->“事件类型”(在“知识”标题下),创建一个新的事件类型。对于我们的测试,我们将这样设置:
现在,当我们在 minio_logs 索引中浏览事件时,我们会看到一个巨大的红色横幅,提醒我们我们配置的未格式化磁盘事件就在这里,需要关注。在大规模部署中,MinIO Enterprise 将通过启动修复过程来自动纠正这种情况。在大规模部署中,我可以等待,但在这里我不想冒险,所以我会手动在 MinIO Enterprise 服务器上启动递归修复。
修复完成后,我们验证后端数据是否完好无损。
一切都恢复正常,我们可以继续我们的工作。
结论
Splunk 在企业中越来越普遍。随着机器数据的兴起,Splunk 的部署激增,他们目前拥有数万名客户。一个是用 MinIO Enterprise 作为 SmartStore 端点 - 降低 Splunk 成本,同时实现额外的扩展 - 所有这些都不会牺牲性能。另一个是利用 Splunk 行业领先的日志分析功能来优化 MinIO Enterprise 部署的性能。
两者都提供了充分利用数据的能力 - 通过保护数据、从数据中学习以及从数据中提取价值。自己试试吧。如果你需要帮助,请查看我们的 文档。您也可以查看我们的 公共 Slack 频道,并通过 hello@min.io 联系我们。