Ad Widget

Collapse

Мониторинг служб Windows через discovery.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • apelsinsochi2
    Junior Member
    • Jul 2023
    • 1

    #1

    Мониторинг служб Windows через discovery.

    Есть Windows 2008r2 сервера(50шт), которые прилетают в 6.4 zabix через Autoregistration actions. Далее, на хост накручивается почти стоковый шаблон Windows by Zabbix agent active, далее через Windows services discovery создаются элементы, все хорошо.
    Задача: нужно через proc_info[<процесс>,<атрибут>,<тип>] мониторить объем физической памяти сервисов, которые нашлись через discovery.
    <процесс> - имя процесса - в данном случае это имя файла, который не просто так получить, как оказалось (по крайней мере для меня)
    service.discovery передает JSON, в котором есть {#SERVICE.NAME}, но у меня служба называется по одному, а имя исполняющего файла другое. Для proc_info[<процесс>,<атрибут>,<тип>] нужно именно имя файла, а не {#SERVICE.NAME}.
    Имя можно вытащить из {#SERVICE.PATH}.
    Сделал в Item prototypes новый элемент с ключом proc_info["{#SERVICE.PATH}",wkset,sum]. Создался элемент proc_info["C:\Honeywell\DigitalVideoManager\Bin\HWDVSCam eraM anager.exe",wkset,sum]
    Как сделать так чтобы тут было без полного пути proc_info["HWDVSCameraManager.exe",wkset,sum] ? Пробовал через Функции макросов regsub (<шаблон>,<вывод>), а именно proc_info["{{#SERVICE.PATH}.regsub("(.*\\)(.*$)", \2)}",wkset,sum] (регулярное выражение проверил отдельно на https://regex101.com - работает), хотя не знаю, может тут его и нельзя применять.
    Помогите пожалуйста, люди добрые!

    p.s.

    Советовали через Preprocessing использовать JavaScript - не силен...


    root@zabbix:~# zabbix_get -s 10.10.1.22 -p 10050 -k service.discovery |jq

    "{#SERVICE.NAME}": "DVM Camera Service",
    "{#SERVICE.DISPLAYNAME}": "DVM Camera Service",
    "{#SERVICE.DESCRIPTION}": "Enables video streaming and coordinates video-related activities in the Honeywell DVM system.",
    "{#SERVICE.STATE}": 0,
    "{#SERVICE.STATENAME}": "running",
    "{#SERVICE.PATH}": "C:\\Honeywell\\DigitalVideoManager\\Bin\\HWDV SCam eraManager.exe",
    "{#SERVICE.USER}": ".\\DVM_Manager",
    "{#SERVICE.STARTUPTRIGGER}": 0,
    "{#SERVICE.STARTUP}": 0,
    "{#SERVICE.STARTUPNAME}": "automatic"​
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Может, замониторить процессы через proc.get, да и метрики оттуда же взять в прототипы зависимых айтемов?

    Comment

    • Victor Sklyarov
      Senior Member
      • Apr 2016
      • 184

      #3
      Убрать полный путь. Вставляем текст в предобработку Java Script.
      try {
      process = JSON.parse(value);
      }
      catch (error) {
      return null;
      }
      path =process["{#SERVICE.PATH}"];
      process["{#SERVICE.PATH}"]= path.split('\\').pop();
      return JSON.stringify(process);​
      Last edited by Victor Sklyarov; 26-07-2023, 20:56.

      Comment

      • Victor Sklyarov
        Senior Member
        • Apr 2016
        • 184

        #4
        Ещё короче
        try {
        process = JSON.parse(value);
        }
        catch (error) {
        return null;
        }
        process["{#SERVICE.PATH}"]= process["{#SERVICE.PATH}"].split('\\').pop();
        return JSON.stringify(process);​

        Comment

        Working...