Zabbix之十一----Zabbbix的API使用

一、API介绍

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

API安装官方文档:https://www.zabbix.com/documentation/3.4/zh/manual/api

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

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

curl 命令:

-s: 静默模式
-X:指定操作方法
-H:自定义header内容
-d:指定提交的http 内容

(1)获取token值,需要指定zabbix server服务器的用户名和密码

[[email protected] ~]# curl -s -X POST -H ‘Content-Type:application/json‘ -d ‘
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin", # zabbix server用户名
        "password": "123456"  # zabbix serever密码
    },
    "id": 1
}‘ http://192.168.7.100/zabbix/api_jsonrpc.php | python -m json.tool # zabbix server服务器主机的IP地址

# 以下是获取的token值
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "d22b88e46b411f3db0997d54afb06c0e"  # 获取的token值
}

(2)获取所有主机信息

# curl -s -X POST -H ‘Content-Type:application/json‘ -d ‘
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": ["host"]
    },
    "auth": "d22b88e46b411f3db0997d54afb06c0e",  #上面查询到的token值
    "id": 1
}‘ http://192.168.7.100/zabbix/api_jsonrpc.php | python -m json.tool   # zabbix server服务器IP地址
# 以下是所有主机的返回值
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "Zabbix server",
            "hostid": "10084"
        },
        {
            "host": "192.168.7.101",
            "hostid": "10278"
        },
        {
            "host": "192.168.7.101-nginx",
            "hostid": "10289"
        },
        {
            "host": "192.168.7.102",
            "hostid": "10290"
        }
    ]
}

(3)获取所有用户信息

[[email protected] ~]# curl -s -X POST -H ‘Content-Type:application/json‘ -d ‘
{
    "jsonrpc": "2.0",
    "method": "user.get",
    "params": {
        "output": "extend"
    },
    "auth": "d22b88e46b411f3db0997d54afb06c0e", #上面获取的token值
    "id": 1
}‘  http://192.168.7.100/zabbix/api_jsonrpc.php | python -m json.tool

# 以下是返回值
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "alias": "Admin",
            "attempt_clock": "0",
            "attempt_failed": "0",
            "attempt_ip": "",
            "autologin": "1",
            "autologout": "0",
            "lang": "zh_CN",
            "name": "Zabbix",
            "refresh": "30s",
            "rows_per_page": "50",
            "surname": "Administrator",
            "theme": "default",
            "type": "3",
            "url": "",
            "userid": "1"
        },
        {
            "alias": "guest",
            "attempt_clock": "0",
            "attempt_failed": "0",
            "attempt_ip": "",
            "autologin": "0",
            "autologout": "15m",
            "lang": "en_GB",
            "name": "",
            "refresh": "30s",
            "rows_per_page": "50",
            "surname": "",
            "theme": "default",
            "type": "1",
            "url": "",
            "userid": "2"
        },
        {
            "alias": "VIP",
            "attempt_clock": "0",
            "attempt_failed": "0",
            "attempt_ip": "",
            "autologin": "0",
            "autologout": "0",
            "lang": "zh_CN",
            "name": "",
            "refresh": "30s",
            "rows_per_page": "50",
            "surname": "",
            "theme": "default",
            "type": "3",
            "url": "",
            "userid": "3"
        }
    ]
}

(4)获取zabbix网页上的模板信息

