Zabbix api


对于以上两种方式,有些人都不选,倾向于使用第三种:使用zabbix api加上这个监控
在把这台机器删除了,然后discovery和自动注册的都关闭了
再换一种方式把它加进去,zabbix api两个作用
1、管理zabbix
2、查询一些数,把一些zabbix报警的图形一块发邮件
它支持很多方法

api的配置,在httpd.conf目录下。如下编辑zabbix.conf

[root@linux-node1 ~]# vim /etc/httpd/conf.d/zabbix.conf

接口文件在如下目录下
[root@linux-node1 zabbix]# cd /usr/share/zabbix/
[root@linux-node1 zabbix]# ls api_jsonrpc.php
api_jsonrpc.php
[root@linux-node1 zabbix]# ls api_jsonrpc.php -l
-rw-r--r-- 1 root root 2342 Apr 20 2016 api_jsonrpc.php
[root@linux-node1 zabbix]#

可以看到,首先它是个api,传输模式是rpc的,传输格式是json的
既然是api,那肯定有验证,给api发用户名密码,得返回token吧
后面拿这个token就可以继续请求了,和openstack类似
打开文档看
https://www.zabbix.com/documentation/2.4/manual/api/reference
第一步,因为涉及登录,找用户相关的

Authenticate a user.
Request:

{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}

Response:

{
"jsonrpc": "2.0",
"result": "0424bd59b807674191e7d77572075f33",
"id": 1
}

  

返回的这个就是要的sessionid,后面的请求带着session就可了

通过curl访问

-s 静默
-X POST
-H 接类型
-d 接内容,用单引号引起来

粘贴到命令行上,回车后返回一串值
[root@linux-node2 ~]# curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://10.0.1.161/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","result":"5733cec620a75d1f7e2ebcf725c7ccec","id":1}[root@linux-node2 ~]#
[root@linux-node2 ~]#

看着不舒服,给它处理下,调用python的工具处理下,命令如下

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

{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool

  

执行如下

[root@linux-node2 ~]# curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
>
> {
> "jsonrpc": "2.0",
> "method": "user.login",
> "params": {
> "user": "Admin",
> "password": "zabbix"
> },
> "id": 1
> }' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool
{
"id": 1,
"jsonrpc": "2.0",
"result": "d05f9fa13c8b182d61e462b8aaded670"
}
[root@linux-node2 ~]#

  

上面为什么要设置id,因为可能又多个请求,给不同的会话设置不同的id
你才知道这个是你的
把这个字符串记录下来

d05f9fa13c8b182d61e462b8aaded670

你请求的时候还可以加个下面userdata为true,这样还能返回用户信息

命令如下

curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix",
"userData": true
},
"id": 1
}' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool

执行如下

[root@linux-node2 ~]# curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
> {
> "jsonrpc": "2.0",
> "method": "user.login",
> "params": {
> "user": "Admin",
> "password": "zabbix",
> "userData": true
> },
> "id": 1
> }' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"alias": "Admin",
"attempt_clock": "0",
"attempt_failed": "0",
"attempt_ip": "",
"autologin": "1",
"autologout": "0",
"debug_mode": false,
"gui_access": "0",
"lang": "en_GB",
"name": "Zabbix",
"refresh": "30",
"rows_per_page": "50",
"sessionid": "dbfdc9c932d15760f0ed05bb5955511b",
"surname": "Administrator",
"theme": "default",
"type": "3",
"url": "",
"userid": "1",
"userip": "10.0.1.162"
}
}
[root@linux-node2 ~]#

  

接下来获取监控的主机有哪些

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

找一个简单的,只获取hostid,注意auth是sessionid

curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid"]
},
"auth": "dbfdc9c932d15760f0ed05bb5955511b",
"id": 2
} ' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool

执行结果如下,hostid是10084

[root@linux-node2 ~]# curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
> {
> "jsonrpc": "2.0",
> "method": "host.get",
> "params": {
> "output": ["hostid"]
> },
> "auth": "dbfdc9c932d15760f0ed05bb5955511b",
> "id": 2
> } ' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool
{
"id": 2,
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084"
}
]
}
[root@linux-node2 ~]#

 

hostid就是下面这里的

把hostid改成host看看是否返回主机名
curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"auth": "dbfdc9c932d15760f0ed05bb5955511b",
"id": 2
} ' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool

执行结果如下

[root@linux-node2 ~]# curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
> {
> "jsonrpc": "2.0",
> "method": "host.get",
> "params": {
> "output": ["host"]
> },
> "auth": "dbfdc9c932d15760f0ed05bb5955511b",
> "id": 2
> } ' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool
{
"id": 2,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084"
}
]
}
[root@linux-node2 ~]#

  

 

也可以判断它是否存在

接下来使用api方式添加被监控主机

https://www.zabbix.com/documentation/2.4/manual/api/reference/host/create

创建的时候可以指定模板,以及主机组

在官网里看到实例如下,添加主机的时候可以指定模板,主机组,资产

{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "50"
}
],
"templates": [
{
"templateid": "20045"
}
],
"inventory_mode": 0,
"inventory": {
"macaddress_a": "01234",
"macaddress_b": "56768"
}
},
"auth": "038e1d7b1735c6a5436ee9eae095879e",
"id": 1
}

查看linux servers这个主机组,它的组id是2

再找一个模板id,看到模板id是10001

先获取授权的sessionid

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

