努力寻找计数器来获得使用perfmon的服务状态。 这甚至有可能吗? 我们需要在Nagios中监视服务的状态,但唯一的远程访问是通过Perfmon进行的。
没有服务的性能计数器。 对于某种一次性,您可以监视您的服务正在调用的进程的计数器,例如进程的私有字节数或线程数。
由于进程ID在每次重新启动时都会发生变化,因此您需要相应地调整您的监视。 但是,除非你有一些更健全的地方,否则它将作为一个快速和肮脏的解决scheme。
性能监视器用于衡量机器性能的度量,而不是服务的状态。
虽然我知道你正在监视Perfmon中的这个状态,但我不认为它是适合你的正确工具。 如果你可以进入services.msc,你可以导航到该服务的“恢复”选项卡。 从这里你可以select你的服务器如何反应服务可能在不同的状态。例如,你可以select在第一次失败时重新启动服务,然后运行一个脚本,通过电子邮件发送第二个和第三个失败的脚本服务等
你可以很容易地写出创build自定义Windows性能计数器的PowerShell脚本(甚至是小型C#代码)。 在这些你可以input任何你select的数据(如数字服务状态指示器?),在任何intervall似乎是足够的,这是很方便的,当perfmon是唯一简单的方法来导出数据(我有同样的奇怪的问题一次,但它是一个不同于Nagios的监控应用程序)。
遗憾的是,我正在度假,只有这个可怜的iphone,所以我想我必须返回并粘贴一个示例脚本,当我可以。
尽pipe如此,您可以快速轻松地search到大量的PowerShell / C#解决scheme,这就是我多less需要的时候才知道的。 不过,我想你必须find一种方法来做到这一点,可以滑过6个月的循环。
对于将来遇到此问题的人,可以使用以下方法获得1/0状态:
电源shell
(Get-Service MSSQL`$SQLEXPRESS | Where-Object -Property Status -eq Running | Measure).count
CMD
sc query "MSSQL$SQLEXPRESS" | FIND /i "RUNNING" /c