# curl -s -X POST -H ‘Content-Type:application/json‘ -d ‘
{
    "jsonrpc": "2.0",
    "method": "template.get",
    "params": {
        "output": "extend",
        "filter": {
            "host": [
                "NGINX_Check_Statuc"
            ]
        }
    },
    "auth": "d22b88e46b411f3db0997d54afb06c0e",
    "id": 1
}‘   http://192.168.7.100/zabbix/api_jsonrpc.php | python -m json.tool
#以下是返回值

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "auto_compress": "1",
            "available": "0",
            "description": "",
            "disable_until": "0",
            "error": "",
            "errors_from": "0",
            "flags": "0",
            "host": "NGINX_Check_Statuc",
            "ipmi_authtype": "-1",
            "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": "NGINX_Check_Statuc",
            "proxy_address": "",
            "proxy_hostid": "0",
            "snmp_available": "0",
            "snmp_disable_until": "0",
            "snmp_error": "",
            "snmp_errors_from": "0",
            "status": "3",
            "templateid": "10284",
            "tls_accept": "1",
            "tls_connect": "1",
            "tls_issuer": "",
            "tls_psk": "",
            "tls_psk_identity": "",
            "tls_subject": ""
        }
    ]
}

二、通过API添加主机

通过API添加主机命令格式:

API添加主机为预先知道要添加的主机IP、预先安装并配置好zabbix agent、预先知道要关联的模板ID/组ID等信息,然后同API提交请求添加

(1)查看需要添加主机群组的ID号,此时的ID号:2

(2)查看NGINX_Check_Static模板的ID号是:10284

(3)查看proxy ID号

(4)将要添加的模板都关联到NGINX_Check_Static模板下,例如:proxy的主动模板以及agent的模板

(5)添加192.168.7.101主机(主动proxy代理模式)

# curl -s -X POST -H ‘Content-Type:application/json‘ -d ‘
 {
     "jsonrpc": "2.0",
     "method": "host.create",  # 定义方法,N多种
     "params": {
         "host": "API Add Host Test 192.168.7.101",  # 添加显示的主机名称
        "proxy_hostid": "10277",  # 加上此行就是经过proxy进行主动模式代理,去掉就不需要proxy主机代理
         "interfaces": [
             {
                 "type": 1,  # 类型为1表示是agent,2是SNMP,3是IMPI,4是JMX
                 "main": 1, # more是接口
                 "useip": 1,  # 0是DNS地址,1是IP地址
                 "ip": "192.168.7.101",  # 添加zabbix主机的IP地址
                 "dns": "",
                 "port": "10050" # agent端口
             }
         ],
         "groups": [
             {
                 "groupid": "2" # 查到的群组ID
             }
         ],
         "templates": [
             {
                 "templateid": "10284"	# 关联的模板ID
             }
         ]
     },
     "auth": "d22b88e46b411f3db0997d54afb06c0e",  #token值
     "id": 1
 }‘ http://192.168.7.100/zabbix/api_jsonrpc.php | python -m json.tool  # 192.168.7.100是zabbix server服务器的IP地址

# 返回值
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10292"
        ]
    }
}

使用API批量添加主机(主动proxy代理模式)

(1)编辑一下添加的主机模板

[[email protected] ~]# cat linux-zabbix-add.sh
#!/bin/bash

IP="
192.168.7.101
192.168.7.102
"	

for node_ip in ${IP};do
 curl -s -X POST -H ‘Content-Type:application/json‘ -d ‘
 {
     "jsonrpc": "2.0",
     "method": "host.create",
     "params": {
          "host": "‘${node_ip}‘",  # 主机的IP地址
          "name": "linux36-nginx-web_‘${node_ip}‘",  # 添加可见的主机名称
          "proxy_hostid": "10277",  # 主动模式proxy的ID号
         "interfaces": [
             {
                 "type": 1,
                 "main": 1,
                 "useip": 1,
                 "ip": "‘${node_ip}‘",
                 "dns": "",
                 "port": "10050"
             }
         ],
         "groups": [
             {
                 "groupid": "2"
             }
         ],
         "templates": [
             {
                 "templateid": "10284"
             }
         ]
     },
     "auth": "d22b88e46b411f3db0997d54afb06c0e",
     "id": 1
 }‘ http://192.168.7.100/zabbix/api_jsonrpc.php | python -m json.tool
done

(2)加上执行权限,并执行脚本

[[email protected] ~]# chmod +x linux-zabbix-add.sh
[[email protected] ~]# bash linux-zabbix-add.sh
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10294"
        ]
    }
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10295"
        ]
    }
}

