Ad Widget

Collapse

Долго работающие скрипты

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • turboon
    Member
    • Sep 2010
    • 93

    #1

    Долго работающие скрипты

    Здравствуйте.
    Возможно кто-то уже решал подобную проблему..
    Есть долго работающий скрипт powershell, который иногда не укладывается даже в 30 секунд. Вызывается он пассивной проверкой агента через UserParameter. В нашем случае проверка "заббикс-траппер" менее удобна.

    Для версии агента 1.8.5 решил проблему таким образом:
    1. Переделал скрипт на powershell, чтобы он записывал результат в определенный промежуточный файл.
    2. Написал скрипт на VBS, выдающий содержимое промежуточного файла,
    а затем вызывающий скрипт на powershell
    3. В конфиге агента в UserParameter заменил вызов скрипта 1 на скрипт 2

    В скрипте VBS вызов скрипта powershell делаю так:
    Set Shell = CreateObject( "WScript.Shell" )
    Set resExec = Shell.Exec ("powershell -File " & execFile)

    Теперь проблемы
    При запуске через cmd все по плану - vbs запускает powershell, выводит результат, закрывается, а powershell работает дальше, сколько ему надо.
    Если версия агента 1.8.5, тоже все работает.
    А вот начиная с версии > 1.8.8 ( промежуточные не тестировал ) powershell принудительно закрывается вместе с vbs.
    Причем это ТОЛЬКО, если запускать vbs скрипт через zabbix_agent; локально, через cmd - все работает как задумано.

    Может, подкинете идейку-другую

    Повторю, делать задание в планировщике, и элемент типа zabbix траппер не хотелось бы, потому что это несколько усложнит настройку мониторинга. Сейчас все просто - развернул агента, натянул на хост шаблон - готово. И это хорошо
    Last edited by turboon; 24-08-2012, 16:15.
  • zalex_ua
    Senior Member
    Zabbix Certified Trainer
    Zabbix Certified SpecialistZabbix Certified Professional
    • Oct 2009
    • 1286

    #2
    Подозреваю что изменение поведения агента о котом вы говорите вызвано этим тикетом - https://support.zabbix.com/browse/ZBX-3479

    Заббикс агент не убивает скрипты которые работают дольше настроенного таймаута, он просто перестает ждать от них ответа и отвечает серверу что айтем не поддерживается.
    И это правильное поведение.

    Запихивайте в планировщик ту часть скрипта котороя долго работает и складывайте результат в файл, а в юзерпараметре уже используйте быстро работающую часть скрипта, которая данные берет из того временного файла.
    Last edited by zalex_ua; 27-08-2012, 10:20.

    Comment

    • turboon
      Member
      • Sep 2010
      • 93

      #3
      Похоже, что с какой-то версии > 1.8.5 агент опять начал убивать процессы.
      Напомню, у меня скрипт vbs вызывает скрипт powershell. Так вот, если запускать vbs из cmd, то vbs сразу возвращает нужное значение, запускает powershell, и усапешно завершается. Powershell тем временем работает дальше, сколько ему нужно. Если же запускать vbs через агента, то powershell завершается вместе с vbs. Проверял так - ставил Sleep , смотрел по диспетчеру процессов.

      P.s. Ну не хочу я ставить скрипт в планировщик. Так получается менее гибко и чуть более сложно в настройке.
      Last edited by turboon; 27-08-2012, 09:45.

      Comment

      • mkolomiets
        Senior Member
        • Jul 2009
        • 134

        #4
        Please note that Zabbix assumes that a command/script has done processing when the initial child process has exited AND no other process is still keeping the output handle/file descriptor open. When processing is done, ALL created processes are terminated.
        http://www.zabbix.com/documentation/...mand_execution

        Comment

        • turboon
          Member
          • Sep 2010
          • 93

          #5
          Да, я подозревал что-то похожее.. Спасибо

          Comment

          Working...