在语言环境无关的方式访问Windows性能计数器(Access Windows Performanc

2019-09-19 16:49发布

我有一个混合组服务器,一些运行Windows的英文,一些人在意大利运行Windows。

有没有一种方法来读取性能计数器的值,而不使用区域设置相关的字符串?

我在上阅读的zabbix文档 ,它应该是可以使用像一个数字格式\2\6 ,但它不工作对我来说,无论是在的zabbix也不PowerShell的。

我想监视CPU使用率( \Processore(_Total)\% Tempo processore )。

任何的建议是值得欢迎的。

Answer 1:

解决方法很简单:唯一的问题是放在一起的所有相关信息。

首先,打开注册表编辑器并转到以下项:

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

你会发现有三个数字(如009,010,...)命名的条目。 这三个数字是一个语言ID:009英语,010是意大利人,等等。

在这些条目,你会发现一个名为计数键。 打开它(双击),并复制您的首选语言的内容在文本编辑器。 您将有类似下面的内容:

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 Time10

如果你有一个复合表达式(例如, \Processore(_Total)\% Tempo processore ),你必须使用\238(_Total)\6 (我用的是意大利品牌)。

在的zabbix,使用用于监视平均CPU使用率,在过去15分钟表达式为:

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

我希望能说所有:如果有什么不清楚,请发表评论。



Answer 2:

你没有标记的PowerShell或ZABBIX,所以我想你不介意如何做C中的例子:你可以使用它从PowerShell中如果是这样的目标。

在一般(正如你指出的),你可以查询通过索引。

他们在MSDN上一个非常广泛的例子,它实际上是一个全功能的计划,包括如何通过指数:查询MSDN:检索计数器数据



文章来源: Access Windows Performance Counters in a locale independent way