Получение значений от стандартных счетчиков Win

Started by kozlov_ao, April 20, 2012, 06:09:04 PM

Previous topic - Next topic

kozlov_ao

Приветствую!
Как можно получить значения счетчиков, имеющихся в Windows?
Необходимо мониторить некоторые параметры SQL сервера. В стандартной оболочке мониторинга есть параметры, типа: SQLServer:статистика SQL -> Re-Compilations/sec.
Вот как-бы заполучить это, и подобные значения?
Версия агента и сервера 1.2.0

Victor Kirhenshtein

U agenta est' parametr PDH.CounterValue, kotorij pozvoljaet poluchit' znachenie ljubogo PDH schetchika. Naprimer:

PDH.CounterValue(\Server\Bytes Total/sec)

Est' schetchiki, kotorie trebujut minimum dva izmerenija dlja poluchenija znachenija, naprimer \Processor(_Total)\% User Time. Togda nado ukazivat' vtorim argumentom 1, chtobi agent vzjal dva znachenija:

PDH.CounterValue("\Processor(_Total)\% User Time",1)


kozlov_ao

Гм.. Все вроде получилось... Но винда, чтоб ей..
В русской версии винды и некоторые названия параметров (например \Process (eng) -> \Процесс (rus)) передаются по-русски (это видно в nxget) :(
Спрашивается, ну кто так делает??!!  >:(
В английской версии все ОК.
Можно как-то обойти этот момент? или надо что-то в винде крутить?

Victor Kirhenshtein

В WinPerf субагенте есть возможность использования английских названий счетчиков, но только для параметров, определенных в субагенте (через Counter =). :( Я добавлю в TODO сделать то-же самое для PDH.CounterValue.

kozlov_ao

Можно подробнее, как это сделать?
Как получить список предопределенных счетчиков?

Victor Kirhenshtein

Для этого надо менять код субагента, чтобы PDH.GetCounterValue делал перевод названий. А вообще английские названия счетчиков лежат в registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009.

kozlov_ao

путь реестра знаю, но если локаль в винде русская, она чхать хотела на английские счетчики.
Ланн, буду ковыряться. Если что, отпишусь..

kozlov_ao

Молю о помощи...
Как сделать вот это: "Для этого надо менять код субагента, чтобы PDH.GetCounterValue делал перевод названий" ??? всю голову сломал...как, где и на что его поменять?
Порылся в форумах-ничего не нашел... в документации и в wiki тоже пусто...

Victor Kirhenshtein

Это имелось ввиду, что мне надо менять :) Я постараюсь сделать в 1.2.1 возможность использовать английские названия счетчиков.

kozlov_ao

Аааа.... вон оно как... :)
Буду ждать. А-то реально с русской виндой засада...

kozlov_ao

Хорошо, а как сделать вот это:
QuoteВ WinPerf субагенте есть возможность использования английских названий счетчиков, но только для параметров, определенных в субагенте (через Counter =).
Как тут поступить?
Пример:
Counter=AverageDiskWriteQueueLenght:"\PhysicalDisk(2 T:)\Avg. Disk Write Queue Length":60:A:INT:"Average Disk T: Write Queue Length"
Что и куда дополнительно писать?

Victor Kirhenshtein

Агент должен пытаться перевести название счетчика автоматически.

kozlov_ao

Т.е. надо написать просто английские названия, и по теории, все должно заработать? :)
завтра попробую.. :)

kozlov_ao

Да, действительно, параметры перечисленные через Counter=, отрабатываются нормально.... Очень ждем возможности делать так-же и для PDH.GetCounterValue...

Victor Kirhenshtein

Я собрал и выложил инсталлятор для агента 1.2.1 - попробуйте работает ли в нем PDH.GetCounterValue с английскими названиями. Скачать можно по этим ссылкам:

https://www.netxms.org/download/agent_packages/nxagent-1.2.1.exe
https://www.netxms.org/download/agent_packages/nxagent-1.2.1-x64.exe