Ad Widget

Collapse

Zabbix API

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dyuha85
    Member
    • Aug 2012
    • 41

    #1

    Zabbix API

    Добрый день!

    Не могу настроить Zabbix API Php, через Json RPC запрос.
    Оборачиваю этот запрос в php
    <php?
    {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
    "user": "Admin",
    "password": "zabbix"
    },
    "id": 1
    }
    >

    Кидаю его на фронтенд, набираю http://zabbix.local/user.php и ничего, белая страница.

    Гуглил, но исчерпывающего ничего не нашёл.

    ЗАТО

    Этот же запрос работает через shell

    #!/bin/bash
    curl -i -X GET -H 'Content-Type:application/json' -d'{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
    "user": "Admin",
    "password": "zabbix"
    },
    "id": 1
    }' http://127.0.0.1/api_jsonrpc.php

    Я не силён в программировании, помогите пожалуйста как правильно сформировать запрос, чтобы работало через браузер.

    Спасибо большое.
  • dyuha85
    Member
    • Aug 2012
    • 41

    #2
    Originally posted by dyuha85
    Добрый день!
    Не могу настроить Zabbix API Php, через Json RPC запрос.
    Оборачиваю этот запрос в php
    <php?
    {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
    "user": "Admin",
    "password": "zabbix"
    },
    "id": 1
    }
    >

    Кидаю его на фронтенд, набираю http://zabbix.local/user.php и ничего, белая страница.

    Гуглил, но исчерпывающего ничего не нашёл.

    ЗАТО

    Этот же запрос работает через shell

    #!/bin/bash
    curl -i -X GET -H 'Content-Type:application/json' -d'{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
    "user": "Admin",
    "password": "zabbix"
    },
    "id": 1
    }' http://127.0.0.1/api_jsonrpc.php

    Я не силён в программировании, помогите пожалуйста как правильно сформировать запрос, чтобы работало через браузер.

    Спасибо большое.
    Centos 6.3
    Zabbix 2.0.3

    Comment

    • oscar
      Senior Member
      • Dec 2010
      • 141

      #3
      Рабочий пример. В аттаче библиотека...
      Code:
      <?php
      require '/var/www/localhost/htdocs/zabbix/include/ZabbixApiAbstract.class.php';
      require '/var/www/localhost/htdocs/zabbix/include/ZabbixApi.class.php';
      $api = new ZabbixApi('127.0.0.1', 'Admin', 'password');
      $hosts = $api->hostGet(array(
          'output' => 'extend'
          //'selectInterfaces' => 'extend'    
              ));
      print_r($hosts);
      ?>
      Last edited by oscar; 25-06-2014, 06:45.

      Comment

      • dyuha85
        Member
        • Aug 2012
        • 41

        #4
        Originally posted by oscar
        Рабочий пример. В аттаче библиотека...
        Code:
        <?php
        require '/var/www/localhost/htdocs/zabbix/include/ZabbixApiAbstract.class.php';
        require '/var/www/localhost/htdocs/zabbix/include/ZabbixApi.class.php';
        $api = new ZabbixApi('127.0.0.1', 'Admin', 'password');
        $hosts = $api->hostGet(array(
            'output' => 'extend'
            //'selectInterfaces' => 'extend'    
                ));
        print_r($hosts);
        ?>
        Спасибо за ваш ответ.

        Я видимо чего-то не понимаю или не вижу. Но ваш конфиг поменял под себя, скачал библиотеку и вот:
        #!/usr/bin/php
        <?php
        require '/usr/local/share/zabbix/ZabbixApiAbstract.class.php';
        require '/usr/local/share/zabbix/ZabbixApi.class.php';
        $api = new ZabbixApi('127.0.0.1', 'admin', 'zabbix');
        $hosts = $api->hostGet(array(
        'output' => 'extend',
        //'selectInterfaces' => 'extend',
        'groupids' => 36
        ));
        print_r($hosts);
        ?>

        Набирую http://zabbix.local/api.php , но также оттображается пустая страница.

        Спасибо.

        Comment

        • oscar
          Senior Member
          • Dec 2010
          • 141

          #5
          А если Ctrl+U нажать (исходный код страницы)???

          Comment

          • oscar
            Senior Member
            • Dec 2010
            • 141

            #6
            и 'groupids' => 36 убери - это фильтр по группе, у тебя может такой не оказаться...

            Comment

            • dyuha85
              Member
              • Aug 2012
              • 41

              #7
              Originally posted by oscar
              А если Ctrl+U нажать (исходный код страницы)???
              В Ctrl+U тоже пусто

              Comment

              • dyuha85
                Member
                • Aug 2012
                • 41

                #8
                Originally posted by oscar
                и 'groupids' => 36 убери - это фильтр по группе, у тебя может такой не оказаться...
                groupsid это id группы в которой мои хосты находятся, я правильно понял?
                как можно узнать id этой группы?

                Comment

                • dyuha85
                  Member
                  • Aug 2012
                  • 41

                  #9
                  Originally posted by dyuha85
                  groupsid это id группы в которой мои хосты находятся, я правильно понял?
                  как можно узнать id этой группы?
                  Group id я узнал через это

                  #!/bin/bash
                  curl -i -X GET -H 'Content-Type:application/json' -d'
                  {
                  "jsonrpc": "2.0",
                  "method": "hostgroup.get",
                  "params": {
                  "output": "extend",
                  "sortfield": "name"
                  },
                  "id": 1,
                  "auth": "66d455c07f6cd72152839164be1fd32c"
                  }
                  ' http://127.0.0.1/api_jsonrpc.php


                  Но когда подставляю под ваш скрипт, всё равно "белизна" в браузере

                  Comment

                  • oscar
                    Senior Member
                    • Dec 2010
                    • 141

                    #10
                    Совсем постой страница быть не должна. Даже если не вернет ни одного хоста должно быть что-то вроде "array()"... Похоже валиться еще на авторизации, нуно логи курить...

                    Comment

                    • oscar
                      Senior Member
                      • Dec 2010
                      • 141

                      #11
                      как вариант попробовать
                      Code:
                      #!/usr/bin/php
                      <?php
                      require '/var/www/localhost/htdocs/zabbix/include/ZabbixApiAbstract.class.php';
                      require '/var/www/localhost/htdocs/zabbix/include/ZabbixApi.class.php';
                      $api = new ZabbixApi('127.0.0.1', 'Admin', 'password');
                      $hosts = $api->hostGet(array(
                          'output' => 'extend'
                          //'selectInterfaces' => 'extend'    
                              ));
                      print_r($hosts);
                      ?>
                      (обрати внимание на #!/usr/bin/php)
                      назнать chmod +x и выполнить в терминале ка кобычный скрипт

                      Comment

                      • dyuha85
                        Member
                        • Aug 2012
                        • 41

                        #12
                        В логах nginx ругался на ZabbixApiAbstract.class.php
                        Nginx остановил и стартанул Apache, теперь хоть что-то стало оттображаться



                        #!/usr/bin/php Array ( [0] => stdClass Object ( [maintenances] => Array ( ) [hostid] => 10084 [proxy_hostid] => 0 [host] => Zabbix server [status] => 0 [disable_until] => 0 [error] => [available] => 1 [errors_from] => 0 [lastaccess] => 0 [ipmi_authtype] => -1 [ipmi_privilege] => 2 [ipmi_username] => [ipmi_password] => [ipmi_disable_until] => 0 [ipmi_available] => 0

                        Данные так должны оттображаться? Я имею ввиду если запросить статистику, так же будет плохо читабельно оттображаться?

                        Comment

                        • oscar
                          Senior Member
                          • Dec 2010
                          • 141

                          #13
                          хе-хе... это нормальный вывод... у тебя есть объект $hosts который содержит результат запроса (список хостов). Его уже можешь как хочешь использовать - распарсить, запихнуть в форму и т.д. Кстати, Ctrl+U отобразит этот пример в более читаемом виде...

                          Comment

                          • dyuha85
                            Member
                            • Aug 2012
                            • 41

                            #14
                            Originally posted by oscar
                            хе-хе... это нормальный вывод... у тебя есть объект $hosts который содержит результат запроса (список хостов). Его уже можешь как хочешь использовать - распарсить, запихнуть в форму и т.д. Кстати, ctrl+u отобразит этот пример в более читаемом виде...
                            Всё ясно. Спасибо большое за помощь.

                            Comment

                            • alex5678
                              Junior Member
                              • Dec 2015
                              • 6

                              #15
                              Добрый день.
                              Подниму тему.
                              Как настроить Zabbix API Php, через Json RPC запрос?
                              v2.4.7

                              Comment

                              Working...