zoukankan      html  css  js  c++  java
  • zabbix 功能之API化

    zabbix 功能之API化

     

    一:通过API,实现完全自动化添加删除agent、关联模板等操作:

    #官方文档:https://www.zabbix.com/documentation/3.0/manual/api

    #API提供两个功能,一个是查询,一个是管理

    1.1.提供用户密码密码验证并发送post请求到zabbix server端,获取result返回值token:

    [root@Zabbix tianqi]# curl -s -X POST -H 'Content-Type:application/json' -d '
    {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "user",
            "password": "password"
        },
        "id": 1
    }' http://zabbixhf.chinacloudapp.cn/zabbix/api_jsonrpc.php | python -m json.tool
    #以下为zabbix 返回的数据
    {
        "id": 1,
        "jsonrpc": "2.0",
        "result": "09238af2adacc132a3ad8e9226b33cac"
    }

    1.2.使用返回的token从zabbix server获取所有主机列表信息;

    [root@Zabbix tianqi]# curl -s -X POST -H 'Content-Type:application/json' -d '
    {
        "jsonrpc": "2.0",
        "method": "host.get",
        "params": {
            "output": ["host"]
        },
        "auth": "7df71c2fff700290629b53287c9aabf2",
        "id": 1
    }' http://zabbixhf.chinacloudapp.cn/zabbix/api_jsonrpc.php | python -m json.tool
    以下为返回的部分主机信息:
    {
        "id": 1,
        "jsonrpc": "2.0",
        "result": [
            {
                "host": "Zabbix server",
                "hostid": "10084"
            },
            {
                "host": "MongoDB1",
                "hostid": "10105"
            },
    
        ]
    }

    1.3.通过filter获取模板的指定信息:

    [root@Zabbix tianqi]# curl -s -X POST -H 'Content-Type:application/json' -d '
    {
        "jsonrpc": "2.0",
        "method": "template.get",
        "params": {
            "output": "extend",
            "filter": {
                "host": [
                    "Template OS Linux"
                ]
            }
        },
        "auth": "1ea06d6453877704252e480a94b94ca8",
        "id": 1
    }'  http://zabbixhf.chinacloudapp.cn/zabbix/api_jsonrpc.php | python -m json.tool
    {
        "id": 1,
        "jsonrpc": "2.0",
        "result": [
            {
                "available": "0",
                "description": "",
                "disable_until": "0",
                "error": "",
                "errors_from": "0",
                "flags": "0",
                "host": "Template OS Linux",
                "ipmi_authtype": "0",
                "ipmi_available": "0",
                "ipmi_disable_until": "0",
                "ipmi_error": "",
                "ipmi_errors_from": "0",
                "ipmi_password": "",
                "ipmi_privilege": "2",
                "ipmi_username": "",
                "jmx_available": "0",
                "jmx_disable_until": "0",
                "jmx_error": "",
                "jmx_errors_from": "0",
                "lastaccess": "0",
                "maintenance_from": "0",
                "maintenance_status": "0",
                "maintenance_type": "0",
                "maintenanceid": "0",
                "name": "Template OS Linux",
                "proxy_hostid": "0",
                "snmp_available": "0",
                "snmp_disable_until": "0",
                "snmp_error": "",
                "snmp_errors_from": "0",
                "status": "3",
                "templateid": "10001",
                "tls_accept": "1",
                "tls_connect": "1",
                "tls_issuer": "",
                "tls_psk": "",
                "tls_psk_identity": "",
                "tls_subject": ""
            }
        ]
    }

    2.通过python脚本进行调用API或token:

    yum install python-pip

    pip install requests #需要调用requests模块

    2.1:获取token的python脚本内容:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import requests
    import json
    
    url = 'http://zabbixhf.chinacloudapp.cn/zabbix/api_jsonrpc.php'
    post_data = {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "username",
            "password": "password"
        },
        "id": 1
    }
    post_header = {'Content-Type': 'application/json'}
    
    ret = requests.post(url, data=json.dumps(post_data), headers=post_header)
    
    zabbix_ret = json.loads(ret.text)
    if not zabbix_ret.has_key('result'):
        print 'login error'
    else:
        print zabbix_ret.get('result')

    2.3:执行结果:

    [root@Zabbix tianqi]# python zabbix_auth.py  
    a0f7b0452d488745030577fa47a6bf79

    3.通过API添加主机:

    2.3.1:#原理为在程序里面定义好主机名、IP、添加的组合关联的模板ID,然后同API提交请求添加,实现方式内容如下:

    #https://www.zabbix.com/documentation/3.0/manual/api  #官方文档

    [root@Zabbix tianqi]# curl -s -X POST -H 'Content-Type:application/json' -d '
    > {
    >     "jsonrpc": "2.0",
    >     "method": "host.create", #定义方法,N多钟
    >     "params": {
    >         "host": "API Add Host Test", #自定义添加后的agent的名称
    >         "interfaces": [
    >             {
    >                 "type": 1, #类型为1表示agent,2是SNMP,3是IMPI,4是JMX
    >                 "main": 1, #more接口
    >                 "useip": 1, #0是DNS,1是IP地址
    >                 "ip": "192.168.0.24", #添加的zabbix agent的IP地址
    >                 "dns": "",
    >                 "port": "10050" #agent端口
    >             }
    >         ],
    >         "groups": [
    >             {
    >                 "groupid": "2" #添加到的组的ID
    >             }
    >         ],
    >         "templates": [
    >             {
    >                 "templateid": "10001" #关联的模板的ID
    >             }
    >         ]
    >     },
    >     "auth": "f1cb833bf46bf2962b181f69b365ac6c", #超时后需要重新获取
    >     "id": 1
    > }' http://zabbixhf.chinacloudapp.cn/zabbix/api_jsonrpc.php | python -m json.tool:

    2.3.2:#执行结果:

     

    2.3.3:查看添加完成后的host信息:

    2.4:查看是否将主机添加完成并出图:

    2.4.1:主机添加完成效果如下:

     2.4.2:查看图形:

     

  • 相关阅读:
    Python加载声音
    Python 的文件处理
    java学习总结
    Fiddler二次开发 C#
    开发工具 快捷键
    linux / shell /adb
    Java堆栈
    selenium获取接口 HAR
    服务端通过socket向安卓客户端发送shell
    设计模式
  • 原文地址:https://www.cnblogs.com/dengbingbing/p/10643782.html
Copyright © 2011-2022 走看看