使用Splunk监视MinIO-教程

使用Splunk监视MinIO-教程


总览

在企业数据方面,MinIO和Splunk具有共生关系。Splunk在其数字流处理器中使用MinIO。MinIO是Splunk SmartStore端点。

在本文中,我们将说明如何使用Splunk的高级日志分析功能来帮助了解MinIO对象存储套件的性能以及所管理的数据。为我们和/或Splunk的新手快速设定水平。

MinIO是与Amazon S3兼容的高性能分布式对象存储系统。通过遵循超大规模计算提供商的方法和设计理念,MinIO可为私有云中的各种工作负载提供高性能和可伸缩性。由于MinIO是专门为仅服务对象而构建的,因此单层体系结构可实现所有必需的功能而不会受到影响。这种设计的优势是同时具有高性能和轻量级的对象服务器。

Splunk是用于企业计算环境的高性能事件处理平台,可提供关键和及时的IT运营洞察力,包括来自IoT,防火墙,Web服务器等的数据。Splunk最近推出了一项名为SmartStore的功能,该功能使Splunk可以将PB级的数据卸载到与Amazon S3兼容的外部对象存储中。分解计算和存储可以使Splunk节点腾出精力来进行索引和搜索,而对象存储可以腾出时间来专注于数据的管理,弹性和安全性。虽然这篇文章的重点是使用Splunk管理通知和MinIO登录-您可以在此处查看我们详细的SmartStore帖子

MinIO通知101

MinIO允许管理员配置各种类型的通知,包括审核日志(该日志提供有关集群内发生的任何API活动的详细信息,例如创建新存储桶,添加或删除对象,listBucket调用等)和MinIO服务器日志,提供有关服务器上发生的错误的详细信息。  

在MinIO,我们相信简单性可以扩展,并且这种理念可以扩展到我们的日志记录中。我们仅记录严重错误。信息和警告级别的日志记录只会在日志中充满白噪声,如果有帮助的话,这种噪声很少。使用这种方法,我们知道是否在MinIO中看到错误,这是需要解决的问题。

Splunk可以帮助我们了解和优化MinIO的性能。使用Splunk强大的日志分析工具,我们可以洞悉MinIO集群中正在发生的事情以及其中存在的数据所发生的事情。

设置MinIO

在此演示中,我们将需要运行MinIO服务器(或群集),并使用MinIO客户端(mc)对该服务器执行管理操作。要配置MinIO服务器,请参阅快速入门指南。

https://docs.min.io/docs/minio-quickstart-guide.html

有关设置mc,请参见mc quickstart guide

https://docs.min.io/docs/minio-client-quickstart-guide.html

设置Splunk HTTP事件收集器

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

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

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

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


1_splunk_HEC_global_settings.png


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

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



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


image-14.png


对于名称,请选择诸如minio_audit之类的名称。

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


image-15.png


点击查看并提交

您将看到新创建的令牌


image-16.png


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

Splunk配置现已完成。在进入事物的MinIO端之前,我们可以使用curl进行测试并确保其工作正常。


image (8).png


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


image-17.png


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

配置MinIO审核通知

确认正确配置了HEC端点后,我们可以使用mc查看我们的审核通知的现有配置。

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


image-1 (2).png


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

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


image-2.png


在这里我们看到audit_webhook未启用,并且没有端点或auth_token未定义。现在,使用来自Splunk的值进行操作。


image-3 (2).png


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


image-4 (2).png


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


image-5 (2).png


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

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


image-6 (2).png


返回Splunk搜索界面并搜索该对象,向我们显示了审核通知:


image-18.png


与任何审核日志记录一样,事情可能会变得很混乱。通过在Splunk Web UI中使用以下搜索,我们可以滤除所有典型的日常工作,从而过滤掉很多噪音:


image-19.png


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

举这个例子,当我使用搜索词index =“ minio_audit”且状态码不是200时看到:


image-20.png


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

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

deploymentid  -如果我正在运行多个minio集群,则可以使用它向下钻取到特定集群

Server -查找为请求运行的minio服务器的版本。

TTFB/TTFR  -可用于查找请求花费比预期更长的时间。

请注意,甚至记录了响应头,因此您可以例如判断是否存在附加到对象的自定义元数据。

配置MinIO Logger通知

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


image-7 (1).png


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

不要忘记稍后重启以使配置生效。

记住从前,MinIO不会记录不需要采取任何措施的任何内容,因此我们将需要尝试创建某种类型的故障才能看到发生的事情。首先,让我们看一下如何运行该测试的服务器。我用来启动服务器的命令如下:

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

这模拟了为服务器设置多磁盘的情况,这意味着擦除代码和位保护已打开。默认情况下,MinIO擦除编码可以处理n / 2个丢失的磁盘,并且仍然具有对数据的读取权限。

如果我们看一下后端文件系统,我们会看到类似以下的内容:


image-8 (1).png


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

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

现在,我们的树命令显示情况不佳。


image-9 (1).png


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


image-21.png


MinIO报告它在字段中看到一些空磁盘message: unformatted disk found在典型的生产设置中,丢失几块磁盘(甚至几台服务器)并不是什么大问题,因为MinIO可以处理大规模故障。但是,在很小的测试设置中,我们丢失了一半的磁盘,如果丢失了更多的磁盘,则将无法访问数据。现在我们知道了要查找的内容,我们可以配置Splunk以可视方式调用此类事件。在设置->事件类型中(在“知识”标题下),创建一个新事件类型。对于我们的测试,我们将其设置如下:


image-22.png


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


image-10 (1).png


现在修复已完成,我们验证后端数据是否完整。


image-11 (1).png


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

结论

Splunk在企业中越来越普遍。随着机器数据的兴起,它们的部署激增,此时有成千上万的客户。鉴于MinIO的增长轨迹类似,两种软件解决方案很可能在企业中共存。这创造了机会。

一种是将MinIO用作SmartStore终结点-在降低Splunk成本的同时实现更多扩展-所有这些都不会牺牲性能。另一个是利用Splunk业界领先的日志分析功能来优化MinIO部署的性能。

两者都具有充分利用您的数据的能力-通过保护数据,从中学习并从中提取价值。自己尝试一下。如果您需要帮助,请查看我们的文档您也可以查看我们的公共Slack频道


上一篇 下一篇