Python 结合 Zabbix API实现监控主机的增删改功能
2017-01-24 15:26
1026 查看
Zabbix api可以很方便的管理监控项,功能强大,非常适合二次开发。本文主要实现的功能是django资产管理的更新能够同步到Zabbix监控平台,统一平台功能,保证数据一致性。
Zabbix API
Zabbix API中主要用到host.create,host.delete,host.update,host.get和hostinterface.update方法。下面已create为例做下简单使用说明。
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "50"
}
],
"templates": [
{
"templateid": "20045"
}
],
"inventory": {
"macaddress_a": "01234",
"macaddress_b": "56768"
}
},
"auth": "038e1d7b1735c6a5436ee9eae095879e",
"id": 1
}
参数
jsonrpc:默认2.0,不用修改
method:指定api的方法
params:请求的参数。其中host是主机名称,即zabbix页面上显示的名字。interfaces是主机的真实信息,包括类型、ip地址和端口等。groups主机添加时加入的组,这个必须指定。templates表示添加主机时使用的zabbix模板id,可选,建议添加常用模板id号 。inventory资产管理,这个我没有添加。
auth:登陆后的sessionid号
id:操作的id号,这个具体什么作用没有深入研究。请求id是什么号,返回时显示什么号。
创建成功后返回内容如下:
{
"jsonrpc": "2.0",
"result": {
"hostids": [
"107819"
]
},
"id": 1
}
python调用
了解zabbix的api后,用python实现还是比较简单,输入参数,发起请求,返回结果。
用户登陆退出代码类似如下:
def login():
url = settings.ZABBIX_URL+"/api_jsonrpc.php"
data = json.dumps(
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": settings.ZABBIX_USERNAME,
"password": settings.ZABBIX_PASSWORD
},
"id": 0
})
result = requestUrl(url, data)
return result
def logout(sessionid):
url = settings.ZABBIX_URL+"/api_jsonrpc.php"
data=json.dumps(
{
"jsonrpc": "2.0",
"method": "user.logout",
"params": [],
"id": 1,
"auth": sessionid
}
)
return requestUrl(url, data)
创建主机的代码类似如下:
def genHost(sessionid,ip,groupids):
url = settings.ZABBIX_URL+"/api_jsonrpc.php"
groups_list=[]
for groupid in groupids:
groups_list.append({"groupid":groupid})
params_dict={
"host": ip,
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": ip,
"dns": "",
"port": "10050"
}
],
"groups": groups_list,
"templates": [
{
"templateid": "10114"
}
],
}
data=json.dumps(
{
"jsonrpc": "2.0",
"method": "host.create",
"params": params_dict,
"auth": sessionid,
"id" : 3
})
return requestUrl(url, data)
更新IP的时候写的比较麻烦,需要先分别获取hostid和hostinterfaceid,然后再分别调用host.update和hostinterfa.update方法修改。
参考连接:
https://www.zabbix.com/documentation/2.4/manual/api/reference/host
Zabbix API
Zabbix API中主要用到host.create,host.delete,host.update,host.get和hostinterface.update方法。下面已create为例做下简单使用说明。
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "50"
}
],
"templates": [
{
"templateid": "20045"
}
],
"inventory": {
"macaddress_a": "01234",
"macaddress_b": "56768"
}
},
"auth": "038e1d7b1735c6a5436ee9eae095879e",
"id": 1
}
参数
jsonrpc:默认2.0,不用修改
method:指定api的方法
params:请求的参数。其中host是主机名称,即zabbix页面上显示的名字。interfaces是主机的真实信息,包括类型、ip地址和端口等。groups主机添加时加入的组,这个必须指定。templates表示添加主机时使用的zabbix模板id,可选,建议添加常用模板id号 。inventory资产管理,这个我没有添加。
auth:登陆后的sessionid号
id:操作的id号,这个具体什么作用没有深入研究。请求id是什么号,返回时显示什么号。
创建成功后返回内容如下:
{
"jsonrpc": "2.0",
"result": {
"hostids": [
"107819"
]
},
"id": 1
}
python调用
了解zabbix的api后,用python实现还是比较简单,输入参数,发起请求,返回结果。
用户登陆退出代码类似如下:
def login():
url = settings.ZABBIX_URL+"/api_jsonrpc.php"
data = json.dumps(
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": settings.ZABBIX_USERNAME,
"password": settings.ZABBIX_PASSWORD
},
"id": 0
})
result = requestUrl(url, data)
return result
def logout(sessionid):
url = settings.ZABBIX_URL+"/api_jsonrpc.php"
data=json.dumps(
{
"jsonrpc": "2.0",
"method": "user.logout",
"params": [],
"id": 1,
"auth": sessionid
}
)
return requestUrl(url, data)
创建主机的代码类似如下:
def genHost(sessionid,ip,groupids):
url = settings.ZABBIX_URL+"/api_jsonrpc.php"
groups_list=[]
for groupid in groupids:
groups_list.append({"groupid":groupid})
params_dict={
"host": ip,
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": ip,
"dns": "",
"port": "10050"
}
],
"groups": groups_list,
"templates": [
{
"templateid": "10114"
}
],
}
data=json.dumps(
{
"jsonrpc": "2.0",
"method": "host.create",
"params": params_dict,
"auth": sessionid,
"id" : 3
})
return requestUrl(url, data)
更新IP的时候写的比较麻烦,需要先分别获取hostid和hostinterfaceid,然后再分别调用host.update和hostinterfa.update方法修改。
参考连接:
https://www.zabbix.com/documentation/2.4/manual/api/reference/host
相关文章推荐
- html表单结合php实现上传文件功能并且监控文件上传的进度
- python调用zabbix api 实现主机添加等功能
- python使用pyhook监控键盘并实现切换歌曲的功能
- python实现zabbix批量监控WEB网站和批量监控主机端口
- Python:通过摄像头实现的监控功能
- Python WXPY实现微信监控报警功能的代码
- 使用Flask结合python实现多台服务的内存监控
- Python:通过摄像头实现的监控功能
- python使用pyhook监控键盘并实现切换歌曲的功能
- java和python结合项目,实现ajax+echarts显示端口占用数监控
- Zabbix agent自动注册功能实现主机批量监控
- 通过DBUtils和C3P0结合简单实现增删改功能简化使用JDBC
- Python:通过摄像头实现的监控功能
- Python结合Zabbix模板的自动发现功能监控RabbitMQ队列是 5b4 否正常运行并自动添加触发器
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- S3c2410-linux实现网络视频监控功能
- ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
- S3c2410-linux实现网络视频监控功能
- extremetable+hibernate实现分页 关于结合hibernate后台数据分页和eXtremeTable分页功能的使用