zoukankan      html  css  js  c++  java
  • zabbix api python使用

    API使用

    zabbix官网文档:https://www.zabbix.com/documentation/2.2/manual/api

    Zabbix API是基于JSON-RPC 2.0规格,具体实现可以选择任何自己爱好的编程语言,可以采用Perl、Ruby、PHP之类的。

    本文已python为例。python zabbix api模块较多,使用较为方便。

    下面是各个语言zabbix模块及github连接,可共参考。

     

    数据流程

    下面的流程图代表了Zabbix API 工作的典型工作流。验证(方法user.login)是获取验证ID的强制步骤。这个ID又允许我们调用API提供的任何权限允许的方法来进行操作。在之前的例子中没有提到user.logout方法,这也是一次验证ID能够重复使用的原因所在。使用user.logout方法后将会使验证ID失效,后面的操作将不能再使用此ID。

    zabbix%E6%95%B0%E6%8D%AE%E6%B5%81%E7%A8%

    Python

    • py-zabbixby Alexey Dubkov - Zabbix Modules for Python (PyPI py-zabbix, no python3)

    • ZabbixPythonApiby Frank Yao - Zabbix API for Python (no python3)

    • zabbixby gescheit - a Python library (PyPI zabbix-api)

    • PyZabbixby Luke Cyca - a Python module (PyPI pyzabbix, depends-on requests)

    • zabbix_apiby Grigoriy Netsman - scripts for creating and deleting hosts (depends on zabbix-api)

    • zabbix-clientby Jesús Losada - a Python library (PyPI zabbix-client)

    • zabbix-api-erigonesby Erigones - a Python library (PyPI zabbix-api-erigones)

    • pyZabbixSenderby Kurt Momberg - a zabbix_sender replacement for Python.

    Ruby

    • Zabbix APIby nelsonab (latest code seems to be on github) - a Ruby wrapper

    • Rubixby Dhruv Bansal - a Ruby library for working with the API and both retrieving and sending data to Zabbix server

    • zabbixapiby Express 42 - a Ruby gem, see README on github

    • zabbyby Farzad Farid - a Ruby library and client for Zabbix

    Perl

    • Zabbix-APIby SFR-ZABBIX - Perl distribution to access the Zabbix API

    • ZabbixAPIby Tomohiro Ikeda - a Perl library

    • Zabipiby Andrey Konovalov - Monitoring::Zabipi module that lets you use official Zabbix API documentation to create Perl applications interacting with Zabbix. Contains additional methods (such as queue.get) and hacks (such as expandNames parameter for item.get). Many examples of usage included in distributive.

    • Net-Zabbixby ksyz - Perl wrapper for Zabbix API

    • Zabbix-API-Clientby Matsumoto Ryosuke - Zabbix API client for Perl

    Java

    • zabbix-api by hengyunabc - Java library to access Zabbix API

    • zabbix-sender by hengyunabc - Java library to use Zabbix sender protocol

    PHP

    • PhpZabbixApi by confirm IT solutions GmbH - a PHP wrapper class and a wrapper code generator

    • microzabbixapiconnector by Alex Kashin - a Micro-Zabbix-Api-Connector with proxy usage support

    PowerShell

    • ZabbixPosh Api by simsaull - A Zabbix PowerShell Module

    • Zabbix by Benjamin RIOUAL - An other Zabbix module, based on Invoke-RestMethod

    JavaScript

    • jqzabbix by Kodai Terashima - jQuery plugin for Zabbix API

    • zabbix.js by Kristoffer Berdal - a library based around request.js

    C#

    Go

    • zabbixby Ryan Day - Zabbix API for Go

    • go-zabbix "by Alexey Dubkov" - Zabbix Packages for Go

    • zabbix-senderAlexey Palazhchenko - push data to Zabbix server's trapper items from Go application

    • zabbix.goAlexey Palazhchenko - Zabbix API for Go

     转自 ··https://www.cnblogs.com/jiayun/archive/2015/12/17/5054915.html

    自动化简介

        目前我们使用pyzabbix模块,用json定义template 文件。

           下文讲解用法(api 参考官网手册):

    复制代码
      1 #!/usr/bin/env python
      2 #jiayun
      3 #version 1.3
      4 from pyzabbix import ZabbixAPI
      5 import json
      6 import os,sys
      7 import re,time
      8 import logging
      9 rule = json.load(file('D:pycharmprojectREGION Manage Scriptqn_rolerule.json'))    #template 文件
     10 def login():
     11         zapi= ZabbixAPI("http://10.4.0.247")                                          #登录zabbix
     12         zapi.login("admin","zabbix")
     13         return zapi
     14 def get_hostgroups(group_name):
     15         return zapi.hostgroup.get(search={"name":group_name },output="extend")        #搜索输入的组别,提取组id
     16 def get_hosts(groupid):
     17         groupids = [groupid]
     18         return zapi.host.get(groupids=groupids,output="extend")                       #返回该组id 下的所有host 信息
     19 def get_drules():
     20         return zapi.drule.get(output="extend")
     21 def get_templates_by_names(template_names):
     22         return zapi.template.get(filter={"host": template_names})
     23 def create_group(group_name):                                                         #创建组
     24     if not zapi.hostgroup.exists(name=group_name):
     25         zapi.hostgroup.create(name=group_name)
     26 def create_host(group_name,host_name,ip):                                             #创建主机并附加指定模板
     27     groups=get_hostgroups(group_name)
     28     host_name=host_name.lower()
     29     ip_tail=ip.split(".")[-1]
     30     domain = "server-"+ ip_tail +".0." + host_name + ".ustack.in"
     31     for hostgroup in groups:
     32         groupid=hostgroup['groupid']
     33         ip_tail=ip.split(".")[-1]
     34         role = None
     35         for ru in rule:
     36             range = rule[ru]['range']
     37             if "-" in range:
     38                 head = range.split("-")[0]
     39                 tail = range.split("-")[1]
     40                 if int(ip_tail) <= int(tail) and int(ip_tail) >=int(head):
     41                     role = ru
     42             else:
     43                 if ip_tail == range:
     44                     role = ru
     45         template_names = rule[role]['templates']
     46         template_ids = get_templates_by_names(template_names)
     47         print domain,ip,groupid,template_ids
     48         zapi.host.create(host=domain,interfaces=[{
     49             "type":1,
     50             "main":1,
     51             "useip":1,
     52             "ip":ip,
     53             "dns":"",
     54             "port":'10050'
     55         }],groups=[{"groupid":groupid}],templates=template_ids)
     56         print  "Add Successfull!!!!!"
     57         #logging.info("%s,%s,%s,%s Add Successfull!!!!!"%(domain,ip,groupid,template_ids))
     58 def create_macro(group_name,traffic,value):                                           #创建macro,不同主机有不同的macro
     59     groups=get_hostgroups(group_name)
     60     for group in groups:
     61         hosts=get_hosts(group['groupid'])
     62         for host in hosts:
     63             hostname=host["name"]
     64             hostid=host["hostid"]
     65             if not re.search("^server",hostname):continue
     66             m=re.search("[0-9]+",hostname).group()
     67             if m == "1":continue
     68             if m in ['64','65','66','67']:
     69                 zapi.host.update(hostid=hostid,macros=[{"macro":"{$INP}","value":"35000"},
     70                                                   {"macro":"{$OUP}","value":"35000"},
     71                                                   {"macro":"{$INT}","value":"%s"%traffic},
     72                                                   {"macro":"{$OUT}","value":"%s"%traffic},
     73                                                   {"macro":"{$PDISK}","value":"%s"%value}])
     74             else:
     75                 zapi.host.update(hostid=hostid,macros=[{"macro":"{$PDISK}","value":"%s"%value}])
     76             print hostname ,hostid,m,traffic,value
     77 if __name__ == "__main__":
     78     zapi=login()
     79     region="qn"
     80     host_list=["31","32","35","36","39","40","44","45","46","47","48","49","50","53","54","61","62","63","64","65",
     81                "68","69","70","71","72","73","74","75","76","77","79","80","81","82","83","84","85","86","87","88","89","90","91"]       #添加主机,不建议用discovery
     82     ip_list=host_list
     83     if type(ip_list) == str:
     84         print "%s Must be a list,please checking !!!"%sys.argv[2]
     85         sys.exit()
     86     group_name="Region [%s 0]"% region.upper()
     87     if not zapi.hostgroup.exists(name=group_name):
     88        create_group(group_name)
     89     ip={"qn":"10.4.0."}
     90     if region in ip:
     91         for num in ip_list:
     92             value="20"
     93             traffic="300M"
     94             ipaddress=ip[region]+str(num)
     95             print group_name,region,ipaddress
     96             create_host(group_name,region,ipaddress)                                  #传参至函数
     97             time.sleep(5)
     98             create_macro(group_name,traffic,value)
     99     else:
    100         print "you input region error,please checking"

  • 相关阅读:
    PyCharm配置 Git 教程
    Docker实践:基于python:3.7.1-stretch制作python镜像
    Docker开启远程安全访问
    Centos7安装apt-get
    Kubernetes 系列(二):在 Linux 部署多节点 Kubernetes 集群与 KubeSphere 容器平台
    微信小程序调试mock 数据,提示合法域名校验失败
    babel-plugin-import 配置多个组件按需加载时
    docker run -p 8070:80 -d nginx
    数据库的设计(E-R图,数据库模型图,三大范式)
    数据库 范式
  • 原文地址:https://www.cnblogs.com/lyh0301/p/10679833.html
Copyright © 2011-2022 走看看