Ad Widget

Collapse

Не срабатывает скрипт через zabbix actions

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • rekby
    Member
    • Jul 2010
    • 91

    #1

    Не срабатывает скрипт через zabbix actions

    Сделал Global-скрипт для переключения IP-адреса между серверами. Скрипт работает на zabbix-сервере.

    При выполнении скрипта из веб интерфейса (щелчек на хосте в списке проблем и выбор скрипта) скрипт выполняется и IP-адрес переключается, т.е. скрипт прописан правильно и из окружения zabbix-сервера работает.

    При выполнении триггера из Actions при срабатывании триггера - скрипт вроде как запускается на выполнение, но не выполняется.

    Время выполнения скрипта - около 40 секунд. В зависимости от обстоятельств может получаться дольше (в пределах минуты).

    Судя по логам скрипт отваливается практически сразу:
    15724:20140501:013453.209 End substitute_simple_macros() data:'/usr/bin/sudo /opt/private/tools/failover-ip-fix 1.2.3.4'
    15724:20140501:013453.209 In zbx_execute_script()
    15724:20140501:013453.209 In zbx_popen() command:'/usr/bin/sudo /opt/private/tools/failover-ip-fix 1.2.3.4'
    15724:20140501:013453.209 End of zbx_popen():6
    15724:20140501:013453.209 In zbx_waitpid()
    15731:20140501:013453.209 zbx_popen(): executing script
    15724:20140501:013453.219 zbx_waitpid() exited, status:141
    15724:20140501:013453.219 End of zbx_waitpid():15731
    15724:20140501:013453.219 End of zbx_execute_script():SUCCEED
    15724:20140501:013453.219 End of zbx_execute_script():SUCCEED

    Я подозреваю только прибивание скрипта по таймауту. Но запрос в API провайдера отправляется (просто не успеваю дождаться ответа) и по идее переключение должно происходить.
    В настройке единственный параметр таймайта внешних скриптов поставил в максимальное значение - 30.

    Как еще можно заставить скрипт работать?
    Last edited by rekby; 01-05-2014, 00:11.
  • rekby
    Member
    • Jul 2010
    • 91

    #2
    пробовал записывать команду с & в конце - чтобы работала в фоне.

    Статус возврата пишет 0, но переключения всё равно не происходит.

    Comment

    • yukra
      Senior Member
      • Apr 2013
      • 1359

      #3
      screen или nohup попробуй.

      А что именно делает скрипт(не "какие изменения вносит", а "какие команды выполняет")?

      Comment

      • rekby
        Member
        • Jul 2010
        • 91

        #4
        сейчас как раз с nohup сделал.

        Причем получилось только так:
        Скрипт внутри которого одна команда:
        #!/bin/bash

        nohup failover-ip-fix "$1" 0<&- &>/dev/null &

        Скрипт выполняет запрос к API дата-центра, больше ничего не делает.

        Comment

        • yukra
          Senior Member
          • Apr 2013
          • 1359

          #5
          Originally posted by rekby
          сейчас как раз с nohup сделал.

          Причем получилось только так:
          Скрипт внутри которого одна команда:
          #!/bin/bash

          nohup failover-ip-fix "$1" 0<&- &>/dev/null &

          Скрипт выполняет запрос к api дата-центра, больше ничего не делает.
          ну так и что? не помогает?

          Comment

          • rekby
            Member
            • Jul 2010
            • 91

            #6
            c nohup с отключением ввода-вывода - помогло.

            Просто nohup - не помог.

            Comment

            Working...