任务计划程序和虚拟机监控

任务计划程序和虚拟机监控

我正在寻找适合穷人的监控解决方案。我有一个 Hyper-V 2008 R2 环境,其中非高峰时段的电力波动非常常见。电池可以让盒子运行相当长的时间。我正在研究一种解决方案,让电池向盒子发出关机命令,以获得最佳解决方案,但我想获得一个简单的监控解决方案来监控虚拟机的状态。

本质上是这样的:

  1. 電源斷電。
  2. 电力最终恢复。
  3. 服务器自动重启(电源恢复)。
  4. 虚拟机应该重新启动(从关闭状态或根据 Hyper-V 中的设置保存)。
  5. 任务计划程序每小时左右运行一次任务并检查未启动的虚拟机。
  6. 如果机器没有启动,它会发送一条消息,最好使用 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 中。今晚我将查看这个模块,看看是否可以让它做我想要的事情。

谢谢鲍勃至少给我指明了正确的方向。

相关内容