python3调用zabbix api
前言
今天写了一个zabbix api,这里整理一下,过程中自己也学习了一些东西。
需求
我们需要查一个文件内容如下:
cat /ops/flume_hosts
node1
node2
需要把这个文件里面的host添加到flume的group里面并且关联flume的template做监控,以后我们部署flume的机器只需要改这个文件,然后一执行这个命令就OK了
部署与实施
写了小一天,又把代码该删删该减减,做成了如下样子(用了一个requests模块,python版本是3.6):
#!/opt/python3/bin/python3
# -*- coding: utf-8 -*-
# Copyright (c) 2017 - hongzhi.wang
'''
Author: hongzhi.wang
Create Date: 2017/10/16
Modify Date: 2017/10/16
'''
import json
import requests
REQUEST_URL = "https://192.168.3.3/api_jsonrpc.php"
FLUME_GROUP_ID = 322
FLUME_TEMPLATE_ID = 108
LOGIN_INFO = {
"user": "admin",
"password": "admin"
}
FLUME_HOST_FILE = "/ops/flume_hosts"
def zabbix_post(method, params, auth=None):
res = requests.post(
url=REQUEST_URL,
json={
"jsonrpc": "2.0",
"method": method,
"params": params,
"id": 1,
"auth": auth
}
)
print(method, res.status_code)
return json.loads(res.text)
with open(FLUME_HOST_FILE) as f:
host_list = [host.strip() for host in f]
auth_key = zabbix_post(method="user.login", params=LOGIN_INFO)["result"]
try:
host_id_dict_list = zabbix_post(
method="host.get",
params={
"output": ["hostid"],
"filter": {
"host": host_list
}
},
auth=auth_key,
)["result"]
host_id_list = [item.get("hostid") for item in host_id_dict_list]
zabbix_post(
method="hostgroup.massupdate",
params={
"groups": [
{
"groupid": FLUME_GROUP_ID
}
],
"hosts": host_id_dict_list
},
auth=auth_key
)
zabbix_post(
method="template.update",
params={
"templateid": FLUME_TEMPLATE_ID,
"hosts": host_id_list
},
auth=auth_key
)
finally:
zabbix_post(
method="user.logout",
params=[],
auth=auth_key
)
总结
这次开始遇到的问题是登录进去,就会有authkey(用postman测试的,每个接口都测试了几次,发现半个月前的authkey还能用。。。),如果不logout的话,会存很多,仔细查了一下网上的资料,这个authkey是存在数据库的sessions表里面,程序会定期清除一年前的authkey,所以如果量不大的话可以等着自动删除,这个没有去看源码确认。
python3调用zabbix api的更多相关文章
- python3 调用zabbix API实现批量增加删除主机,主机各种监控项------实战
在以前的博客中谈到了利用zabbix接口来对主机进行批量的增删改查 这里在不用环境中实战遇到了不同问题,这里记录下来以便后续review 以下为实战中获取token的代码,在zabbix标准接口文档中 ...
- python 调用zabbix api接口实现主机的增删改查
python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools() 调用zabbi ...
- python 调用zabbix api实现查询主机信息,输出所有主机ip
之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python ...
- 关于python调用zabbix api接口
因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...
- 利用python3 调用zabbix接口完成批量加聚合图形(screens)
在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...
- 使用Python调用Zabbix API
Zabbix API官方文档: https://www.zabbix.com/documentation/4.0/zh/manual/api 1.向 api_jsonrpc.php 发送HTTP_PO ...
- Python调用zabbix API批量添加主机 (读取Excel)
本文转载自:http://blog.mreald.com/178 Zabbix可以通过自发现添加主机,不过有时候不准确,通过API添加会更加准确! 脚本使用的跟zabbix相关的内容.参考的是zabb ...
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- zabbix API基本使用方法介绍
前言: 以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api 此文档只是简单的介绍API的基本使用,关于 ...
随机推荐
- Web缓存机制
Web 缓存的出现主要是为了弥补cookie带来的一些局限,当数据严格控制在客户端时,可以不用通过HTTP来持续得将数据发给服务器. 主要使用比较多的就是sessionStorage和localSto ...
- 收藏 —— KVM网络虚拟化
http://www.cnblogs.com/CloudMan6/p/5240770.html http://www.cnblogs.com/CloudMan6/p/5289590.html
- Rhythmk 一步一步学 JAVA(6): JSP 语法学习笔记
1.修改JSP页面模版: 找到MyEclips安装目录,搜索“Jsp.vtl”,找到该文件修改编码,以及一些不需要用到的代码. 2.查找项目生成的Servlet文件路径: 查看当前项目父级目录搜索 . ...
- 与引导文件系统/vmfs/devices..的备用设备之间的连接已丢失,主机配置更改将不会保存到持久存储中
Cisco UCS 刀片服务器与NETAPP存储 1.异常问题描述: 2.可能原因:存储链路异常 比如断电恢复.光纤线本身的问题.模块的问题.环境温度的问题.bug之类的都有可能 3.处理: ...
- ios unicode
转义字符,反斜扛\ \u 后跟4位16进制数 \U 后跟8位16进制数
- week06 12 我们准备数据 前端调用rpc 前后端联调一下
用postman发送请求 出现一个问题 我在return结果前 要将数据转换成字典 所以我们用json.dumps()后再json.load()回来 这样就避免了这个问题 因为数据结构的数据 比如li ...
- jQuery.extend 与 jQuery.fn.extend
extend方法为jQuery对象的核心之一,语法如下: jQuery.extend([deep], target, object1, [objectN]),返回值Object. 概述:用一个或多个其 ...
- react mobx 装饰器语法配置
1.弹出项目配置 npm run eject 此处注意,若弹出项目配置失败,请先执行以下两行代码(我的项目执行上一句都会报错,所以都会执行) 1.git add . 2.git commit -m & ...
- linux文本格式转换
问题:在linux环境下面执行SH的可执行文件. -bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory 解决 ...
- linux环境下tomcat安装
1.安装tomcat前安装jdk(前提下) 2.下载安装包apache-tomcat-8.0.36.tar.gz 解压:tar -zxvf apache-tomcat-8.0.36.tar.gz ...