02: zabbix API 基本操作

1.1 zabbix api常用操作

#! -*-  coding:utf8 -*-
import urllib2
import json
#定义URL账户密码
url = ‘http://1.1.1.5/zabbix/api_jsonrpc.php‘
username = ‘Admin‘
password = ‘1‘
header = {"Content-Type": "application/json"}

################################ 一:登陆脚本 login.py  ###########################

#1、定义通过HTTP方式访问API地址的函数,后面每次请求API的各个方法都会调用这个函数
def requestJson(url,values):
    data = json.dumps(values)
    req = urllib2.Request(url, data, {‘Content-Type‘: ‘application/json-rpc‘})
    response = urllib2.urlopen(req, data)
    output = json.loads(response.read())
    try:
        message = output[‘result‘]
    except:
        message = output[‘error‘][‘data‘]
        print message
        quit()

    return output[‘result‘]

#2、API接口认证的函数,登录成功会返回一个Token
def authenticate(url, username, password):
    values = {‘jsonrpc‘: ‘2.0‘,
              ‘method‘: ‘user.login‘,
              ‘params‘: {
                  ‘user‘: username,
                  ‘password‘: password
              },
              ‘id‘: ‘0‘
              }
    idvalue = requestJson(url,values)
    return idvalue  # 结果是一个token值:cc75ed2a314906a835ac0786266468ac

1、和2、zabbix认证和发送请求获取数据

# 3、获取所有报警信息
def trigger_get():
    values = (
        {
            "jsonrpc": "2.0",
            "method": "trigger.get",
            "params": {
                "output": [
                    "host",
                    "description",
                    "triggerid",
                    "eventid",
                    "templateids"
                ],
                "selectGroups": [
                    "name"
                ],
                "selectHosts": [
                    "name",
                    "host"
                ],
                "selectItems": [
                    "name",
                    "lastvalue",
                    "units"
                ],
                "filter": {
                    "value": 1
                },
                "monitored": 1,
                "selectLastEvent": "extend",
                "expandComment": 1,
                "expandDescription": 1,
                "sortfield": "priority",
                "sortorder": "DESC",
                "withLastEventUnacknowledged":1
            },
            "auth":auth,  # 获取认证session值
            "id": 1
        }
    )
    result = requestJson(url,values)
    return result

3、获取所有报警信息

# 4、获取所有报警信息(简单信息)
def triggerget():
    values = {‘jsonrpc‘: ‘2.0‘,
           "method":"trigger.get",
               "params": {
                        "output": [
                        "triggerid",
                        "description",
                        "priority"
                        ],
              "filter": {
                         "value": 1
                         },
              "expandData":"hostname",
              "sortfield": "priority",
              "sortorder": "DESC"
            },
              ‘auth‘: auth,
              ‘id‘: 1,
              }
    output = requestJson(url,values)
    return output
‘‘‘ 获取简单的报警信息
[{
    u ‘priority‘: u ‘3‘,
    u ‘triggerid‘: u ‘15579‘,
    u ‘description‘: u ‘登录用户超过2人报警测试‘
}, {
    u ‘priority‘: u ‘3‘,
    u ‘triggerid‘: u ‘13491‘,
    u ‘description‘: u ‘Zabbix agent on {HOST.NAME} is unreachable for 5 minutes‘
}]
‘‘‘

4、获取所有报警信息(简单信息)

# 5、定义通过ip获取主机id的函数
def ipgetHostsid(ip=‘1.1.1.3‘):
    values = {‘jsonrpc‘: ‘2.0‘,
              ‘method‘: ‘host.get‘,
              ‘params‘: {
                  ‘output‘: [ "host" ],
                  ‘filter‘: {
                      ‘ip‘: ip
                  },
              },
              ‘auth‘: auth,
              ‘id‘: ‘3‘
              }
    output = requestJson(url,values)
    return output  # [{u‘host‘: u‘1.1.1.3‘, u‘hostid‘: u‘10255‘}]

5、定义通过ip获取主机id的函数

# 6、定义通过主机id获取开启关闭agent监控
def idupdatehost(status=0,hostid=None):
    # status=0 启用agent,status=1 禁用agent
    hostid = ipgetHostsid(ip=‘1.1.1.3‘)[0][‘hostid‘]
    values = {‘jsonrpc‘: ‘2.0‘,
              ‘method‘: ‘host.update‘,
              ‘params‘: {
                  "hostid": hostid,
                  "status": status
              },
              ‘auth‘: auth,
              ‘id‘: ‘4‘
              }
    output = requestJson(url,values)
    return output

