前言

今天写了一个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的更多相关文章

  1. python3 调用zabbix API实现批量增加删除主机,主机各种监控项------实战

    在以前的博客中谈到了利用zabbix接口来对主机进行批量的增删改查 这里在不用环境中实战遇到了不同问题,这里记录下来以便后续review 以下为实战中获取token的代码,在zabbix标准接口文档中 ...

  2. python 调用zabbix api接口实现主机的增删改查

    python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools()  调用zabbi ...

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

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

  4. 关于python调用zabbix api接口

    因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...

  5. 利用python3 调用zabbix接口完成批量加聚合图形(screens)

    在上一篇博客中,我们完成的利用python3 调用zabbix接口批量增加主机,增加主机的item,增加主机的图形! 接下来我们完成批量增加主机的screen 首先我们要增加screen需要哪些参数呢 ...

  6. 使用Python调用Zabbix API

    Zabbix API官方文档: https://www.zabbix.com/documentation/4.0/zh/manual/api 1.向 api_jsonrpc.php 发送HTTP_PO ...

  7. Python调用zabbix API批量添加主机 (读取Excel)

    本文转载自:http://blog.mreald.com/178 Zabbix可以通过自发现添加主机,不过有时候不准确,通过API添加会更加准确! 脚本使用的跟zabbix相关的内容.参考的是zabb ...

  8. python调用zabbix接口实现Action配置

    要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...

  9. zabbix API基本使用方法介绍

    前言: 以下内容根据zabbix 3.2官方文档总结:https://www.zabbix.com/documentation/3.2/manual/api 此文档只是简单的介绍API的基本使用,关于 ...

随机推荐

  1. idea本地跑代码和链接开发机设置

  2. How to solve “Dynamic Web Module 3.1 requires Java 1.7 or newer” in Eclipse

    How to solve “Dynamic Web Module 3.1 requires Java 1.7 or newer” in Eclipse Last updated on June 20t ...

  3. 如何解决python 图表中文显示乱码问题(matlplotlib 包)

    目前搜到的是,下载一个字体到程序路径,设置成默认字体.  https://blog.csdn.net/irene_loong/article/details/68955485 #图表显示中文设置 im ...

  4. C# 设置Excel数字格式

    数字格式使指能够控制Excel单元格中数字如何显示的格式字符串.例如,我们可以对数字12345应用数字格式“0.00”,使之显示为“12345.00”.在例如对数字12345应用“¥0.00”格式,使 ...

  5. tensorflow实战系列(四)基于TensorFlow构建AlexNet代码解析

    整体流程介绍: 我们从main函数走,在train函数中,首先new了一个network;然后初始化后开始训练,训练时设定设备和迭代的次数,训练完后关闭流程图. 下面看network这个类,这个类有许 ...

  6. 预浸料(Prepreg,PreimpregnatedMaterials)

    预浸料(Prepreg,PreimpregnatedMaterials),是把基体(Matrix)浸渍在强化纤维(Reinforced Fiber)中制成的预浸片材产品,是复合材料的中间材料.

  7. CSS: pseudo-classes and pseudo-elements

    1.Definition: pseudo-classes The pseudo-class concept is introduced to permit selection based on inf ...

  8. quick pdf library控件

    quick pdf library库只能在windows环境下运行 1.下载quick pdf library 2.注册控件 进入cmd  regsvr32 "C:\Program File ...

  9. Halcon示例:bottlet.hdev 光学字符识别(创建OCR)

    * * Training of the OCR* The font is used in "bottle.hdev"* * * Step 0: PreparationsFontNa ...

  10. 【Django】网页跳转的问题

    这两天有个比较奇怪了问题困扰着我,就是网页跳转之后页面没有变化,虽然url已经变了,但是页面还是原来的,只是表单数据清空了 就是http://127.0.0.1:8000/signup_signin/ ...