以区域设置无关的方式访问Windows性能计数器

时间:2012-07-18 09:29:49

标签: windows powershell performancecounter zabbix

我有一组混合服务器,一些运行Windows英语,另一些运行Windows意大利语。

有没有办法在不使用区域设置相关字符串的情况下读取性能计数器的值?

我在Zabbix documentation上读到应该可以使用像\2\6这样的数字格式,但它对我来说不起作用,无论是在Zabbix还是Powershell中。

我想监控CPU利用率(\Processore(_Total)\% Tempo processore)。

欢迎提出任何建议。

2 个答案:

答案 0 :(得分:3)

解决方案很简单:唯一的问题是整合所有信息。

首先,打开注册表并转到以下键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

您将找到以三位数命名的条目(例如009,010,...)。这三个数字是一个语言ID:009是英语,010是意大利语,依此类推。

在每个条目中,您都会找到一个名为Counter的键。打开它(双击)并在文本编辑器中复制首选语言的内容。您将获得类似于以下内容的内容:

1
1847
2
System
4
Memory
6
% Processor Time
10
File Read Operations/sec
12
File Write Operations/sec
14
File Control Operations/sec
16
...

如您所见,每个标签下面都有一个数字:这是要使用的索引。例如,% Processor Time的索引为10

如果您有复合表达式(例如\Processore(_Total)\% Tempo processore),则必须使用\238(_Total)\6(我使用意大利标签)。

在Zabbix中,用于监视过去15分钟内平均CPU利用率的表达式为:

perf_counter[\238(_Total)\6, 900]

我希望大家都说:如果有不清楚的地方,请发表评论。

答案 1 :(得分:1)

你没有标记powershell或zabbix,所以我想你不介意如何用C做一个例子:如果这是目标,你可以在powershell中使用它。

一般情况下(如您所述),您可以按索引查询。

他们在MSDN上有一个非常广泛的例子,它实际上是一个完整的功能程序,包括如何通过索引进行查询:MSDN:Retrieving Counter Data