PHP通过Zabbix API获取服务器监控信息
开源监控系统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获取服务器监控信息的更多相关文章
- Python3对接华三CAS平台Api获取虚拟机监控信息-渐入佳境
--时间:2021年2月3日 --作者:飞翔的小胖猪 说明 使用python对接华三CAS虚拟化平台,通过厂商提供的api接口获取每个集群下所有虚拟机的监控信息,并保存数据在本地的mariadb数据库 ...
- PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息
最近项目需要获取linux主机的一些信息,如CPU使用率,内存使用情况等.由于我们本身就装了zabbix系统,所以我只用知道如何获取信息即可,总结有两种方法可以获取. 一.通过ZABBIX API获取 ...
- Python 操作Zabbix API 获取ERROR级别告警信息并打印
1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去.(合成语音及播报已经完成) 2.现实:整理zabbix告警级别,将不太重要的告警放到ER ...
- python 调用zabbix api实现查询主机信息,输出所有主机ip
之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...
- PHP 获取系统信息,PHP 获取服务器详细信息
获取系统类型及版本号: php_uname() (例:Windows NT COMPUTER 5.1 build 2600)只 ...
- .Net Web Api——获取client浏览器信息
第一次接触到web api,发现这个东西是REST风格的:---- 微软的web api是在vs2012上的mvc4项目绑定发行的.它提出的web api是全然基于RESTful标准的,全然不同于之前 ...
- [转]PHP 获取服务器详细信息代码
转自:http://jingyan.baidu.com/article/fdbd4277049c8bb89e3f4893.html 获取系统类型及版本号: php_uname() (例:Windows ...
- PHP 获取服务器详细信息【转】
碰到此问题,做下记录 获取系统类型及版本号: php_uname() (例:Windows NT COMPUTER 5.1 b ...
- java获取服务器一些信息的方法
request.getServletContext().getRealPath("/") 获取项目所在服务器的全路径,如:D:\Program Files\apache-tomca ...
随机推荐
- 翻译连载 | 第 10 章:异步的函数式(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇
原文地址:Functional-Light-JS 原文作者:Kyle Simpson-<You-Dont-Know-JS>作者 关于译者:这是一个流淌着沪江血液的纯粹工程:认真,是 HTM ...
- 如何抽象一个 Vue 公共组件
之前一直想写一篇关于抽象 Vue 组件的随笔,无奈一直没想到好的例子.恰巧最近为公司项目做了一个数字键盘的组件,于是就以这个为例聊聊如何抽象 Vue 的组件. 先上 Demo 与 源码.(demo最好 ...
- ActivityManager与Proxy模式的运用
Android学习——ActivityManager与Proxy模式的运用 一 Proxy模式 意图: 为其他对象提供一种代理以控制这个对象的访问. 适用性: l 远程代理( Remote Prox ...
- eval函数的用法
可以把list,tuple,dict和string相互转化. ################################################# 字符串转换成列表 >>&g ...
- 继承“HibernateDaoSupport”后,报“The hierarchy of the type AccoutDaoImpl is inconsistent”的解决方案
解决办法: 今天写了一段很简单的代码,Eclipse竟然报错 import org.springframework.jdbc.core.support.JdbcDaoSupport; import c ...
- 三、Spring的面向切面
Spring的面向切面 在应用开发中,有很多类似日志.安全和事务管理的功能.这些功能都有一个共同点,那就是很多个对象都需要这些功能.复用这些通用的功能的最简单的方法就是继承或者委托.但是当应用规模达到 ...
- 【转】深入浅出:Linux设备驱动之字符设备驱动
深入浅出:Linux设备驱动之字符设备驱动 一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据 ...
- C# 剪贴板中文乱码问题
最近写了个小工具.主要功能是生成一些数据,然后一键复制,最终粘贴到需要的地方. 本来一切正常的,可是当把工具拿给朋友使用时,却被告知粘贴出来的数据是乱码.当时第一时间想到是区域问题(朋友是台湾人),不 ...
- [oracle 使用(1)] win7/10 下Oracle10g的安装与卸载
1.安装前提 首先要确保你的电脑之前没有安装过,或者安装过但是已经卸载干净了.至于如何查看是否卸载干净可以看看我后面的Oracle卸载步骤. 2.Oracle的安装. 2.1.首先自己在Oracle官 ...
- 自学LinkedBlockingQueue源码
自学LinkedBlockingQueue源码 参考:http://www.jianshu.com/p/cc2281b1a6bc 本文需要关注的地方 生产者-消费者模式好处: 读取和插入操作所使用的锁 ...