Ad Widget

Collapse

Вывод свойств итемов из PhpZabbixApi

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • androld
    Junior Member
    • Nov 2016
    • 3

    #1

    Вывод свойств итемов из PhpZabbixApi

    Приветствую, Коллеги!
    Прошу сильно не пинать - в php новичок.
    Ситуация:
    Использую Zabbix 2.4.8; в сети есть ряд роутеров на удалённых местоположениях, заведены в заббиксе в отдельную группу, мониторятся просто - пингуется/не пингуется.
    Руководство хочет для оперативного оценивания доступности страницу с таблицей, в которой несколько колонок: имя точки, служебная информация из поля "Описание" хоста, состояние - Вкл/Выкл.
    Пытаюсь получить через PhpZabbixApi список итемов icmpping для хостов определённой группы, чтобы потом сгенерировать html-таблицу. Код:
    PHP Code:
    ?php
    // load ZabbixApi
    require_once 'ZabbixApi.class.php';
    use 
    ZabbixApi\ZabbixApi;

    try
    {
        
    // connect to Zabbix API
        
    $api = new ZabbixApi('http://zbx.post.msdnr.ru/api_jsonrpc.php''MegaUser''MegaPassword');

        
    $my_group 'routers';
        
    $my_application 'ICMP';
        
    $my_item 'icmpping';
        
    $my_item_name 'ICMP ping';

        
    $items $api->itemGet(array(
            
    'group' => $my_group,
            
    'filter' => array('key_' => $my_item),
            
    'output' => 'extend',
            
    'selectHosts' => array('name'),
            
    'sortfield' => 'itemid',
        ));
    //    print_r($items);
        
    foreach($items as $item)
            echo 
    $item->itemid ", " $item->name ", " $item->lastclock ", " $item->lastvalue ", " .  "\n";

    }
    catch(
    Exception $e)
    {
        
    // Exception in ZabbixApi catched
        
    echo $e->getMessage();
    }
    ?> 
    Свойства итемов выводятся замечательно. Но как вывести ещё и имя хоста с его описанием? Я зашёл в тупик.

    Прошу помощи у Всезнающего ALL
    Last edited by androld; 08-11-2016, 13:13. Reason: Решено
  • Alexander1310
    Member
    • Aug 2016
    • 35

    #2
    Code:
     my $json = {
                    jsonrpc => '2.0',
                    method => 'item.get',
                    params => {
                            output => ['name', 'itemid'],
                            selectHosts => ['hostid', 'host', 'name', 'description'],
                            filter => {
                                    itemid => $item_id,
                            },
                    },
                    id => 1,
                    auth => "$authID",
        };

    Comment

    • androld
      Junior Member
      • Nov 2016
      • 3

      #3
      Спасибо за подсказку! попробую.

      Comment

      • androld
        Junior Member
        • Nov 2016
        • 3

        #4
        Решено!

        Дело оказалось в недостаточном знании PHP и недостаточной продуманности результата.
        Итоговый вариант, который устроил всех:
        PHP Code:
        <?php
        // load ZabbixApi
        require_once 'ZabbixApi.class.php';
        use 
        ZabbixApi\ZabbixApi;
        try
        {
            
        // connect to Zabbix API
            
        $api = new ZabbixApi('http://zbx.post.msdnr.ru/api_jsonrpc.php''MegaUser''MegaPassword');
            
        $my_group 'routers'
            
        $my_item 'icmpping';
            
        $items $api->itemGet(array(
            
        'group' => $my_group,
            
        'filter' => array('key_' => $my_item),
            
        'output' => 'extend',
            ));
            foreach(
        $items as $item) {
            
        $item_time $item->lastclock;
            
        $item_value $item->lastvalue;
            
        $host_id $item->hostid;
            
        $hosts $api->hostGet(array(
                
        'filter' => array('hostid' => $host_id),
                
        'selectInventory' => array ('hostid','vendor','site_zip','site_city','site_address_a','site_address_b'),
                
        'output' => array('hostid''name'),
            ));
            foreach(
        $hosts as $host) {
                
        $host_name $host->name;
                
        $host_ISP $host->{'inventory'}->{'vendor'};
                
        $host_postindex $host->{'inventory'}->{'site_zip'};
                
        $host_city $host->{'inventory'}->{'site_city'};
                
        $host_OPSname $host->{'inventory'}->{'site_address_a'};
                
        $host_address $host->{'inventory'}->{'site_address_b'};
            }
                echo 
        $host_OPSname.", ".$host_postindex.", ".$host_name.", ".$host_ISP.", ".$host_city.", ".$host_address.", ".$item_time.", ".$item_value."\n";
            }
        }
        catch(
        Exception $e)
        {
            
        // Exception in ZabbixApi catched
            
        echo $e->getMessage();
        }
        ?>

        Comment

        Working...