利用ZABBIX的RPC-JSON作API扩展应用示例

简介:

计划将ZABBIX的一些状态可以在另一个应用的显示GRAPH及链接。

故而在网上找了几个文档,作了一个测试。

https://www.zabbix.com/documentation/2.4/manual/api/reference/graph/get

http://www.xue163.com/334/1654/3340800.html

 

复制代码
#!/usr/bin/env python
#coding: utf-8

import requests
import json


class zabbixtools:


    def __init__(self):
        self.url = "http://10.1.1.1/api_jsonrpc.php"
        self.headers = {"Content-Type": "application/json"}
        self.authID = self.user_login()

        
    def user_login(self):
        data = {
            "jsonrpc": "2.0",
            "method": "user.login",
            "params": {
                "user": "guest",
                "password": "xxxxxxxx"
                },
            "id": 0
            }
        try:
            response = requests.post(
                self.url, data=json.dumps(data), headers=self.headers).json()
        except requests.RequestException as e:
            print(e)
        else:
            authID = response['result']
            return authID


    def host_get(self,hostname):
        data = {
            "jsonrpc": "2.0",
            "method": "host.get",
            "params": {
                "output": "extend",
                "filter": {
                    "host": [hostname,]
                    }
                },
            "auth": self.authID,
            "id": 1
            }
        try:
            response = requests.post(
                self.url, data=json.dumps(data), headers=self.headers).json()
        except requests.RequestException as e:
            print(e)
        else:
            hostID = response['result'][0]['hostid']
            return hostID

    def graph_get(self,hostid):
        data = {
            "jsonrpc": "2.0",
            "method": "graph.get",
            "params": {
                "output": "extend",
                "hostids": hostid,
                "sortfield": "name"
                },
            "auth": self.authID,
            "id": 2
            }
        try:
            response = requests.post(
                self.url, data=json.dumps(data), headers=self.headers).json()
        except requests.RequestException as e:
            print(e)
        else:
            graphID = []
            
            for item in response['result']:
                graph_dict = {}

                graph_dict[item['graphid']] = item['name']
                graphID.append(graph_dict)
            #print graphID
            return graphID
        
        

        

def main():
    test = zabbixtools()
    hostID = test.host_get("cnsz032955")
    graphID = test.graph_get(hostID)
    for graph_item in graphID:
        for key in graph_item:
            print graph_item[key],": http://10.1.1.1/charts.php?hostid={hostID}&graphid={graphID}".format(hostID=hostID, graphID=key)

if __name__ == "__main__":
    main()
复制代码

载图:

 

目录
相关文章
|
30天前
|
JSON 程序员 数据格式
深入探索 “JSON for Modern C++“:安装、构建与应用
深入探索 “JSON for Modern C++“:安装、构建与应用
40 0
|
1月前
|
缓存 JavaScript 算法
活用 Composition API 核心函数,打造卓越应用(下)
活用 Composition API 核心函数,打造卓越应用(下)
|
1月前
|
存储 JavaScript API
活用 Composition API 核心函数,打造卓越应用(上)
活用 Composition API 核心函数,打造卓越应用(上)
|
21天前
|
JSON JavaScript 前端开发
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(中)
解锁JSON的奇妙世界:从基础到高级应用,一文搞懂JSON的妙用(中)
|
1月前
|
人工智能 关系型数据库 Serverless
Serverless 应用引擎常见问题之API生成的函数镜像改为自定义的镜像如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
39 3
|
1天前
|
人工智能 API 开发者
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
4 0
|
14天前
|
JSON 监控 API
在API接口对接中关键示例问题(1)
在API接口对接中,有几个关键的问题需要注意,以确保接口的稳定性、安全性和易用性。以下是这些问题及部分示例代码的简要概述
|
16天前
|
XML JSON JavaScript
Java中XML和JSON的比较与应用指南
本文对比了Java中XML和JSON的使用,XML以自我描述性和可扩展性著称,适合结构复杂、需验证的场景,但语法冗长。JSON结构简洁,适用于轻量级数据交换,但不支持命名空间。在Java中,处理XML可使用DOM、SAX解析器或XPath,而JSON可借助GSON、Jackson库。根据需求选择合适格式,注意安全、性能和可读性。
26 0
|
22天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
28天前
|
安全 API 开发者
构建高效可扩展的RESTful API服务
在数字化转型的浪潮中,构建一个高效、可扩展且易于维护的后端API服务是企业竞争力的关键。本文将深入探讨如何利用现代后端技术栈实现RESTful API服务的优化,包括代码结构设计、性能调优、安全性强化以及微服务架构的应用。我们将通过实践案例分析,揭示后端开发的最佳实践,帮助开发者提升系统的响应速度和处理能力,同时确保服务的高可用性和安全。
27 3

推荐镜像

更多