ZABBIX Forums  
  #1  
Old 07-11-2016, 14:59
androld androld is offline
Junior Member
 
Join Date: Nov 2016
Posts: 3
Default [РЕШЕНО] Вывод свойств итемов из 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 at 13:13. Reason: Решено
Reply With Quote
  #2  
Old 08-11-2016, 05:18
Alexander1310 Alexander1310 is offline
Member
 
Join Date: Aug 2016
Location: Novosibirsk
Posts: 34
Send a message via ICQ to Alexander1310
Default

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",
    };
Reply With Quote
  #3  
Old 08-11-2016, 07:24
androld androld is offline
Junior Member
 
Join Date: Nov 2016
Posts: 3
Default

Спасибо за подсказку! попробую.
Reply With Quote
  #4  
Old 08-11-2016, 13:12
androld androld is offline
Junior Member
 
Join Date: Nov 2016
Posts: 3
Default Решено!

Дело оказалось в недостаточном знании 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();
}
?>
Reply With Quote
Reply

Tags
api, item, php, phpzabbizapi

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 11:53.