一、API的介绍

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。

API 接口属于一种操作系统或程序接口,GUI接口属于一种图形操作系统。两者都属于直接用户接口。有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。

zabbix中api主要作用:为批量操作、第三方软件集成以及其他作用提供可编程接口。大致工作过程:1)API采用json-rpc实现。这意味这调用任何函数,都需要发送post请求,且输入输出格式都是以json格式。2)准备json对象,它描述你想要做什么。3)获取json响应。

二、zabix-api接口函数的编写

首先,该环境实在zabbix实现监控的基础上,进行操作。

1、查看zabbix监控系统的api接口:

--->  cd  /root

--->  vim  zabbix.spi

curl -s -X POST -H 'Content-Type:application/json' -d '

# 用curl命令模拟json格式的post请求

{
        "jsonrpc": "2.0",        # json rpc参数表示协议版本
        "method": "user.login",  # 以用户登陆的方式获取api
        "params": {
                "user": "Admin", # zabbix监控系统的用户名和密码
                "password": "zabbix"
        },
        "id": 1,
        "auth": null
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
# 采用post方法向此网页发送json请求;api_jsonrpc.php调用spi的php脚本

--->  chmod  +x  zabbix.api       # 添加执行权限

---> ./zabbix.api                 # 执行脚本

2、查看zabbix主机和被检控主机信息

--->  vim  zabbix.api

curl -s -X POST -H 'Content-Type:application/json' -d '
{
        "jsonrpc": "2.0",
        "method": "host.get",          # 调用api中的get方法
        "params": {
                "output": ["host"]
        },
        "id": 1,
        "auth": "067187a40d8f684120ee7aca8f1f88ec"        # zabbix监控的api
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
--->  ./zabbix.api          # 监控到的和zabbix网页中的一致

3、删除zabbix监控中的server2主机

curl -s -X POST -H 'Content-Type:application/json' -d '
{
        "jsonrpc": "2.0",
        "method": "host.delete",     # 调用delete方法
        "params": [
                "10254"              # 此处填写server2的hostid
        ],
        "id": 1,
        "auth": "067187a40d8f684120ee7aca8f1f88ec"
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
--->  ./zabbix.api

4、在zabbix中创建被监控主机

curl -s -X POST -H 'Content-Type:application/json' -d '
{
        "jsonrpc": "2.0",
        "method": "host.create",
        "params": {
                "host": "server2",
                "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.2.2",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"

}
        ],
        "templates": [
            {
                "templateid": "10001"
            }
        ]
        },
        "id": 1,
        "auth": "067187a40d8f684120ee7aca8f1f88ec"
}' http://172.25.2.11/zabbix/api_jsonrpc.php|python -m json.tool
--->  ./zabbix.api

# 当我们在浏览器中查看时,server2已经加入监控中了。

使用API接口在zabbix系统中登陆、创建、删除agent的更多相关文章

  1. Ubuntu系统中登陆阿里云服务器的方法

    如果您购买了阿里云服务器,恰巧又在使用Ubuntu操作系统,那么恭喜你来对地方了,今天给大家分享一下如何在Ubuntu中登陆阿里云服务器: 主要使用两款软件:1.SecureCRT:2.SecureF ...

  2. Zabbix系统中的历史数据和趋势数据

    原文:http://blog.chinaunix.net/uid-9411004-id-4139807.html 或许读者还记得,我们在介绍如何创建一个监控项目时,我们介绍过在“配置项目”表单页面上有 ...

  3. 在Linux系统中增加和删除用户

    linux创建账户并自动生成主目录和主目录下的文件 在Linux系统中增加和删除用户 Linux添加用户(user)到用户组(group) usermod -a -G groupA user linu ...

  4. Linux系统中查找、删除重复文件,释放磁盘空间。

    在Linux系操作系统中查找并删除重复文件的方法的确有很多,不过这里介绍的是一款非常简单实用的软件FSlint.FSlint是一个重复文件查找工具,可以使用它来清除不必要的重复文件,笔者经常使用它来释 ...

  5. Linux基础教程 linux系统中的批量删除文件与空文件删除的命令介绍

    linux下面删除文件或者目录命令rm(remove): 兄弟连Linux培训 功能说明:删除文件或目录. 语 法:rm[-dfirv][--help][--version][文件或目录...] 补充 ...

  6. 在ubuntu/deepin/mint等系统中使用命令删除文件或文件夹

    此命令操作需谨慎: sudo rm -rf 文件夹路径(或文件路径)  

  7. window系统中 mongodb创建用户名和密码

    use admindb.createUser({user:"root",pwd:"root",roles:[{"role":"us ...

  8. windows系统中,创建临时环境变量

    以servlet-api.jar 包为例 set classpath=%classpath%;C:\apache-tomcat-6.0.37\lib\servlet-api.jar

  9. python使用zabbix的API接口

    一.实验环境 python3.6.6 zabbix 3.0.9 二.实验目的 了解Zabbix的API接口格式 通过python实现登陆zabbix服务,获得登陆token 通过python检索zab ...

随机推荐

  1. chromedriver下载安装

    博主开发平台是win10,Python版本是3.6.最近需要用到chromedriver+selenium,下载好selenium后,pip install chromedriver,直接安装到pyt ...

  2. MariaDB / MySQL数据类型

    MariaDB / MySQL 数据类型 有三种主要的类型:Text(文本).Number(数字)和 Date/Time(日期/时间)类型. Text 类型: 数据类型 描述 CHAR(size) 保 ...

  3. 使用uWSGI和nginx来设置Django和你的web服务器

    本教程针对那些想要设置一个生产web服务器的Django用户.它介绍了设置Django以使得其与uWSGI和nginx工作良好的必要步骤.它涵盖了所有三个组成部分,提供了一个web应用和服务器软件的完 ...

  4. hihoCoder 1636 Pangu and Stones

    hihoCoder 1636 Pangu and Stones 思路:区间dp. 状态:dp[i][j][k]表示i到j区间合并成k堆石子所需的最小花费. 初始状态:dp[i][j][j-i+1]=0 ...

  5. API网关 动态路由、监控、授权、安全、调度

    1.API网关介绍 API网关是一个服务器,是系统的唯一入口.从面向对象设计的角度看,它与外观模式类似.API网关封装了系统内部架构,为每个客户端提供一个定制的API.它可能还具有其它职责,如身份验证 ...

  6. (转)HapMap简介

    1.人类基因组的HapMap和国际HapMap计划 (1)何谓HapMap HapMap是Haplotype Map 的简称,Haplo意为单一,在基因组中专指来自父母的一对染色体中的一条.Haplo ...

  7. golang martini 源码阅读笔记之inject

    martini是go语言写的一个超级轻量的web开源框架,具体源码可在github搜索找到.13年那会开始接触go语言时有稍微看过这个框架,由于之后没有继续使用go就慢慢忽略了,最近由于手头项目可能会 ...

  8. 我的Java学习笔记-Java面向对象

    今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...

  9. Nastya and King-Shamans CodeForces - 992E (线段树二分)

    大意: 给定序列a, 单点更新, 询问是否存在a[i]等于s[i-1], s为a的前缀和, a非负 考虑到前缀和的单调性, 枚举从1开始前缀和, 找到第一个大于等于s[1]的a[i], 如果相等直接输 ...

  10. 『科学计算』L0、L1与L2范数_理解

     『教程』L0.L1与L2范数 一.L0范数.L1范数.参数稀疏 L0范数是指向量中非0的元素的个数.如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0,换句话说,让参数W是稀 ...