Ad Widget

Collapse

Мониторинг одинаковых процессов на Windows

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dzen.c
    Junior Member
    • Apr 2024
    • 9

    #1

    Мониторинг одинаковых процессов на Windows

    Доброго времени суток.

    Подскажите пожалуйста возможно ли такое (и если да, то как):
    Есть 100+ копий одного приложения (примеру nnn.exe) которые запускаются из разных директорий (к примеру A001, Z001, A002, B007, G017, и т.д.)
    В шаблоне эти приложения разделяются по пути запуска.

    При: proc.num[nnn.exe,,,C:\A001\ST\Res_113]
    в логах следующее: check 'proc.num[nnn.exe,,,C:\A001\ST\Res_113\]' is not supported: Too many parameters.
    Last edited by dzen.c; 13-06-2024, 07:43.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Нет, так нельзя. На платформе Windows метрика proc.num поддерживает только первые два параметра (название процесса и имя пользователя); остальные параметры, включая командную строку (в которой мог бы быть виден путь запуска), к сожалению, не поддерживаются (ссылка).
    Возможный обходной вариант - это запускать каждую копию от своего пользователя, тогда можно будет фильтровать по пользователям (второй параметр метрики proc.num).

    Comment

    • dzen.c
      Junior Member
      • Apr 2024
      • 9

      #3
      нашел вариант как это сделать:

      Code:
      wmi.get[root\cimv2,"Select SessionId from Win32_Process where Name = 'nnn.exe' and CommandLine like '%G017%'"]
      При отсутствии процесса вылетает ошибка: Empty WMI search result

      Но на выполнение триггера ошибка не влияет:
      Code:
      nodata(/SERV0912/wmi.get[root\cimv2,"Select SessionId from Win32_Process where Name = 'nnn.exe' and CommandLine like '%G017%'"],60)=1
      ---
      Использование SessionId обусловлено желанием получить единичные данные в принципе можно заменить на другой нужный параметр.
      Last edited by dzen.c; 13-06-2024, 15:08.

      Comment

      • Semiadmin
        Senior Member
        • Oct 2014
        • 1625

        #4
        Используя wmi.getall, можно получить JSON с CommandLine для всех процессов nnn.exe, а потом разобрать на зависимые через JSONPath. Фунция length() вернет для каждого из них 0 или 1.

        Comment


        • dzen.c
          dzen.c commented
          Editing a comment
          Я пока не разбирался с JSON.
          Если есть возможность напишите поподробнее как это реализовать в рамках одного шаблона.
          Я так понимаю что надо сделать айтем wmi.getall (без сохранения истории) внутри айтема разбираем при помощи JSONPath и назначаем переменные для каждого nnn.exe.
          Создаем Айтемы для каждого инстанса nnn.exe и в ключах уже используем назначенную переменную и length()
      Working...