6、定义通过主机id获取开启关闭agent监控

# 7、定义通过项目hostid获取itemid函数
def getHostsitemsid(hostid=None, itemsname=None):  # 查询items表
    hostid = ipgetHostsid(ip=‘1.1.1.3‘)[0][‘hostid‘]
    itemsname = ‘log_user‘
    values = {‘jsonrpc‘: ‘2.0‘,
              ‘method‘: "item.get",
              "params": {
                  "output": ["itemids","name","key_"],  # 输出什么值可以在这里填写
                  "hostids": hostid,
                  "filter": {   # 如果没有给 filter 参数那么就会过滤出这个主机关联的所有item
                      "key_": itemsname,
                  },
              },

              ‘auth‘: auth,
              ‘id‘: ‘5‘
              }
    output = requestJson(url, values)
    if len(output) == 0:
        return output
    else:
        return output[0][‘itemid‘]  # 28337 获取
        # return output  # [{u‘itemid‘: u‘28337‘, u‘key_‘: u‘log_user‘, u‘name‘: u‘login_user‘}]

7、定义通过项目hostid获取itemid函数

# 8、定义通过itemid获取监控项目最近n次,值信息的函数
def getHostsitemsvalue(itemid=None):
    itemid = getHostsitemsid()
    values = {‘jsonrpc‘: ‘2.0‘,
              ‘method‘: "history.get",
              "params": {
                  "output": "extend",
                  "history": 3,
                  "itemids": itemid,
                  "sortfield": "clock",
                  "sortorder": "DESC",
                  "limit": 1,  # 限制显示多少条历史记录
              },

              ‘auth‘: auth,
              ‘id‘: ‘6‘
              }
    output = requestJson(url, values)
    if len(output) == 0:
        return output
    else:
        # return output[0]["value"]  # 3    这个监控项获取的最近一次值为 3
        return output  # [{u‘itemid‘: u‘28337‘, u‘ns‘: u‘205638409‘, u‘value‘: u‘3‘, u‘clock‘: u‘1527743117‘}]

8、定义通过itemid获取监控项目最近n次,值信息的函数

# 9、定义通过 组名 获取groupid 等信息
def groupnameGroupid(groupname=None):
    groupname = ‘Nginx‘
    values = {‘jsonrpc‘: ‘2.0‘,
              ‘method‘: ‘hostgroup.get‘,
              "params": {
                    "output": "extend",
                    "filter": {
                        "name": [
                            groupname
                        ]
                    }
                },
              ‘auth‘: auth,
              ‘id‘: ‘11‘
              }
    output = requestJson(url,values)
    return output  # [{u‘internal‘: u‘0‘, u‘flags‘: u‘0‘, u‘groupid‘: u‘15‘, u‘name‘: u‘Nginx‘}]

9、定义通过 组名 获取groupid 等信息

# 10、定义通过hostid 和 图形名称 获取图形id graphid的函数
def getgraphid(hostid=None,graphname=None):
    graphname = ‘loguser‘
    values = {‘jsonrpc‘: ‘2.0‘,
                      ‘method‘: ‘graph.get‘,
                      ‘params‘: {
                              "output": [‘graphid‘,‘name‘],
                              # "output": "extend",
                              "hostids": hostid,
                              "sortfield": "name",
                      ‘filter‘: {
                                    "name": graphname
                              },

                      },
                      ‘auth‘: auth,
                      ‘id‘: ‘14‘
                      }
    output = requestJson(url,values)
    return output  # [{u‘graphid‘: u‘811‘, u‘name‘: u‘loguser‘}]

10、定义通过hostid 和 图形名称 获取图形id graphid的函数

# 11、获取这个zabbix server监控的所有主机信息
def getallhost():
    values = {
            "jsonrpc": "2.0",
            "method": "host.get",
            "params": {
                "output": [
                    "hostid",
                    "host"
                ],
                "selectInterfaces": [
                    "interfaceid",
                    "ip"
                ]
            },
            "id": 2,
            "auth": auth
        }
    output = requestJson(url,values)
    return output
