Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. Push-агент

Push-агент

Scheduled Pinned Locked Moved Support (Russian)
17 Posts 3 Posters 40.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A
    A
    Anth0ny
    wrote on last edited by
    #7

    вот, хотел попробовать ещё один способ, но...

    пример: опрашиваем через SNMP на удалённой windows-машине сервис Task Shceduler.

    штатными средствами этого пока ПРАВИЛЬНО сделать нельзя, поскольку как только сервис будет остановлен, его OID пропадёт из общего списка и DCI встаент в позу Not supported. а значит мониторить сервисы на запущено\не запущено не получается.

    испытывал такое решение:

    @echo off
    nxsnmpget -c public -p 161 имя_опрашиваемого_сервера 1.3.6.1.4.1.77.1.2.3.1.1.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114
    nxpush -u admin -P password -H сервер_мониторинга "полное_имя_сервера_мониторинга:Task Scheduler Checker"=%errorlevel%

    где errorlevel'ы (nxsnmpget'а):

    0 - и OK, и если OID не найден
    3 - request timed out

    Проблема: nxsnmpget отдаёт errorlevel 0 одинаково и на "сервер доступен-OID есть" и на "сервер доступен-OID'а нет"

    в принципе можно эту проблему решить при помощи такой конструкции (поможет возвращаемое значение [04] (получено, порядок) и [05] (не получено, проблема)):

    @echo off
    nxsnmpget -c public -p 161 имя_опрашиваемого_сервера 1.3.6.1.4.1.77.1.2.3.1.1.14.84.97.115.107.32.83.99.104.101.100.117.108.101.114 | find /I "[04]"
    nxpush -u admin -P password -H сервер_мониторинга "полное_имя_сервера_мониторинга:Task Scheduler Checker"=%errorlevel%

    где %errorlevel%'ы (find'а):

    0 - всё ок, получили [04]
    1 - всё плохо, получили не [04] (скорее всего [05])

    1 Reply Last reply
    0
    • V
      V
      Victor Kirhenshtein
      wrote on last edited by
      #8

      @anth0ny said in Push-агент:

      процессуальный вопрос: сейчас если я правильно понял push-алгоритм реализован таким образом, что он пассивно принимает значения от внешнего источника. я думаю, что было бы гораздо удобнее, если бы push-агент мог иметь возможность работать по указанному ему заранее расписанию и САМОСТОЯТЕЛЬНО запускать указанные ему скрипты и программы и работать с их выхлопом.

      A chem eto otlichaetsja ot obichnogo parametra agenta, kotorij vizivaet script cherez ExternalParameter? Rabotaet po raspisaniju, vozvraschaet rezul'tat raboti scripta...

      1 Reply Last reply
      0
      • A
        A
        Anth0ny
        wrote on last edited by
        #9

        ээ.. я не совсем понимаю, о чём речь: "ExternalParameter"...

        1 Reply Last reply
        0
        • V
          V
          Victor Kirhenshtein
          wrote on last edited by
          #10

          NetXMS агент может запускать любой скрипт и результат его работы использовать как значение запрошенного DCI. Например, если у меня есть скрипт

          @echo 1
          

          и я в конфиг агента добавлю

          ExternalParameter = MyParameter:cmd /c c:\myscript.cmd
          

          то у агента появится новый параметр с именем MyParameter, и если я создам на него DCI, то при каждом запросе сервера к агенту на значение этого параметра агент будет запускать указанный скрипт и как значение возвращать первую строку, выведенную скриптом на экран (в нашем примере всегда 1).

          1 Reply Last reply
          0
          • A
            A
            Anth0ny
            wrote on last edited by
            #11

            спасибо, интересное решение 😃

            это равносильно ExternalParameter = MyParameter:cmd /c @echo 1
            т.е. можно однострочные скрипты использовать без создания скриптофайла.

            или же пользоваться опять же в простых случаях сцеплением && для многострочных скриптов с простым выводом...

            вот интересный пример:

            for /f "tokens=2" %i in ('"nslookup www.microsoft.com 2>nul | find /i /n "address" | find /i /v "[2]" & if errorlevel 1 echo Address Not-Found"') do echo %i
            
            1 Reply Last reply
            0
            • A
              A
              Anth0ny
              wrote on last edited by
              #12

              и вот пример на злобу дня 😉 :
              ищем записи одного и тот же сервера на 2 DNS.

              @echo off
              for /f "tokens=2" %%i in ('"nslookup server1.mydomain.ru dnsserver1.mydomain.ru 2>nul | find /i /n "address" | find /i /v "[2]" & if errorlevel 1 echo Error DNS-Query-Error"') do set dns1=%%i
              for /f "tokens=2" %%i in ('"nslookup server1.mydomain.ru dnsserver2.mydomain.ru 2>nul | find /i /n "address" | find /i /v "[2]" & if errorlevel 1 echo Error DNS-Query-Error"') do set dns2=%%i
              if %dns1% equ 10.200.1.1 (set dns1=0) else set dns1=1
              if %dns2% equ 10.200.1.1 (set dns2=0) else set dns2=2
              set /a overall=%dns1%+%dns2%
              @echo %overall%
              

              таким образом если нет записей или не ответил сервер dnsserver1 мы получаем на выходе 1, если не получили данные от dnsserver2, то 2, а если не в курсе или не ответили оба, то 3. нормальное состояние = 0.

              1 Reply Last reply
              0
              • E
                E
                Ethril
                wrote on last edited by
                #13

                nxpush.exe -vv -u admin -P password -H monitor MONITOR.mydomain.ru:Test=6666

                Nado ukazivat' libo imja hosta tak, kak ono propisano v NetXMS'e, libo ego ID.

                А возможно ли немного допилить nxpush, чтобы можно было указывать ему IP-адрес вместо имени ноды?

                А то у меня PowerCLI-скрипт, периодически запускаемый на сервере NetXMS, извлекает с ESXi-гипервизора разную статистику. Эта статистика передаётся в нужные DCI через nxpush. И необходимость скрипту, помимо IP-адресов, откуда-то ещё брать внутренние NetXMS-овские идентификаторы нод выглядит неестественным усложнением.

                1 Reply Last reply
                0
                • V
                  V
                  Victor Kirhenshtein
                  wrote on last edited by
                  #14

                  Допиливать в данном случае надо сервер. Я добавил возможность использования IP адреса или DNS имени вместо имени объекта - их надо будет указывать после символа @, например:

                  nxpush.exe -u admin -P password -H monitor @10.0.0.2:Test=1

                  Эти изменения войдут в релиз 1.1.1. Если вы используете 1.0.11 и не планируете переход на ветку 1.1.x, то я могу прислать патч для сервера 1.0.11.

                  1 Reply Last reply
                  0
                  • V
                    V
                    Victor Kirhenshtein
                    wrote on last edited by
                    #15

                    Кстати, а скриптом можете поделиться? У меня тоже есть ESXi, которые было бы полезно подключить к мониторингу, и другим может пригодится.

                    1 Reply Last reply
                    0
                    • E
                      E
                      Ethril
                      wrote on last edited by
                      #16

                      Спасибо. Наверно по такому поводу перейду на 1.1 ветку 🙂

                      Скрипт:

                      Add-PSSnapin VMware.VimAutomation.Core
                      $UserName = "root"
                      $UserPWD = "password"
                      $InFilePath = "C:\ESXi-stats\ESXi-list.txt"
                      Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Confirm:$False
                      Get-Content $InFilePath | Foreach {
                          Connect-VIServer $_ -User $UserName -Password $UserPWD
                          $VMHost = Get-VMHost -Server $_
                          $VMHostNetwork = 0
                          $VMHostNetwork = Get-VMHostNetwork $_
                          $VMDatastoreList = ''
                          Get-Datastore -Server $_ | Foreach {
                              $VMDatastoreList += $_.Name + ' '
                              $ExecParameters = $VMHostNetwork.HostName + "." + $VMHostNetwork.DomainName + ":" + $_.Name + "=" + (1 - $_.FreeSpaceMB / $_.CapacityMB)
                              & "$env:ProgramFiles\NetXMS\bin\nxpush.exe" -u pushagent -H SERVICE $ExecParameters
                          }
                          Disconnect-VIServer -Server $_ -Force -Confirm:$False
                      
                          $ExecParameters = $VMHostNetwork.HostName + "." + $VMHostNetwork.DomainName + ":MemUse=" + ($VMHost.MemoryUsageMB / $VMHost.MemoryTotalMB)
                          & "$env:ProgramFiles\NetXMS\bin\nxpush.exe" -u pushagent -H SERVICE $ExecParameters
                      
                          $ExecParameters = $VMHostNetwork.HostName + "." + $VMHostNetwork.DomainName + ":CpuUse=" + ($VMHost.CpuUsageMhz / $VMHost.CpuTotalMhz)
                          & "$env:ProgramFiles\NetXMS\bin\nxpush.exe" -u pushagent -H SERVICE $ExecParameters
                      
                          $ExecParameters = $VMHostNetwork.HostName + "." + $VMHostNetwork.DomainName + ":DatastoreList=" + $VMDatastoreList
                          & "$env:ProgramFiles\NetXMS\bin\nxpush.exe" -u pushagent -H SERVICE $ExecParameters
                      }
                      

                      (имя сервера NetXMS - SERVICE - не вынесено в переменную, во входном файле ESXi-list.txt находятся IP-адреса ESXi-гипервизоров в столбик, имена ESXi-гипервизоров в NetXMS соответствуют их DNS-именам, после вашего патча скрипт можно будет упростить)

                      Запускается из стандартного виндового шедулера батником:

                      %PSMODULEPATH%\..\powershell.exe -PSConsoleFile "%ProgramFiles%\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -WindowStyle Minimized -Command ".\Get-AllVMHostStats.ps1"
                      

                      Из-за общей неторопливости PowerCLI отрабатывает довольно долго - у меня на 6 ESXi прокручивается ~3-4 минут. Поэтому часто делать отсчёты не получится.
                      Результат работы - http://img847.imageshack.us/i/89160342.jpg/

                      1 Reply Last reply
                      0
                      • E
                        E
                        Ethril
                        wrote on last edited by
                        #17

                        Кстати, раз уж речь зашла про интеграцию NetXMS с ESXi, то есть ещё полезные фишки:

                        Можно включить на ESXi поддержку SNMP (только на бесплатной версии нужно её включать ДО лицензирования, пока ещё ESXi крутится на 30-дневной триалке). После этого появится возможность мониторить кое-какие параметры гипервизора (например, у меня TotalMemSize мониторится запросом на OID .1.3.6.1.4.1.6876.3.2.1.0), но в целом список этих параметров невелик и не очень интересен.
                        Значительно ценнее возможность получать кликом в консоли по ноде гипервизора список его виртуалок, для этого заходим в NetXMS->Control Panel->Object Tools->New->SNMP Table и там сооружаем табличку примерно такого вида: http://img828.imageshack.us/i/81835416.jpg/
                        Заодно можно добавить в Object Tools возможность запуска VIClient.

                        Также можно форвардить на NetXMS syslog-и гипервизоров, и фильтровать их на предмет ошибок.

                        1 Reply Last reply
                        0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        Powered by NodeBB Contributors
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups