使用 perfmon 监控服务

使用 perfmon 监控服务

努力寻找计数器以使用 perfmon 获取服务状态。这可能吗?我们需要在 Nagios 中监控服务状态,但唯一可用的远程访问是通过 Perfmon。

答案1

没有针对服务的性能计数器。对于一次性操作,您可以监视服务正在调用的进程的计数器 - 例如进程的私有字节或线程数。

由于进程 ID 每次重启时都会发生变化,因此您需要相应地调整监控。但除非您有更强大的解决方案,否则它将是一种快速而粗糙的解决方案。

答案2

性能监视器用于测量机器性能指标,而不是服务状态。

虽然我知道你希望在 Perfmon 中监控此状态,但我认为这不是适合你的工具。如果你能进入服务管理器您可以导航到该服务的“恢复”选项卡。从这里,您可以选择服务器如何响应服务可能处于的不同状态。例如,您可以选择在第一次故障时重新启动服务,并在服务第二次和第三次故障时运行向您发送电子邮件的脚本,等等。

答案3

您可以相当轻松地编写 powershell 脚本(甚至是小型 C# codelet),以创建自定义 Windows 性能计数器。在这些脚本中,您可以输入任何您选择的数据(例如数字服务状态指示器?),以任何合适的间隔输入,当 perfmon 是导出数据的唯一简单方法时,这很方便(我曾经遇到过同样奇怪的问题,但它是一个与 Nagios 不同的监控应用程序)。

遗憾的是我正在度假并且只有这部可怜的 iPhone,所以我想我必须尽快回来并粘贴一个示例脚本。

不过,您可以快速轻松地在 Google 上搜索大量 powershell/C# 解决方案,这就是我在或多或少需要时找到答案的方法。不过,我猜您必须找到一种可以跳过 6 个月的 qa 周期的方法。

答案4

对于将来遇到此问题的任何人,您可以使用以下方法获取 1/0 状态:

电源外壳

(Get-Service MSSQL`$SQLEXPRESS | Where-Object -Property Status -eq Running | Measure).count

命令

sc query "MSSQL$SQLEXPRESS" | FIND /i "RUNNING" /c

相关内容