‘‘‘
[{
    u ‘host‘: u ‘Zabbix server‘,
    u ‘hostid‘: u ‘10084‘,
    u ‘interfaces‘: [{
        u ‘interfaceid‘: u ‘1‘,
        u ‘ip‘: u ‘1.1.1.5‘
    }]
}, {
    u ‘host‘: u ‘1.1.1.3‘,
    u ‘hostid‘: u ‘10255‘,
    u ‘interfaces‘: [{
        u ‘interfaceid‘: u ‘3‘,
        u ‘ip‘: u ‘1.1.1.3‘
    }]
}]
‘‘‘

11、获取这个zabbix server监控的所有主机信息

原文地址:https://www.cnblogs.com/xiaonq/p/9116301.html

时间: 2024-10-28 14:15:15

02: zabbix API 基本操作的相关文章

HBase-java api 基本操作

使用的是完全分布式,详细信息为: 操作的Java 代码(抄的别人的) 1 package org.admln.hbase; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.hbase.HBaseConfiguration; 8 import org.apache.hadoop.hb

16.使用zabbix api创建screen

zabbix的screen功能可以把graph聚合起来,统一进行展示, 我们的需求是把同一个主机组的同一个item聚合起来,比如一个screen显示同一个组的所有主机的内存使用率,达到类似ganglia的效果, 由于服务器较多,所以我们调用zabbix api来进行创建. 参考地址如下:谢谢各位大牛 https://www.zabbix.org/wiki/Python_script_to_create_Screen_from_all_Items/Graphs_of_a_host http://c

HDFS API基本操作

对HDFS API基本操作都是通过 org.apache.hadoop.fs.FileSystem类进行的,以下是一些常见的操作: package HdfsAPI; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; i

zabbix api

一般架设好server以后都会通过web front 来添加host啊, 模版什么的,这就带来一个效率的问题,比如说我要一时间添加100台host 进去,这个时候有个api ,然后通过脚本来调用就爽了,zabbix的作者们早已想到了这点,api 1.8 这个版本以后就发布了.网上有比较好的教程,我这里就不写了.可以参考我很敬佩的一个人 itnihao的博文: http://itnihao.blog.51cto.com/1741976/1343524 python还是非常好用的,调用api 什么的

ZABBIX API简介及使用

API简介 Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时.很难想象管理数千台服务器而没有自动化是多么的困难.Zabbix API为批量操作.第三方软件集成以及其他作用提供可编程接口. Zabbix API是在1.8版本中开始引进并且已经被广泛应用.所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上.Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作.它允许你通过JSON RPC协议来创建.更新和获

用zabbix生成awstats图表以及通过Python调zabbix API自动化操作

awstats作为一款日志分析软件,功能不错,但是界面过于简单,也没有图表功能,这里我采取了一种变通的方法,将awstats的分析结果(pv.hits(文件数).bandwidth.visits(独立ip))添加到zabbix,并通过zabbix生成趋势图表. 在前两篇文章中,我们队awstats的使用及其工作方式进行了简明扼要的介绍:awstats对每个站点进行分析之后,会生成一个"awstats012016.txt"格式的"数据库"文件:awstats的展示页面

通过Zabbix API 添加host

脚本内容: #!/usr/bin/python #-*- coding:utf8 -*- import json,sys,argparse from zabbix_api import ZabbixAPI server = "http://172.16.206.128/zabbix" username = "Admin" password = "zabbix" zapi = ZabbixAPI(server=server, path="

使用zabbix API估算服务器磁盘空间可用天数

代码github位置. 主要功能:获取zabbix某个分组下的所有机器,计算这些机器的磁盘剩余空间按照"自然"增长还可以使用多少天. 主要流程: 获取某个group下所有机器.     def host_get_by_groupid(self,groupid):         data = json.dumps(                 {                     "jsonrpc": "2.0",           

基于zabbix API添加监控主机

由于zabbix监控的主机虽为同一个业务,但是由于其跨机房并且网络为为16位,两个机房导致zabbix的自动添加扫描的主机数量就差不多有12w多个,严重影响其效率和性能. 使用zabbix API的基本步骤如下: 连接http://x.x.x.x/api_jsonrpc.php,(在zabbix网页文件的目录下为api_jsonrpc.php),提供用户名和密码,并标识HTTP头部"Content-Type":"application/json",HTTP方法为po