Ad Widget

Collapse

Не работает UserParameter в Web-интерфейсе (при опросе Windows Server 2016)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Croners
    Junior Member
    • Jan 2019
    • 12

    #1

    Не работает UserParameter в Web-интерфейсе (при опросе Windows Server 2016)

    Есть скрипт на Powershell:
    $cpuload = Get-WmiObject Win32_Processor | Measure-Object -property LoadPercentage -Average | Select Average
    Write-Host ([int]($cpuload.Average -replace ",", "."))
    Он показывает среднее использование CPU в процентах.

    В файле zabbix.conf такие настройки:
    EnableRemoteCommands=1
    LogRemoteCommands=1
    Timeout=30
    UserParameter=GetAverageCPULoadFromPS,PowerShell.e xe -nologo "C:\ZABBIX\GetAverageCPULoadFromPS.ps1"

    В командной строке Zabbix результат возвращается:
    [root@zabbix ~]# zabbix_get -s terminal2 -p 10050 -k GetAverageCPULoadFromPS
    99

    При тестирование скрипта в Powershell всё тоже ОК:
    PS C:\ZABBIX> .\GetAverageCPULoadFromPS.ps1
    85

    Но если смотреть через Latest data, то ничего нет. Если на сервере поменять название ключа в конфиге, то выдаётся ошибка - неподдерживаемый ключ, то есть, zabbix запрашивает этот ключ. Но где результат?

    Если тоже самое делать на Windows Server 2008/R2, та работает как и положено. Все данные в графическом интерфейсе отображаются.
    Куда смотреть, чтобы заработало?
  • DShegolkov
    Junior Member
    • Sep 2018
    • 26

    #2
    проветствую.
    PowerShell.e xe - нужно без пробела

    Comment

    • DShegolkov
      Junior Member
      • Sep 2018
      • 26

      #3
      Насчет пробела сорри. Zabbix agent работает под учеткой "Local system". Может нет прав запуска powershell скриптов под этой учтекой? или попробуй изменить учетную запись на другую

      Comment

      • Croners
        Junior Member
        • Jan 2019
        • 12

        #4
        Originally posted by DShegolkov
        Насчет пробела сорри. Zabbix agent работает под учеткой "Local system". Может нет прав запуска powershell скриптов под этой учтекой? или попробуй изменить учетную запись на другую
        Сделал запуск по учёткой с правами доменного админа, но разницы нет. И если бы не было прав на выполнение скриптов Powershell, разве бы zabbix смог тогда показывать результаты при запросе через zabbix_get?
        Самое интересное, что на одном из восьми серверов с Windows Server 2016 данные отдаются без проблем.

        Comment

        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #5
          Originally posted by Croners
          В командной строке Zabbix результат возвращается:
          [root@zabbix ~]# zabbix_get -s terminal2 -p 10050 -k GetAverageCPULoadFromPS
          99
          Вот, это хорошо. Значит, с правами и конфигом всё ОК. А за какое время отрабатывает такой запрос? Если перед zabbix_get ещё добавить time - что покажет?

          Comment

          • Croners
            Junior Member
            • Jan 2019
            • 12

            #6
            Originally posted by Kos
            Вот, это хорошо. Значит, с правами и конфигом всё ОК. А за какое время отрабатывает такой запрос? Если перед zabbix_get ещё добавить time - что покажет?
            Увеличил этот параметр и заработало - похоже, скрипт не успевал отработать за 3 сек. Странно, что на серверах с Windows Server 2008 таких проблем нет. Спасибо за идею.

            ### Option: Timeout
            # Specifies how long we wait for agent, SNMP device or external check (in seconds).
            #
            # Mandatory: no
            # Range: 1-30
            # Default:
            # Timeout=3

            Timeout=30

            Comment

            • Kos
              Senior Member
              Zabbix Certified SpecialistZabbix Certified Professional
              • Aug 2015
              • 3404

              #7
              Только надо учесть, что это будет нормально работать, если агент посылает данные в активном решиме.
              Если же агент опрашивается Zabbix-сервером в пассивном режиме, то нужно ещё подкручивать и тайм-аут на стороне сервера (он должен быть больше, чем на агенте).

              Comment

              • Croners
                Junior Member
                • Jan 2019
                • 12

                #8
                Originally posted by Kos
                Только надо учесть, что это будет нормально работать, если агент посылает данные в активном решиме.
                Если же агент опрашивается Zabbix-сервером в пассивном режиме, то нужно ещё подкручивать и тайм-аут на стороне сервера (он должен быть больше, чем на агенте).
                Я поставил Timeout=30 в конфиге сервера. На агенте уже было 30 сек.
                Один и тот же скрипт выполняется за разное время на Windows Server 2016 и 2008/R2:

                Это на 2016:

                [root@zabbix ~]# time zabbix_get -s terminal2 -k GetAverageCPULoadFromPS
                26

                real 0m6.301s
                user 0m0.003s
                sys 0m0.008s

                Это на 2008:

                [root@zabbix ~]# time zabbix_get -s mail -k GetAverageCPULoadFromPS
                4

                real 0m2.689s
                user 0m0.006s
                sys 0m0.006s

                Comment

                Working...