Ad Widget

Collapse

External check script php

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Andrey_79
    Senior Member
    • Sep 2008
    • 173

    #1

    External check script php

    Добрый день. Написал небольшой скрипт на php для выборки данных с из базы сервера Asterisk. Скрипт из командной строки работает, но при запуске через zabbix элемент данных переходит в состояние "не поддерживается", а в логах появляется сообщение, что данные не получены (Item [Asterisk_10.40.1.203:asterisk.php] error: Script returned nothing
    )
    Скрипт asterisk.php
    #! /usr/local/bin/php

    <?php
    $end=time();
    $start=$end-30*60;
    $end=date('Y-m-d H:i:s',$end);
    $start=date('Y-m-d H:i:s',$start);

    $a=0;
    $db = mysql_connect ("10.40.1.203:3306","login","pass");
    mysql_select_db("asteriskcdrdb", $db);
    $res = mysql_query("SELECT calldate FROM cdr WHERE calldate BETWEEN '$start' and '$end'");
    while ( $ctg = mysql_fetch_array( $res ) )
    {
    $a++;
    }
    $a=(int)$a;
    MYSQL_CLOSE($db);
    echo $a ."\n";
    ?>
    Click image for larger version

Name:	asterisk.jpg
Views:	1
Size:	56.9 KB
ID:	315790

    Подскажите, где я делаю неправильно.
    Last edited by Andrey_79; 07-07-2011, 14:06.
  • ugh
    Senior Member
    • Jun 2009
    • 296

    #2
    может без \n?

    Comment

    • Andrey_79
      Senior Member
      • Sep 2008
      • 173

      #3
      >может без \n?
      пробовал, тоже самое.
      Еще фрагмент лог данных:
      76648:20110707:091634.901 Item [Asterisk_10.40.1.203:asterisk.php] error: Script returned nothing
      76648:20110707:091634.901 In zabbix_log()
      76648:20110707:091634.901 In DCconfig_get_items() hostid:0 key:'zabbix[log]'
      76648:20110707:091634.901 End of DCconfig_get_items():0
      76648:20110707:091634.901 End of zabbix_log()
      76648:20110707:091634.901 End of get_value():NOTSUPPORTED
      76648:20110707:091634.901 Item [Asterisk_10.40.1.203:asterisk.php] is not supported
      76648:20110707:091634.901 In zabbix_log()
      76648:20110707:091634.902 In DCconfig_get_items() hostid:0 key:'zabbix[log]'
      76648:20110707:091634.902 End of DCconfig_get_items():0
      76648:20110707:091634.902 End of zabbix_log()
      Last edited by Andrey_79; 07-07-2011, 08:20.

      Comment

      • Salagin
        Member
        • Dec 2010
        • 35

        #4
        Originally posted by andrey_79
        error: Script returned nothing
        Видимо, скрипт дает значение заббиксу не в том формате?

        Comment

        • Andrey_79
          Senior Member
          • Sep 2008
          • 173

          #5
          Originally posted by Salagin
          Видимо, скрипт дает значение заббиксу не в том формате?
          Я перевожу данные в integer:

          $a=(int)$a;

          Что самое непонятное у меня штук 5 подобных скриптов работают нормально, а этот ни в какую. Понять причину не могу.

          Comment

          • Andrey_79
            Senior Member
            • Sep 2008
            • 173

            #6
            Провел эксперимент написал скрипт
            <?
            $a=5;
            echo $a;
            ?>

            Настройки Item такие же как и выше. Заббикс выдает ту же ошибку.

            Сделал тоже самое через агента, если в итем выставить "Тип информации" - числовой, та же ошибка, а если текстовый, то считывает нормально. Через внешнюю проверку не работает ни в том ни в другом случае.

            Как преобразовать данные выдаваемые скриптом в формат понятный заббиксу?
            Zabbix 1.8.5.

            Comment

            • ugh
              Senior Member
              • Jun 2009
              • 296

              #7
              #!/usr/local/bin/php
              <?
              $a=5;
              echo $a;
              ?>

              работает

              Comment

              • inform11
                Senior Member
                • Aug 2010
                • 176

                #8
                а еще можно попробовать вместо
                "<?php"
                писать
                "<?"
                тоже может пропереть...
                я когда в заббиксе себе дополнительные менюшки и отчеты рисовал тоже столкнулся что у меня пхп не хочет нормально съедать <?php
                Last edited by inform11; 07-07-2011, 13:10.

                Comment

                • Andrey_79
                  Senior Member
                  • Sep 2008
                  • 173

                  #9
                  Проблема оказалась в невнимательности
                  было:
                  #! /usr/local/bin/php

                  <?php
                  $end=time();


                  Нужно:
                  #! /usr/local/bin/php
                  <?php
                  $end=time();

                  т.е. убрал перевод строки.
                  Всем спасибо за советы.

                  Comment

                  • Salagin
                    Member
                    • Dec 2010
                    • 35

                    #10
                    Сам влип в ту же историю :-) Только у меня перл.
                    Разбираюсь, почему скрипт возвращает пустой результат. В случае простого print скрипт работает. То ли комментарии в скрипте мешают, то ли.. Буду тестировать
                    Кстати, заметил, что Заббикс запускает скрипт с аргументом - ip адресом узла. При этом в строке "Ключ" при настройке этого элемента данных прописано только имя скрипта. До этого я маялся, как передать ip узла в скрипт, а оно "вон оно че, Михалыч".

                    Дополняю.
                    Вот скрипт (выкинул все комменты и пустые строки)
                    PHP Code:
                    #!/usr/bin/perl
                    use strict;
                    use 
                    Net::SNMP;
                    my $snmp_host $ARGV[0];
                    my $snmp_community 'xxxxxxxx';
                    my $snmp_oid '1.3.6.1.2.1.1.3.0';
                    my $snmp_session Net::SNMP->session(-hostname => $snmp_host, -community => $snmp_community, -version => 1,) or die('Не удалось соединиться!');
                    my $result $snmp_session->get_request(-varbindlist => [$snmp_oid],) or die('Не удалось выполнить запрос!');
                    my $res=$result->{$snmp_oid};
                    print 
                    $res;
                    $snmp_session->close(); 
                    Из cli - работает. Как внешняя проверка Заббикс - скрипт ничего не вернул. В случае простого print "Вася"; скрипт таки возвращает Заббиксу "Вася".
                    Просьба к разработчикам более подробно осветить вопрос с внешними проверками - вот у человека из за переноса строки скрипт ничего не возвращал, у меня - хз почему.
                    Last edited by Salagin; 08-07-2011, 09:02.

                    Comment

                    • Salagin
                      Member
                      • Dec 2010
                      • 35

                      #11
                      Проблема решена. Я оказался ССЗБ В конфиге Заббикса таймаут стоял по умолчанию - 5 секунд. Поставил 30, все заработало.
                      Теперь меня интересует замечание в мануале -
                      Не злоупотребляйте внешними проверками! Они могут намного снизить производительность системы zabbix.
                      Насколько в цифрах можно? У меня 50 узлов на которые надо повесить по 5 проверок с интервалом в 5 минут, это "злоупотреблять" или еще нет?

                      Comment

                      • zalex_ua
                        Senior Member
                        Zabbix Certified Trainer
                        Zabbix Certified SpecialistZabbix Certified Professional
                        • Oct 2009
                        • 1286

                        #12
                        Originally posted by Salagin
                        П
                        Насколько в цифрах можно? У меня 50 узлов на которые надо повесить по 5 проверок с интервалом в 5 минут, это "злоупотреблять" или еще нет?
                        Тут имеется ввиду именно аспект таймаутов (время выполнения скрипта), но это решается достаточным количеством пуллеров. Логика этой фразы такова, что пользовательские скрипты "среднестатестически" не оптимизированы для быстрого выполнения (по сравнению с обычными проверками агентом), поэтому если их много, то они могут создавать задержки в работе пуллеров и будет возникать очередь, но сейчас это все можно мониторить.

                        Смотрите эту статью.
                        Внешние проверки работают в рамках обычных пуллеров "poller".

                        Comment

                        • vanishox
                          Member
                          • Mar 2011
                          • 47

                          #13
                          Добрый день, помогите пож-та разобраться.

                          1. Также возникла проблема с Внешними проверками.
                          2. Интересует формат передачи параметров скрипту в ключе.
                          3. Есть скрипт, если в скрипте прописываю все параметры - все работает, данные собирает, отрисовывает.
                          4. Как только прописываю ключ вида test[{HOST.CONN} 300 2] и в скрипте пытаюсь принять эти 3 аргумента, то
                          данные не собираются, на графике при этом выдается [нет данных]. Причем при запуске из cli выдает нормальный результат.
                          В лог вообще ничего не сыпится, причем удалял лог файл, запускал сервер, файл логов создается, но ничего не пишется.

                          Подведя итог интересует:

                          1. Заббикс передает первым параметром IP железки по умолчанию как писал Salagin?
                          Ключ должен выглядеть так script_name[par1 par2 par3 ... parN] ?

                          2. Что можно сделать с лог файлом, если туда ничего не пишется.
                          Last edited by vanishox; 15-07-2011, 14:52.

                          Comment

                          • zalex_ua
                            Senior Member
                            Zabbix Certified Trainer
                            Zabbix Certified SpecialistZabbix Certified Professional
                            • Oct 2009
                            • 1286

                            #14
                            Originally posted by vanishox
                            2. Что можно сделать с лог файлом, если туда ничего не пишется.
                            Включить DebugLevel=4

                            Comment

                            Working...