dream789 发表于 2017-12-31 15:21:35

Zabbix-2.4

  Zabbix api
  对于以上两种方式,有些人都不选,倾向于使用第三种:使用zabbix api加上这个监控
  在把这台机器删除了,然后discovery和自动注册的都关闭了
  再换一种方式把它加进去,zabbixapi两个作用
  1、管理zabbix
  2、查询一些数,把一些zabbix报警的图形一块发邮件
  它支持很多方法
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170317142717448-586357932.png
  api的配置,在httpd.conf目录下。如下编辑zabbix.conf
  

# vim /etc/httpd/conf.d/zabbix.conf  

  

https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170317143633041-2047290015.png

接口文件在如下目录下  

# cd /usr/share/zabbix/  
# ls api_jsonrpc.php
  
api_jsonrpc.php
  
# ls api_jsonrpc.php -l
  
-rw-r--r-- 1 root root 2342 Apr 202016 api_jsonrpc.php
  
#
  

  

  可以看到,首先它是个api,传输模式是rpc的,传输格式是json的
  既然是api,那肯定有验证,给api发用户名密码,得返回token吧
  后面拿这个token就可以继续请求了,和openstack类似
  打开文档看
  https://www.zabbix.com/documentation/2.4/manual/api/reference
  第一步,因为涉及登录,找用户相关的
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170317143819166-854495918.png
  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 静默
  -XPOST
  -H 接类型
  -d 接内容,用单引号引起来

粘贴到命令行上,回车后返回一串值  

# curl-s-XPOST   -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}#
  
#
  

  

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

curl-s-XPOST   -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
  

  

  执行如下
  

# curl-s-XPOST   -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"
  
}
  
#
  

  

  上面为什么要设置id,因为可能又多个请求,给不同的会话设置不同的id
  你才知道这个是你的
  把这个字符串记录下来
  d05f9fa13c8b182d61e462b8aaded670
  你请求的时候还可以加个下面userdata为true,这样还能返回用户信息
  命令如下
  

curl-s-XPOST   -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
  

  

  执行如下
  

# curl-s-XPOST   -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"
  }
  
}
  
#
  

  


接下来获取监控的主机有哪些  https://www.zabbix.com/documentation/2.4/manual/api/reference/user/get
  找一个简单的,只获取hostid,注意auth是sessionid
  

curl-s-XPOST   -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
  

# curl-s-XPOST   -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"
  }
  ]
  
}
  
#
  

  

  hostid就是下面这里的
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170317155456291-2123029006.png

把hostid改成host看看是否返回主机名  

curl-s-XPOST   -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
  

  

  执行结果如下
  

# curl-s-XPOST   -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"
  }
  ]
  
}
  
#
  

  


也可以判断它是否存在
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170317155809682-647057229.png  接下来使用api方式添加被监控主机
  https://www.zabbix.com/documentation/2.4/manual/api/reference/host/create
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170318203428713-568694699.png
  创建的时候可以指定模板,以及主机组
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170318203725807-1062318676.png
  在官网里看到实例如下,添加主机的时候可以指定模板,主机组,资产
  

{  "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
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170318204025276-2136132816.png

再找一个模板id,看到模板id是10001
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170318204107526-786969577.png  先获取授权的sessionid
  

curl-s-XPOST   -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来创建主机
  

# curl-s-XPOST   -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"
  
}
  
#
  

  

  执行命令如下
  

curl-s-XPOST   -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
  

  

  执行结果如下
  

# curl-s-XPOST   -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"
  ]
  }
  
}
  
#
  

  

  创建成功
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170318205926870-912687682.png
  点开看看
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170318212803401-1443488069.png
  模板也自动加上了
https://images2015.cnblogs.com/blog/1076878/201703/1076878-20170318212844510-31776879.png
页: [1]
查看完整版本: Zabbix-2.4