Нужно на хосте Windows мониторить потребление ресурсов определёнными программами. Допустим есть база данных PostgreSQL, в диспетчере задач вижу несколько строк postgres.exe, потому что программа - многопотоковая, то есть нужно просуммировать число потребляемой памяти и процент загрузки CPU для всех потоков и получить 2 числа, которые я могу забирать по snmp системой мониторинга. Есть ПО, которое такое умеет делать, желательно бесплатное?
UPD: В комментариях начали советовать тяжеловесные системы мониторинга типа Zabbix, мне это не нужно, система мониторинга есть, но она умеет забирать данные только по snmp. Поэтому мне нужна некая замена штатному компоненту SNMP Service, который позволял бы передавать по snmp некие произвольные данные, например вычисленную сумму всех использования памяти всеми потоками некоей программы.
В диспетчере задач винды отображаются только процессы.
Количество потоков в процессе можно получить на закладке Details добавив дополнительный столбец Threads (не помню, по умолчанию кажется он не отображается). Добавлять столбцы можно, щелкнув ПКМ на заголовке таблицы и выбрав "Select columns" (у меня английская винда).
Но это действие не заставит диспетчер задач отображать потоки отдельными строками в таблице.
Думаю, количество потребляемой памяти можно получить скриптом на cmd или power shell. В cmd можно посмотреть в сторону команды tasklist, больше информации, скорее всего можно получить, с помощью утилиты wmic. По power shell ничего не скажу, но наверняка там возможностей еще больше. И все это доступно из коробки.
вижу несколько строк postgres.exe, потому что программа - многопотоковая,
Нет - это одна программа запустила несколько процессов. Добавьте колонку по PID и посмотрите - они там будут разные. Для программ родом и Unix (а также - Linux и прочего POSIX) - это вообще штатный режим работы, там издавна под это дело специальный системный вызов fork есть, который запускает копию текущего процесса в другом процессе.
Искатель как уже сказали: напишите простенький скрипт на чём угодно - cmd, повершелл, баш, да хоть на дотнете или даже питоне. Ну или можно взять любой скриптовый автоматизатор.
powershell
Пишешь в две строки скрипт, который собственно получает от ОС информцию о нагрузке и суммирует.
Агент того же заббикса будет этот скрипт вызывать и дальше куда-то сохранять.
Минус только в том что pwsh не мгновенно запускается и сам по себе сколько-то жрёт.
Вообще, если ты уже используешь какой-нибудь prometheus для метрик, то можно поискать какой-нибудь готовый экспортер для постгреса, чтобы не велосипедить.
У меня нет заббикса, у меня MikroTik Dude, он умеет в snmp.
В Winows Server встроенный snmp-агент есть, он даже информацию о процессах передаёт, но как из этой простыни вычислить данные конкретного процесса я даже думать не берусь, ищу готовое решение, которое наверняка существует.
Василий Банников, это система мониторинга для маленьких сетей, ставится на маршрутизатор MikroTik в виде модуля, а потом к ней подключаешься клиентом и в нём уже: блок-схемы, мониторинг и графики, умеет забирать произвольные данные по snmp.
В Windows, вроде как, до сих пор сохранился штатный компонент SNMP Service (см., к примеру, здесь).
А вообще, штатными для мониторинга именно Windows являются WMI и Performance Monitor API. И всческие универсальные программы мониторинга обычно умеют их использовать.
Да, я пробовал активировать его и получать с него данные удалённо. И я не хочу парсить выдаваемую им простыню из Dude, потому как это практически нереально. Хочу штатный snmp service заменить сторонним сервисом, таким где можно было данные о потреблении памяти тем же postgres.exe повесить на определённый OID.