work:zabbix:zabbix-top-proc-win

Потребовалось тут как-то выяснить, что за процесс нагружает ночью сервер с Windows Server на борту. Причем нагружает так, что сервер вешается. Был задан вопрос, может ли zabbix отследить виновного. Под Linux решения встречал, под Windows что-то не нашел. Пришлось придумывать самому.

Для начала создадим узел zabbix и элемент данных в нем.

Будем использовать активную проверку, т.к. совсем не хочется нагружать основной сервер.

В клиенте в файле настройки zabbix агента пропишем путь до сервера и команду, которую требуется выполнить. ServerActive - адрес сервера Zabbix. UserParameter - имя пользовательского параметра и команда, которую требуется выполнить.

В нашем случае UserParameter имеет вид:

UserParameter=proc.list,powershell -Command "(Get-Counter '\Процесс(*)\% загруженности процессора').CounterSamples | Sort-Object -Property cookedvalue -Descending| Select-Object -First 10| Where-Object InstanceName -NotMatch '^(?:idle|_total|system)$' | ft InstanceName,@{L='CPU';E={($_.Cookedvalue/100/$env:NUMBER_OF_PROCESSORS).toString('P')}}"

В итоге получаем такой вывод.

  • work/zabbix/zabbix-top-proc-win.txt
  • Последнее изменение: 2024/07/09 17:53
  • rolland