在zabbix网页上查看此时添加的主机

1、查看zabbix网页上添加的主机状态

2、查看192.168.7.101主机的数据

3、查看192.168.7.102主机的数据

  

  

  

 

原文地址:https://www.cnblogs.com/struggle-1216/p/12369986.html

时间: 2024-10-07 17:30:00

Zabbix之十一----Zabbbix的API使用的相关文章

微信小程序把玩(四十一)canvas API

原文:微信小程序把玩(四十一)canvas API 绘图是每个移动应用必备的技术,基本上和Android,IOS,等移动开发都是相同的,创建个上下文,给你个画布再上画,官网给的小例子都比较全了自己去看吧,drawImage时没有反应不知道是BUG还是电脑不能测试待定,http://wxopen.notedown.cn/api/api-canvas.html 屏幕就像是数学上的坐标轴,且在第四象限,以屏幕左上角为圆点,X轴向右为正向左为负,Y轴向下为正向上为负(这点和数学上相反的)以圆点为基点画个

Zabbix监控(十一):解决中文字体显示乱码问题

问题: 在WEB端上中文会显示为问号,当创建一个GRAPH,名字中带中文时会报错: (latin1_swedish_ci,IMPLICIT)  and (utf8_general_ci,COERCIBLE) for operation '=' 意思是使用了两种不同的字符集(latin1和utf8) 1.方法一:网上找到最多也就是添加字体文件方法 将windows系统中的字体文件(控制面板->字体->楷体simkai.ttf)拷贝到/var/www/html/zabbix/fonts/ 修改服务

Expo大作战(三十一)--expo sdk api之Payments(expo中的支付),翻译这篇文章傻逼了,完全不符合国内用户,我只负责翻译大家可以略过!

简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人修改补充+demo测试的形式,对expo进行一次大补血!欢迎加入expo兴趣学习交流群:597732981 [之前我写过一些列关于expo和rn入门配置的东i西,大家可以点击这里查看:从零学习rn开发] 相关文章: Expo大作战(一)--什么是expo,如何安装expo clinet和xde,xd

Android JNI 学习(十一):Invocation Api

1. 简介 Invocation API允许软件提供商在原生程序中内嵌Java虚拟机.因此可以不需要链接任何Java虚拟机代码来提供Java-enabled的应用程序. 以下代码演示如何使用: #include <jni.h> /* where everything is defined */ //... JavaVM *jvm; /* denotes a Java VM */ JNIEnv *env; /* pointer to native method interface */ Java

Spark(十一) -- Mllib API编程 线性回归、KMeans、协同过滤演示

本文测试的Spark版本是1.3.1 在使用Spark的机器学习算法库之前,需要先了解Mllib中几个基础的概念和专门用于机器学习的数据类型 特征向量Vector: Vector的概念是和数学中的向量是一样的,通俗的看其实就是一个装着Double数据的数组 Vector分为两种,分别是密集型和稀疏型 创建方式如下: val array:Array[Double] = ... val vector = Vector.dense(array)//创建密集向量 val vector = Vector.

深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了. 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,你可以利用Zabbix协议编写客户端程序并将其嵌入的产品或系统中,并将数据发送到Zabbix server,这在无法安装Zabbixagent等程序的场景(例如专用的嵌入式系统)中非常有用.你也可以利用Zabbix API开发自己的业务系统,或灵活的与现有系统整合集成. 15.1 Zabb

ZABBIX API简介及使用

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

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

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

PHP通过Zabbix API获取服务器监控信息

开源监控系统Zabbix提供了丰富的API,供第三方系统调用. 基本步骤如下: 1.获取合法认证:连接对应Zabbix URL,并提供用户名和密码,HTTP方法为"POST",HTTP头部类型为"application/json" 1 public function zabbixJsonRequest($uri, $data) { 2 try{$json_data = json_encode($data); 3 $c = curl_init(); 4 curl_se