原文:http://www.virtuallyghetto.com/2014/04/how-to-automatically-monitor-vsan-component-threshold-using-a-vcenter-alarm.html
上周,一篇很有意思的 VMware 知识库文章(由Ron Oglesby分享)引起了我的注意。
本周早些时候,我注意到 Ron 热衷于寻找各种不同接口中的当前 VSAN 组件数:RVC(vSphere Ruby控制台),在 Windows和 Linux 上或通过 vSphere API 均可使用。最近,我甚至还使用 vSphere API 创建了一些脚本(请参见此处和此处 ),来远程查询每个 ESXi 主机的 VSAN 组件数。我非常喜欢这种从管理角度出发、无须登录每单个 ESXi 主机的做法。
阅读了VMware 知识库文章 2071379 之后,我明白了 Ron 提出问题的原因,因为我也感觉此知识库文章是不完整的。当然,对于不具有怀疑眼光的人来说,这个问题可能不明显,因为此知识库文章确实回答了一些问题,但它并没有切实深入到任何对客户有用的详细细节。这篇文章提到,当达到某特定主机 VSAN 组件数阈值的 80% 时,VSAN 能够触发警报。但没有说明此警报是如何以及在哪里触发的细节。首先,这里所提到的警报是针对 vCenter Server 的。其次,这是通过使用文章中提到的 VOB(VMkernel 监控)ID 实现的。实际上,您可以基于这些 ESXi 主机生成的 VOB 来创建 vCenter 警报。关于这一内容,我曾在几篇文章中阐述过,如关于为您的 EXSi 主机检测重复 IP 地址的文章。创建此类 vCenter 警报的过程相当简单,而且我认同应默认创建这个警报(我会给工程团队提出相关内部建议)。
以下是创建vCenter Server 警报的步骤,以便在达到 80% VSAN 组件数阈值时发出通知:
第 1 步- 创建新的 vCenter Server 警报并命名,然后为主机选择“Monitor specific event…(监控特定事件…)”,并确保已启用。
第 2 步�C 为“事件”添加esx.problem.vob.vsan.lsom.componentthreshold
第 3 步�C 可将操作保留为空,这样将仅生成一个常规 vSphere 警报,或者也可指定一个操作。
创建完 vCenter 警报之后,我们可能需要检测其是否能在嵌套 ESXi VSAN 环境 或实际 VSAN 环境中正常运行。下一问题是我们怎样创建 2400 个 VSAN 组件?无需费时费力地手动创建 2400 个虚拟机,我们可以利用 ESXi Shell 中一个小巧的工具轻松完成,名为/usr/lib/vmware/osfs/bin/objtool
免责声明:本文所用工具和脚本主要用于教育和参考目的。以下命令将创建一个名为object-1、大小为 1KB 的对象,使用 VSAN 策略 hostFailuresToTolerate=0 & forceProvisioning=1:
/usr/lib/vmware/osfs/bin/objtoolcreate -s 1KB -a 3 -n object-1 -p “((\”hostFailuresToTolerate\” i0)(\”forceProvisioning\” i1))”
对于此特定测试,我们只想快速创建 2400 个 VSAN 组件。为此,您需要大约 32GB 内存以达到所支持 VSAN 组件的最大量。对于“真实”的 VSAN 环境来说,这个要求不成问题,但是,对于我的嵌套 ESXi 环境来说,我必须为此测试增加资源配置。因为 VSAN 是分布式对象存储,所以创建的对象将随机存储在 VSAN 群集中。为了迅速达到 2400 个组件,我还把 3 个 ESXi 主机中的 2 个设为“维护模式”,以确保所有对象都创建在第一个 ESXi 主机中。
最后,为了辅助自动创建 VSAN 对象,我编写了可在 ESXi Shell 中运行的快速脚本
创建的每个对象都将有一个关联的 UUID,后者将保存在临时文件 /tmp/uuid 中,在确认vCenter 警报有效之后,可使用下列脚本来删除对象。
达到 2400 VSAN 组件数后,您就可以看到,之前创建的警报因达到 80% 阈值而触发。
欢迎在微博上关注我,这样在我发布博客文章后您就会收到通知,并可以让您了解更多有关 VMware 存储的信息:@VMware中国
――――――――――――――――――――――――――――――――――――――――――――
作者:William Lam
现任 VMwareR&D 主管工程师,隶属 SDDC 新兴解决方案团队的一员。目前,他在 VMware 公司从事原型设计,构建新解决方案并将其推向市场。他的工作主要侧重于从 API 和 SDK 这两个角度进行软件定义的数据中心 (SDDC) 自动化以及 SDDC 通用集成和操作。他还与 VMware 内部的多个工程团队紧密合作,帮助提供设计和架构方面的前期反馈。最后,通过客户互动和反馈,他不断应对客户的挑战、坚持满足客户的需求,从而更好地改进 VMware 产品。