我正在寻找穷人的监控解决方案。我有一个 Hyper-V 2008 R2 环境,在这个环境中,非高峰时段的电力波动很常见。电池可以使盒子保持相当长的时间。我正在研究一种解决方案,让电池向盒子发出关机命令以获得最佳解决方案,但我想获得一个简单的监控解决方案来监控虚拟机的状态。
本质上是这样的:
- 停电。
- 电力最终恢复。
- 服务器自动重启(电源恢复时)。
- 虚拟机应重新启动(根据 Hyper-V 中的设置从关闭或保存)。
- Task Scheduler 大约每小时运行一次任务,并检查未启动的虚拟机。
- 如果机器没有启动,它会发送一条消息,首选 SMTP 来提醒某人检查它。
我不确定如何最好地完成 VM 的检查。我是否发出具有返回码的 CLI 或 PS 脚本,然后任务调度程序可以做出决定或使用其他方法?
我希望使用内置的 Windows 工具,因为这似乎是可以实现的。如果不是很好,替代品也很棒。是的,我想要一种免费的方式来做到这一点。不想在这里花任何钱,也不想为这个看似很小的问题实施像 Nagios 这样的大型工具。
如果我疯了也没关系!
我会在 Powershell 中完成所有操作。我前一段时间写了一个脚本来做一些穷人的负载平衡。它调用一些 CLI 代码来返回 VM 的状态并采取相应的行动。
您将执行相同的操作:让 Powershell 调用 CLI 语句(使用 getstate)来获取各种来宾 VM 的状态。如果其中任何一个出现故障,请发送 SMTP 电子邮件或使用 CLI 启动虚拟机或其他任何东西。
在您选择的任何时间间隔按计划任务启动 Powershell。应该像魅力一样工作。
似乎在以前版本的 Windows Server(2012 年之前)中没有包含 PowerShell 模块来管理 Hyper-V。您可以使用其他一些模块,例如故障转移群集等,但您必须使用 WMI 脚本来更改管理程序。
在 2012 年,这个问题就这么简单:
PS C:\> Get-VM –ComputerName Server1 | Where-Object {$_.State –eq 'Running'}
但是,似乎有一个开源库可以抽象化 WMI 脚本并将所有内容都留在 PowerShell 中。今晚我会看一下这个模块,看看我是否能让它做我想做的事。
感谢 Bob 至少为我指明了正确的方向。