设为首页 收藏本站
查看: 1292|回复: 0

[经验分享] Zabbix-2.4

[复制链接]

尚未签到

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

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

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

  



接口文件在如下目录下  

[iyunv@linux-node1 zabbix]# cd /usr/share/zabbix/  
[iyunv@linux-node1 zabbix]# ls api_jsonrpc.php
  
api_jsonrpc.php
  
[iyunv@linux-node1 zabbix]# ls api_jsonrpc.php -l
  
-rw-r--r-- 1 root root 2342 Apr 20  2016 api_jsonrpc.php
  
[iyunv@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 接内容,用单引号引起来

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

[iyunv@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}[iyunv@linux-node2 ~]#
  
[iyunv@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
  

  

  执行如下
  

[iyunv@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"
  
}
  
[iyunv@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
  

  

  执行如下
  

[iyunv@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"
  }
  
}
  
[iyunv@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
  

[iyunv@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"
  }
  ]
  
}
  
[iyunv@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
  

  

  执行结果如下
  

[iyunv@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"
  }
  ]
  
}
  
[iyunv@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来创建主机
  

[iyunv@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"
  
}
  
[iyunv@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
  

  

  执行结果如下
  

[iyunv@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"
  ]
  }
  
}
  
[iyunv@linux-node2 ~]#
  

  

  创建成功

  点开看看

  模板也自动加上了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430285-1-1.html 上篇帖子: 用实力让情怀落地 下篇帖子: zabbix server源码安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表