开源监控系统Zabbix提供了丰富的API,供第三方系统调用。

基本步骤如下:

1、获取合法认证;连接对应Zabbix URL,并提供用户名和密码,HTTP方法为“POST”,HTTP头部类型为“application/json”

 public function zabbixJsonRequest($uri, $data) {
try{$json_data = json_encode($data);
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $uri);
curl_setopt($c, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_POST, $json_data);
curl_setopt($c, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($c, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($json_data))
);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($c); return json_decode($result, true);
}catch(Exception $e) {
CCLog::LogErr('ZabbixInfoLogic: zabbixJsonRequest Err ->' . $e->getMessage());
return array();
}
}
     /**
* @Zabbix鉴权
* @param $uri Zabbix地址
* @param $username Zabbix用户名
* @param $password Zabbix密码
* @return 权限
*/
public function zabbixAuth($uri, $username, $password) {
try{$data = array(
'jsonrpc' => "2.0",
'method' => "user.login",
'params' => array(
'user' => $username,
'password' => $password
),
'id' => "1"
);
$response = $this->zabbixJsonRequest($uri, $data);
return $response['result'];
}catch(Exception $e) {
CCLog::LogErr('ZabbixInfoLogic: zabbixAuth Err ->' . $e->getMessage());
return array();
}
}

2、调用API获取数据;取得认证后,根据需要POST封装好的data,格式为json,配置不同的方法获取需要的数据。方法列表可在官方网站(https://www.zabbix.com/documentation/3.0/manual/api/reference)查阅。以下实例根据主机IP地址获取主机ID

     /**
* @根据IP获取hostid
* @param $uri Zabbix地址
* @param $authtoken 认证信息 可通过上述zabbixAuth方法获取
* @param $ip 主机IP地址
* @return hostid 获取主机ID
*/
public function zabbixGetHostIdByIp($uri, $authtoken,$ip) {
try{$data = array(
'jsonrpc' => "2.0",
'method' => "host.get",
'params' => array(
"output"=>[ "host" ],
"filter" => array(
"ip" => $ip, )
),
'id' => "1",
'auth' => $authtoken
);
$response = $this->zabbixJsonRequest($uri, $data);
return $response['result'][0]['hostid'];
}catch(Exception $e) {
CCLog::LogErr('ZabbixInfoLogic: zabbixGetHostIdByIp Err ->' . $e->getMessage());
return array();
}
}

PHP通过Zabbix API获取服务器监控信息的更多相关文章

  1. Python3对接华三CAS平台Api获取虚拟机监控信息-渐入佳境

    --时间:2021年2月3日 --作者:飞翔的小胖猪 说明 使用python对接华三CAS虚拟化平台,通过厂商提供的api接口获取每个集群下所有虚拟机的监控信息,并保存数据在本地的mariadb数据库 ...

  2. PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息

    最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取 ...

  3. Python 操作Zabbix API 获取ERROR级别告警信息并打印

    1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去.(合成语音及播报已经完成) 2.现实:整理zabbix告警级别,将不太重要的告警放到ER ...

  4. python 调用zabbix api实现查询主机信息,输出所有主机ip

    之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...

  5. PHP 获取系统信息,PHP 获取服务器详细信息

    获取系统类型及版本号:    php_uname()                                   (例:Windows NT COMPUTER 5.1 build 2600)只 ...

  6. .Net Web Api——获取client浏览器信息

    第一次接触到web api,发现这个东西是REST风格的:---- 微软的web api是在vs2012上的mvc4项目绑定发行的.它提出的web api是全然基于RESTful标准的,全然不同于之前 ...

  7. [转]PHP 获取服务器详细信息代码

    转自:http://jingyan.baidu.com/article/fdbd4277049c8bb89e3f4893.html 获取系统类型及版本号: php_uname() (例:Windows ...

  8. PHP 获取服务器详细信息【转】

    碰到此问题,做下记录 获取系统类型及版本号:    php_uname()                                   (例:Windows NT COMPUTER 5.1 b ...

  9. java获取服务器一些信息的方法

    request.getServletContext().getRealPath("/") 获取项目所在服务器的全路径,如:D:\Program Files\apache-tomca ...

随机推荐

  1. 从零开始配置TypeScript + React + React-Router + Redux + Webpack开发环境

    转载请注明出处! 说在前面的话: 1.为什么不使用现成的脚手架?脚手架配置的东西太多太重了,一股脑全塞给你,我只想先用一些我能懂的库和插件,然后慢慢的添加其他的.而且自己从零开始配置也能学到更多的东西 ...

  2. Java高新技术 注解

      Java高新技术 注解 知识概要:                  (1)了解注解 (2)注解的应用结构图 (3)@Retention(RetentionPolicy.RUNTIME)    ...

  3. IDL 矩阵运算

    矩阵相乘,A#B表示A的列乘以B的行,要求A的行数必须跟B的列数一致 IDL> A=[[0,1,2],[3,4,5]] IDL> B=[[0,1],[2,3],[4,5]] IDL> ...

  4. 消息队列、OSS常用操作封装

    public class MessageQueue { #region Private Properties private const string _accessKeyId = "&qu ...

  5. jquery系列教程4-事件操作全解

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  6. DevOps之域名

    唠叨话 关于德语噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. 域名系统DNS(Domain Name System) 关于域名,知识与技能的层次(知道.理解.运用) ...

  7. win10 & Ubuntu16 双系统安装

    忽然心血来潮吧,本机在已经安装了win10的背景下,想要再加一个linux系统学习学习,几经波折,终于成功. 博主笔记本里有两块固态,一个250G的装了win10,装的时间不久,镜像是在msdn上下载 ...

  8. uva12716 GCD XOR

    个人博客:http://acbingo.cn/2015/06/04/uva12716/ 被紫薯上*和素数筛法类似*这句话给误解了= =,一直以为存在某种关系,在枚举c或者a时,可以根据当前的答案,筛掉 ...

  9. Oracle学习笔记之存储过程

                                                                                                        ...

  10. (转)java内存泄漏的定位与分析

    转自:http://blog.csdn.net/x_i_y_u_e/article/details/51137492 1.为什么会发生内存泄漏 java 如何检测内在泄漏呢?我们需要一些工具进行检测, ...