3

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

有没有一种方法可以在不使用依赖于语言环境的字符串的情况下读取性能计数器的值?

我在Zabbix 文档上读到应该可以使用类似的数字格式,\2\6但它对我不起作用,在 Zabbix 和 Powershell 中都没有。

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

欢迎任何建议。

4

2 回答 2

3

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

首先,打开 regedit 并转到以下键:

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 Time10

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

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

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

我希望已经说完了:如果有什么不清楚的地方,请发表评论。

于 2013-02-28T08:12:14.940 回答
1

您没有标记 powershell 或 zabbix,所以我想您不介意如何在 C 中执行此操作的示例:如果这是目标,您可以在 powershell 中使用它。

通常(正如您所指出的)您可以按索引查询。

他们在 MSDN 上有一个非常广泛的示例,它实际上是一个功能齐全的程序,包括如何按索引查询。:MSDN:检索计数器数据

于 2013-02-22T09:19:18.747 回答