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 ...
随机推荐
- 从零开始配置TypeScript + React + React-Router + Redux + Webpack开发环境
转载请注明出处! 说在前面的话: 1.为什么不使用现成的脚手架?脚手架配置的东西太多太重了,一股脑全塞给你,我只想先用一些我能懂的库和插件,然后慢慢的添加其他的.而且自己从零开始配置也能学到更多的东西 ...
- Java高新技术 注解
Java高新技术 注解 知识概要: (1)了解注解 (2)注解的应用结构图 (3)@Retention(RetentionPolicy.RUNTIME) ...
- IDL 矩阵运算
矩阵相乘,A#B表示A的列乘以B的行,要求A的行数必须跟B的列数一致 IDL> A=[[0,1,2],[3,4,5]] IDL> B=[[0,1],[2,3],[4,5]] IDL> ...
- 消息队列、OSS常用操作封装
public class MessageQueue { #region Private Properties private const string _accessKeyId = "&qu ...
- jquery系列教程4-事件操作全解
点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...
- DevOps之域名
唠叨话 关于德语噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. 域名系统DNS(Domain Name System) 关于域名,知识与技能的层次(知道.理解.运用) ...
- win10 & Ubuntu16 双系统安装
忽然心血来潮吧,本机在已经安装了win10的背景下,想要再加一个linux系统学习学习,几经波折,终于成功. 博主笔记本里有两块固态,一个250G的装了win10,装的时间不久,镜像是在msdn上下载 ...
- uva12716 GCD XOR
个人博客:http://acbingo.cn/2015/06/04/uva12716/ 被紫薯上*和素数筛法类似*这句话给误解了= =,一直以为存在某种关系,在枚举c或者a时,可以根据当前的答案,筛掉 ...
- Oracle学习笔记之存储过程
...
- (转)java内存泄漏的定位与分析
转自:http://blog.csdn.net/x_i_y_u_e/article/details/51137492 1.为什么会发生内存泄漏 java 如何检测内在泄漏呢?我们需要一些工具进行检测, ...