Ad Widget

Collapse

Внешние проверки

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sancher
    Junior Member
    • Feb 2013
    • 6

    #1

    Внешние проверки

    У меня следующая проблема, думаю многим пригодится её решение.
    Есть задача настроить проверку SIP
    Хочу настроить внешнюю проверку:
    1. Задал в конфиге zabbix_server.conf
    опцию ExternalScripts=/usr/local/share/zabbix/externalscripts
    2. В папке /usr/local/share/zabbix/externalscripts
    создал файл sip.sh и назначил ему необходимые права юзера zabbix
    Скрипт получился корявенький, но работает:
    Code:
    #!/bin/sh
    /usr/local/sbin/sipp $1 -sf /usr/local/share/zabbix/externalscripts/uac.xml -l 1 -m 1 -s $2 -recv_timeout 2000 &>/dev/null
    if [ $? -eq 0 ];
        then echo 0;
    else echo 1;
    fi
    Скрипт вызывается вот так: ./sipp IP TEL
    При успешном звонке будет выведен 0, в противном случае 1
    При запуске из консоли всё замечательно отрабатывает

    3. Создал элемент данных:
    Тип: Внешняя проверка
    Ключ: sip.sh[xx.xx.xx.xx,number]
    xx.xx.xx.xx - IP-адрес, потом планирую исправить на {HOST.CONN}, но пока указываю явно
    number - номер телефона
    Интерфейс узла сети: IP:10050 (там агента нет, поэтому порт игнорируется)
    Тип информации: Числовой (целое положительное)
    Тип данных: Десятичный

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

    Куда копать не пойму. Может что-то упустил?
    Буду признателен за помощь.
  • alexzagr
    Member
    • Sep 2012
    • 49

    #2
    Проверьте права на /usr/local/sbin/sipp, если он находится в sbin скорее всего исполнять его можно только от рута, а zabbix исполняет скрипты от пользователя zabbix (по умолчанию).

    Comment

    • sancher
      Junior Member
      • Feb 2013
      • 6

      #3
      Originally posted by alexzagr
      Проверьте права на /usr/local/sbin/sipp, если он находится в sbin скорее всего исполнять его можно только от рута, а zabbix исполняет скрипты от пользователя zabbix (по умолчанию).
      Спасибо за ответ.
      Действительно, забыл дать права юезру zabbix на файл
      /usr/local/sbin/sipp
      На сам скрипт sip.sh права были даны ранее
      Жаль, но это не изменило ситуацию
      По прежнему заббикс получает значение 1
      Уже даже засунул IP и телефон внутрь скрипта
      и изменил Ключ в элементе данных на просто sip.sh
      Не помогло (
      Упорно выводится 1, если запускать скрипт руками, то выводится 0

      Comment

      • alexzagr
        Member
        • Sep 2012
        • 49

        #4
        Отправьте вывод в файл и посмотрите чего не хватает
        Code:
        /usr/local/sbin/sipp $1 -sf /usr/local/share/zabbix/externalscripts/uac.xml -l 1 -m 1 -s $2 -recv_timeout 2000 &>/tmp/sipp.log

        Comment

        • sancher
          Junior Member
          • Feb 2013
          • 6

          #5
          Originally posted by alexzagr
          Отправьте вывод в файл и посмотрите чего не хватает
          Code:
          /usr/local/sbin/sipp $1 -sf /usr/local/share/zabbix/externalscripts/uac.xml -l 1 -m 1 -s $2 -recv_timeout 2000 &>/tmp/sipp.log
          Большое спасибо за желание помочь.

          /usr/local/sbin/sipp IP -sf /usr/local/share/zabbix/externalscripts/uac.xml -l 1 -m 1 -s NUMBER -recv_timeout 2000 &>/tmp/sipp.log
          # cat /tmp/sipp.log
          Warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE = 1024
          Resolving remote host 'IP'... Done.
          ------------------------------ Scenario Screen -------- [1-9]: Change Screen --
          Call-rate(length) Port Total-time Total-calls Remote-host
          10.0(0 ms)/1.000s 5060 0.14 s 1 IP:5060(UDP)

          Call limit reached (-m 1), 0.000 s period 0 ms scheduler resolution
          0 calls (limit 1) Peak was 1 calls, after 0 s
          0 Running, 4 Paused, 0 Woken up
          0 dead call msg (discarded) 0 out-of-call msg (discarded)
          1 open sockets

          Messages Retrans Timeout Unexpected-Msg
          INVITE ----------> 1 0 0
          100 <---------- 0 0 0 0
          180 <---------- 0 0 0 0
          183 <---------- 0 0 0 0
          200 <---------- E-RTD1 1 0 0 0
          ACK ----------> 1 0
          Pause [ 0ms] 1 0
          BYE ----------> 1 0 0
          200 <---------- 1 0 0 0

          ------------------------------ Test Terminated --------------------------------


          ----------------------------- Statistics Screen ------- [1-9]: Change Screen --
          Start Time | 2013-02-15 21:59:48:316 1360951188.316816
          Last Reset Time | 2013-02-15 21:59:48:468 1360951188.468808
          Current Time | 2013-02-15 21:59:48:469 1360951188.469123
          -------------------------+---------------------------+--------------------------
          Counter Name | Periodic value | Cumulative value
          -------------------------+---------------------------+--------------------------
          Elapsed Time | 00:00:00:000 | 00:00:00:152
          Call Rate | 0.000 cps | 6.579 cps
          -------------------------+---------------------------+--------------------------
          Incoming call created | 0 | 0
          OutGoing call created | 0 | 1
          Total Call created | | 1
          Current Call | 0 |
          -------------------------+---------------------------+--------------------------
          Successful call | 0 | 1
          Failed call | 0 | 0
          -------------------------+---------------------------+--------------------------
          Response Time 1 | 00:00:00:000 | 00:00:00:019
          Call Length | 00:00:00:000 | 00:00:00:037
          ------------------------------ Test Terminated --------------------------------

          Comment

          • sancher
            Junior Member
            • Feb 2013
            • 6

            #6
            Есть у кого-нибудь ещё идеи о причине моей проблемы?
            Что ещё проверить?
            Постоянно выводит 1-цу
            Вбил в скрипте вывод 2-ки при неудачном звонке, стал выводить 2-ку.
            То есть запускаю на сервере скрипт руками с правильными праметрами - выводит 0, а в последних данных на веб-интерфейсе вижу 2-ку (1-цу).
            Похоже придётся отсылать письма в скрипте и класть его в крон

            Comment

            • alexzagr
              Member
              • Sep 2012
              • 49

              #7
              Вам нужно по логу определиться в чем проблема, например я с sipp не работал. Видно какой-то warning и видно что есть 1 Successful call. И похоже программа завершилась нормально.
              Возможно глупый вопрос: это лог запуска скрипта из zabbix или ручного запуска?

              Comment

              • sancher
                Junior Member
                • Feb 2013
                • 6

                #8
                Originally posted by alexzagr
                Вам нужно по логу определиться в чем проблема, например я с sipp не работал. Видно какой-то warning и видно что есть 1 Successful call. И похоже программа завершилась нормально.
                Возможно глупый вопрос: это лог запуска скрипта из zabbix или ручного запуска?
                Спасибо.
                Да, есть ворнинг, но несмотря на это sipp отрабатывает нормально
                Код возврата 0 (при правильных параметрах и успешном звонке)
                Вопрос не глупый - это лог ручного запуска.
                Включил в настройке сервера DebugLevel=4
                После этого появились строки о внешней проверке:
                In substitute_key_macros() data:'sip.sh'
                End of substitute_key_macros():SUCCEED data:'sip.sh'
                In get_value() key:'sip.sh'
                In get_value_external() key:'sip.sh'
                In zbx_popen() command:'/usr/local/share/zabbix/externalscripts/sip.sh'
                get_function_parameter_uint() flag:0 value:300
                End of get_function_parameter_uint():SUCCEED
                End of evaluate_NODATA():SUCCEED
                End of evaluate_function():SUCCEED value:'0'

                Мне не понятно, что означает get_function_parameter_uint() flag:0 value:300, но если я правильно понимаю в итоге всё завершается успехом: SUCCEED value:'0'
                Но опять таки в интерфейсе я вижу 1-цу

                Просто чудеса

                Comment

                • alexzagr
                  Member
                  • Sep 2012
                  • 49

                  #9
                  попробуйте сделать через zabbix_agent с помошью UserParameter.

                  Comment

                  • sancher
                    Junior Member
                    • Feb 2013
                    • 6

                    #10
                    Originally posted by alexzagr
                    попробуйте сделать через zabbix_agent с помошью UserParameter.
                    Спасибо.
                    Добавил в zabbix_agentd.conf
                    UserParameter=sip.ping,/usr/local/share/zabbix/externalscripts/sip.sh
                    и запустил
                    zabbix_get -s 127.0.0.1 -p 10050 -k sip.ping

                    выводит единицу (то есть неудачный звонок)
                    напомню, что при запуске скрипта руками выводится 0 (удачный звонок)

                    Comment

                    Working...