{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool

根据返回的sessionid来创建主机

[root@linux-node2 ~]# curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '

{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool
{
"id": 1,
"jsonrpc": "2.0",
"result": "4c0999123f2da1b09b6a079c02a363ad"
}
[root@linux-node2 ~]#

  

 

执行命令如下

curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "10.0.1.162",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "4c0999123f2da1b09b6a079c02a363ad"
}' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool

  

执行结果如下

[root@linux-node2 ~]# curl  -s  -X  POST   -H  'Content-Type:application/json'  -d '
> {
> "jsonrpc": "2.0",
> "method": "host.create",
> "params": {
> "host": "Linux server",
> "interfaces": [
> {
> "type": 1,
> "main": 1,
> "useip": 1,
> "ip": "10.0.1.162",
> "dns": "",
> "port": "10050"
> }
> ],
> "groups": [
> {
> "groupid": "2"
> }
> ],
> "templates": [
> {
> "templateid": "10001"
> }
> ]
> },
> "id": 1,
> "auth": "4c0999123f2da1b09b6a079c02a363ad"
> }' http://10.0.1.161/zabbix/api_jsonrpc.php |python -mjson.tool
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10116"
]
}
}
[root@linux-node2 ~]#

  

创建成功

点开看看

模板也自动加上了

Zabbix-2.4-安装-4的更多相关文章

  1. zabbix 3.0 安装 ubuntu环境

    zabbix 3.0 安装 标签(空格分隔): 开发 [TOC] 下载deb # wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/z ...

  2. zabbix windows angent安装:

    zabbix windows angent安装:1.下载zabbix agent for windows客户端,直接解压到C盘下.C:\zabbix 的目录015/04/21 11:16 <DI ...

  3. Zabbix概念、安装以及快速入门

    Zabbix is an enterprise-class open source distributed monitoring solution.[1] Zabbix是一个企业级的.开源的.分布式的 ...

  4. 【zabbix系列】安装与加入host

    測试环境 Ubuntu 14.04.1 LTS [服务端安装] 关于安装官方提供了非常具体的安装方法,包含各平台的源代码及包安装.关于其它版本号Linux请參考 https://www.zabbix. ...

  5. zabbix源码安装实例

    环境 系统                 Centos7 zabbix版本      Zabbix 3.4.15 (revision 86739) zabbix源码安装 .tar.gz cd zab ...

  6. zabbix学习笔记----安装----2019.03.26

    1.zabbix官方yum源地址:repo.zabbix.com 2.安装zabbix server zabbix server使用mysql作为数据库,在zabbix 3.X版本,安装zabbix- ...

  7. zabbix客户端的安装、zabbix主被动模式、添加主机模板等、处理页面的中文乱码

    1.zabbix客户端的安装: 如下步骤: wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch. ...

  8. 运用Zabbix实现内网服务器状态及局域网状况监控(3) —— Zabbix服务端安装

    1. Zabbix服务端安装,基于LNMP PHP5.5+Nginx1.9安装配置:http://www.cnblogs.com/vurtne-lu/p/7707536.html MySQL5.5编译 ...

  9. CentOS7 zabbix服务 简单安装文档

    1. 简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快 ...

  10. zabbix v3.0安装部署

    这篇文章没有写明init的部分要注意 zabbix v3.0安装部署 摘要: 本文的安装过程摘自http://www.ttlsa.com/以及http://b.lifec-inc.com ,和站长凉白 ...

随机推荐

  1. windows下安装cygwin及配置(转)

    reference:https://cygwin.com/install.html 对比:MinGW vs. CygWin    https://www.cnblogs.com/findumars/p ...

  2. .NET界面控件DevExpress全新发布v18.2.6|附下载

    DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,De ...

  3. DevExpress v18.1新版亮点——Reporting篇(三)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Reporting v18.1 的新功能,快来下载试用新版本 ...

  4. linux 下ftp几种上传和下载方式

    1. ftp自动登录批量下载文件. 复制代码代码如下: #####从ftp服务器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<& ...

  5. 自定义input[type="radio"]的样式(支持普通浏览器,IE8以上)

    对于表单,input[type="radio"] 的样式总是不那么友好,在不同的浏览器中表现不一. 对单选按钮自定义样式,我们以前一直用的脚本来实现,不过现在可以使用新的伪类 :c ...

  6. SQL--数据表--基本操作

    表操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名(字段名字 数据类型,字段名字 数据类型 --最后一行不需要逗号) [表选项] ; if no ...

  7. Node.js 回调函数 1) 阻塞 ,同步 2) 非阻塞 ,异步.

    1.阻塞. 同步. 1) 读取的文件: input.txt 菜鸟教程官网地址:www.runoob.com 2) main.js var fs = require("fs"); / ...

  8. xampp 忘记密码的处理方式.

    网上看到一些方法: 大部分是第一种:  方法一 这个方法, 我使用的时候没有生效. -------------- 后来看到另外一种方法 .  直接替换user表的三个文件.  这个方法成功了. xam ...

  9. 团队作业8——敏捷冲刺博客合集(Beta阶段)

    第一篇(冲刺前安排):https://www.cnblogs.com/Aragaki-Yui/p/9057951.html 第二篇(冲刺第一天):https://www.cnblogs.com/Ara ...

  10. 路径问题 :<c:url >的作用

    最近的项目一直报这样的错 可是本地启动 又没问题,xshell查看日志 没有错误日志,找了好久都没想到错误原因.一位大佬几分钟就找到原因了有点扎心. 首先说一下解决问题的思路.首先报错是4开头,说明是 ...