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