php 获取主机信息,利用 PHP 查询 ZABBIX API 信息, 获得主机当前使用率

<?php $hostname=$_GET['host']; $historylimit=1; $url = 'http://zabbix.xxxxx.com/zabbix/api_jsonrpc.php'; $header = array("Content-type: application/json-rpc"); // get token start function Curl($url,$header, $info){ $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_HTTPHEADER,$header); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS, $info); $response = curl_exec($ch); curl_close($ch); return json_decode($response); } function get_token($url, $header) { $user = 'admin'; $password = '*******'; $logininfo = array( 'jsonrpc' => '2.0', 'method' => 'user.login', 'params' => array( 'user' => $user, 'password' => $password, ), 'id' => 1, ); $data = json_encode($logininfo); $result = Curl($url, $header, $data); $token = $result -> result; return $token; } // get token end // 用于吧 classobject 返回为数组 function object_array($array) { if(is_object($array)) { $array = (array)$array; } if(is_array($array)) { foreach($array as $key=>$value) { $array[$key] = object_array($value); } } return $array; } // get hostid function get_hostid($hostname, $token, $header, $url) { $gethostid = array( 'jsonrpc' => '2.0', 'method' => 'host.get', "params" => array( "output" => ["hostid"], "filter" => array( "host" => [$hostname] ) ), "auth"=>$token, "id"=>1 ); $data = json_encode($gethostid); $result = Curl($url,$header,$data); $hostinfo= $result -> result; if ( empty($hostinfo) ) { $hostid =''; }else { $hostid = $hostinfo[0] -> hostid; } return $hostid; } // get itemid function get_itemid($hostid, $key, $token, $header, $url) { $getitemid = array( "jsonrpc" => "2.0", "method" => "item.get", "params" => array( "output" => ["itemids"], "hostids" => $hostid, "search" => array( "key_" => $key ), "sortfield" => "name" ), "auth" => $token, "id" => 1 ); $data = json_encode($getitemid); $result = Curl($url,$header,$data); $iteminfo = $result -> result; if ( empty($iteminfo )) { $itemid = 'null'; }else { $itemid = $iteminfo[0] -> itemid; } return $itemid; } // get zabbix value function get_resource($itemid, $token, $header, $url, $history, $historylimit) { $gethistory = array( "jsonrpc" => "2.0", "method" => "history.get", "params" => array( "output" => "extend", "history" => $history, "itemids" => $itemid, "sortfield" => "clock", "sortorder" => "DESC", "limit" => $historylimit ), "auth" => $token, "id" => 1 ); $data = json_encode($gethistory); $result = Curl($url,$header,$data); $historytotal = $result -> result; $resource = object_array($historytotal); return $resource; } // 逻辑开始 if ( empty($hostname) ) { echo "hostname not exists"; exit; }else { $hostlist = explode(",",$hostname); $hostlistarr = array( 'hostlist' => array()); foreach( $hostlist as $hostname ) { $source = array('vm.memory.size[available]', 'vm.memory.size[total]', 'system.cpu.util[,idle]', 'vfs.fs.size[/,used]', 'vfs.fs.size[/,total]' ); $hostarr = array( 'hostlist' => array($hostname => array() )); foreach ($source as $key) { if ( $key == 'system.cpu.util[,idle]' ) { $history = 0; }else { $history = 3; } // $zabbix_info = get_info($url, $header, $token, $hostname, $key, $history, $historylimit); $token = get_token($url, $header); $hostid = get_hostid($hostname, $token, $header, $url); if ( empty($hostid) ) { $json_info = array( 'hostlist' => array( $hostname => array( $key => 'null'))); $hostarr = array_merge_recursive( $hostarr, $json_info ); continue; } $itemid = get_itemid($hostid, $key, $token,$header, $url); if ( empty($itemid) ) { $json_info = array('hostlist' => array( $hostname => array( $key => 'null' ))); $hostarr = array_merge_recursive( $hostarr, $json_info ); continue; } $resource = get_resource($itemid, $token, $header, $url, $history, $historylimit); $zabbix_info = $resource[0]['value']; $json_info = array( 'hostlist' => array($hostname => array( $key => $zabbix_info )) ); $hostarr = array_merge_recursive( $hostarr, $json_info ); } $hostlistarr = array_merge_recursive( $hostlistarr, $hostarr); } echo json_encode($hostlistarr); } ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python调用Zabbix API批量查询主机信息,您需要进行以下步骤: 1. 安装 `zabbix-api` 模块:您可以使用 `pip` 命令安装该模块,例如:`pip install zabbix-api` 2. 导入必要的库和模块: ```python from pyzabbix import ZabbixAPI import json ``` 3. 创建 `ZabbixAPI` 对象并登录: ```python zabbix_server = "http://zabbix.example.com" zabbix_user = "username" zabbix_password = "password" zapi = ZabbixAPI(url=zabbix_server, user=zabbix_user, password=zabbix_password) zapi.login() ``` 4. 使用 `host.get` 方法批量查询主机信息: ```python hosts = zapi.host.get(output=['hostid', 'host', 'name', 'status', 'ip']) ``` 此时,变量 `hosts` 将包含所有主机信息。在这个示例中,我们查询了每个主机的 `hostid`、`host`、`name`、`status` 和 `ip` 信息。 5. 处理查询结果: ```python for host in hosts: print("Host ID:", host['hostid']) print("Host Name:", host['name']) print("Host Status:", host['status']) print("Host IP:", host['ip']) print("------------------------") ``` 以上代码将遍历每个主机,并打印出其 ID、名称、状态和 IP 地址。 完整代码示例: ```python from pyzabbix import ZabbixAPI import json zabbix_server = "http://zabbix.example.com" zabbix_user = "username" zabbix_password = "password" zapi = ZabbixAPI(url=zabbix_server, user=zabbix_user, password=zabbix_password) zapi.login() hosts = zapi.host.get(output=['hostid', 'host', 'name', 'status', 'ip']) for host in hosts: print("Host ID:", host['hostid']) print("Host Name:", host['name']) print("Host Status:", host['status']) print("Host IP:", host['ip']) print("------------------------") ``` 注意:在实际使用中,您可能需要根据具体情况修改查询的参数和返回结果的处理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值