Windows服务:如何安排和监视它们?

我们有大约十几种Windows服务,既有自己开发的产品,也有第三方的产品,并且具有以下pipe理要求:

  • 开始/停止/在一周中的某些特定日子的预定时间跳出指定的服务。
  • 可选监视服务:如果受监视服务意外停止,请发送通知电子邮件,并可select启动它。

这些似乎相当基本的要求,但我还没有find任何简单的方法来满足他们与内置的Windowsfunction,或简单和负担得起的第三方工具。 这肯定是一个解决的问题?! 我期望立即find一些开源工具来做到这一点。

可选的“花哨的”要求是: – 意识到手动干预,使得工具不会干扰手动操作。 例如能够通过与监测相同的工具以交互方式停止和启动服务,和/或能够通知工具人工干预正在发生。

任何想法赞赏。

如果您想按计划停止和启动服务,那么为什么不使用作业调度程序中内置的窗口? 它完全有能力做这种事情 – 它可以运行一个命令,并且可以简单地将它用于启动和停止服务的批处理作业。

至于监视服务 – 您可以再次使用服务本身的恢复选项 – select“运行一个程序”,并使用它运行一个批处理作业,发送电子邮件通知(如果想让它变得容易,通过类似嘘声 )和然后重新启动服务。

服务

RobM和HopelessN00b的build议是好的,如果你想坚持使用Windows工具(除了用blat.exe这实际上是一个伟大的命令行smtp电子邮件)。

由于您提到了对第三方实用程序的兴趣,我们的(免费)监控软件EventSentry Light应该能够满足您的所有要求 – 使用一个免费软件:

  1. 监视服务 :当服务改变其状态时它会通知你。
  2. 更改服务状态:我们的“应用程序调度程序”允许您安排简单的脚本,在这种情况下,您可以使用sc.exe在指定的时间停止和启动服务。
  3. 控制服务:您可以指定所需的服务状态,在这种情况下,EventSentry将尝试始终将服务保持在该状态。

应用程序调度程序的优点是它可以从事件日志中的命令行进程捕获输出,因此如果服务重新启动不起作用(无论出于何种原因),那么您可以立即获得整个命令行的通知输出。

对于监控:有一个内置的function,当你点击services.msc中的services.msc属性时,查看“恢复”选项卡。 如果服务失败,你可以“运行一个程序”,这个程序可以是一个发送电子邮件的脚本。 也有几十个networking监控解决scheme可以监控Windows服务,Nagios,PRTG,OpenNMS等等。

正如@RobM所build议的那样,您可以通过服务属性选项卡提供基本的监视和恢复function,虽然根据我的经验,这往往不能在大量服务器或服务中扩展,并且比我想要的更有限。 如果您的需求超出了这个基本工具,您可以许可任意数量的监控套件,或者如果成本是一个因素,则可以相当简单地推出自己的监控脚本。

如果您有更多的* nix背景,尽pipe本机选项是WMI(Windowspipe理规范)和命令行WMIC(Windowspipe理规范命令) ,您可能会发现使用SNMP监视和控制服务更为简单。 ,一旦你使用它,这是非常强大的。

例如…你可以得到目标计算机上的WMIC /node:[hostname] SERVICE LISTWMIC /node:[hostname] SERVICE LIST

输出正在运行的服务列表:

WMIC SERVICE where (state=”running”) GET caption, name, state > services.tsv

并使用以下命令启动telnet服务:

WMIC SERVICE where caption='TELNET' CALL STARTSERVICE

有一点你select的脚本语言的逻辑,你可以发送电子邮件警报,当一个特定的服务没有运行,启动,停止或重新启动服务的时间表,并满足所有其他要求。 最重要的是,它是本地的,而且你需要的唯一工具是一个windows CLI(cmd和Powershell都可以工作)以及非常less量的脚本技能。