使用Zabbix Api功能,跨互联网监控Zabbix-Proxy状态

运维 系统运维
项目需要通过zabbix-proxy 来获取监控数据【网络是单向的,zabbix-proxy 通过公网主动连接 zabbix-server ,上报监控数据,已达到监控的目的】

[[438613]]

背景:

项目需要通过zabbix-proxy 来获取监控数据【网络是单向的,zabbix-proxy 通过公网主动连接 zabbix-server ,上报监控数据,已达到监控的目的】

需求:

因为是单向网络,proxy 挂了后,zabbix master 都无法获取到 zabbix-proxy 和 下面的agent 机器的离线的状态,更不会触发告警;现需要对 zabbix-proxy 的状态实行监控,利用 zabbix-proxy 主动上传到 zabbix 页面上的 agent 代理程序的 状态 来判断 zabbix-proxy 的存活

使用Zabbix Api功能,跨互联网 监控Zabbix-Proxy状态

思路:

通过获取 zabbix api 中 Proxy 代理 的 信息 来实现 监控

官方api说明:

版本:zabbix4.0

  1. 获取token:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/user/login 
  2.  
  3. 获取proxy 代理信息: https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/proxy/get 

 #获取token:

  1. #入参: 
  2. curl -s -X POST -H 'Content-Type: application/json' -d ' 
  3.     "jsonrpc""2.0"
  4.     "method""user.login"
  5.     "params": { 
  6.         "user""Admin"
  7.         "password""PASSWORD" 
  8.     }, 
  9.     "id": 1 
  10. }' http://172.16.10.37:8888/api_jsonrpc.php; 
  11.  
  12. #回参: 
  13. {"jsonrpc":"2.0","result":"为0qwewerwrsdfdsfdsafsd","id":1} 
  14.  
  15. #得到token 为0qwewerwrsdfdsfdsafsd 

 #获取proxy 代理信息

  1. #利用上面获取的token,来获取api 中proxy 的代理信息 
  2.  
  3. #入参: 
  4. curl -s -X POST -H 'Content-Type: application/json' -d ' 
  5.     "jsonrpc""2.0"
  6.     "method""proxy.get"
  7.     "params": { 
  8.         "output""extend"
  9.         "selectInterface""extend" 
  10.     }, 
  11.     "auth""0qwewerwrsdfdsfdsafsd"
  12.     "id": 1 
  13. }' http://172.16.10.37:8888/api_jsonrpc.php 
  14.  
  15.  
  16. #回参 
  17.     "jsonrpc""2.0"
  18.     "result": [ 
  19.         { 
  20.             "proxy_hostid""0"
  21.             "host""a-proxy"
  22.             "status""5"
  23.             "disable_until""0"
  24.             "error"""
  25.             "available""0"
  26.             "errors_from""0"
  27.             "lastaccess""1637806905"
  28.             "ipmi_authtype""-1"
  29.             "ipmi_privilege""2"
  30.             "ipmi_username"""
  31.             "ipmi_password"""
  32.             "ipmi_disable_until""0"
  33.             "ipmi_available""0"
  34.             "snmp_disable_until""0"
  35.             "snmp_available""0"
  36.             "maintenanceid""0"
  37.             "maintenance_status""0"
  38.             "maintenance_type""0"
  39.             "maintenance_from""0"
  40.             "ipmi_errors_from""0"
  41.             "snmp_errors_from""0"
  42.             "ipmi_error"""
  43.             "snmp_error"""
  44.             "jmx_disable_until""0"
  45.             "jmx_available""0"
  46.             "jmx_errors_from""0"
  47.             "jmx_error"""
  48.             "name"""
  49.             "flags""0"
  50.             "templateid""0"
  51.             "description""a-proxy"
  52.             "tls_connect""1"
  53.             "tls_accept""1"
  54.             "tls_issuer"""
  55.             "tls_subject"""
  56.             "tls_psk_identity"""
  57.             "tls_psk"""
  58.             "proxy_address""1.1.1.1"
  59.             "auto_compress""1"
  60.             "discover""0"
  61.             "proxyid""10385"
  62.             "interface": [] 
  63.         }, 
  64.         { 
  65.             "proxy_hostid""0"
  66.             "host""b-proxy"
  67.             "status""5"
  68.             "disable_until""0"
  69.             "error"""
  70.             "available""0"
  71.             "errors_from""0"
  72.             "lastaccess""1637806906"
  73.             "ipmi_authtype""-1"
  74.             "ipmi_privilege""2"
  75.             "ipmi_username"""
  76.             "ipmi_password"""
  77.             "ipmi_disable_until""0"
  78.             "ipmi_available""0"
  79.             "snmp_disable_until""0"
  80.             "snmp_available""0"
  81.             "maintenanceid""0"
  82.             "maintenance_status""0"
  83.             "maintenance_type""0"
  84.             "maintenance_from""0"
  85.             "ipmi_errors_from""0"
  86.             "snmp_errors_from""0"
  87.             "ipmi_error"""
  88.             "snmp_error"""
  89.             "jmx_disable_until""0"
  90.             "jmx_available""0"
  91.             "jmx_errors_from""0"
  92.             "jmx_error"""
  93.             "name"""
  94.             "flags""0"
  95.             "templateid""0"
  96.             "description""b-proxy"
  97.             "tls_connect""1"
  98.             "tls_accept""1"
  99.             "tls_issuer"""
  100.             "tls_subject"""
  101.             "tls_psk_identity"""
  102.             "tls_psk"""
  103.             "proxy_address""1.1.1.1"
  104.             "auto_compress""1"
  105.             "discover""0"
  106.             "proxyid""10402"
  107.             "interface": [] 
  108.         }, 
  109.         { 
  110.             "proxy_hostid""0"
  111.             "host""c_proxy"
  112.             "status""5"
  113.             "disable_until""0"
  114.             "error"""
  115.             "available""0"
  116.             "errors_from""0"
  117.             "lastaccess""1637806905"
  118.             "ipmi_authtype""-1"
  119.             "ipmi_privilege""2"
  120.             "ipmi_username"""
  121.             "ipmi_password"""
  122.             "ipmi_disable_until""0"
  123.             "ipmi_available""0"
  124.             "snmp_disable_until""0"
  125.             "snmp_available""0"
  126.             "maintenanceid""0"
  127.             "maintenance_status""0"
  128.             "maintenance_type""0"
  129.             "maintenance_from""0"
  130.             "ipmi_errors_from""0"
  131.             "snmp_errors_from""0"
  132.             "ipmi_error"""
  133.             "snmp_error"""
  134.             "jmx_disable_until""0"
  135.             "jmx_available""0"
  136.             "jmx_errors_from""0"
  137.             "jmx_error"""
  138.             "name"""
  139.             "flags""0"
  140.             "templateid""0"
  141.             "description""c_proxy"
  142.             "tls_connect""1"
  143.             "tls_accept""1"
  144.             "tls_issuer"""
  145.             "tls_subject"""
  146.             "tls_psk_identity"""
  147.             "tls_psk"""
  148.             "proxy_address""1.1.1.1"
  149.             "auto_compress""1"
  150.             "discover""0"
  151.             "proxyid""10445"
  152.             "interface": [] 
  153.         } 
  154.     ], 
  155.     "id": 1 

 再次过滤,找到lastaccess字段,该字段的值表示 proxy 当前的 时间戳,每5秒 内会发生变化;通过对比该字段的值 和 zabbix-server 当前时间戳的 时间差,来判断 proxy 的状态是否正常

添加监控项:

获取 lastaccess字段 的值

创建监控脚本:

  1. [root@sre ~]# cd /etc/zabbix/zabbix_agentd.d 
  2.  
  3. [root@sre zabbix_agentd.d]#  vim a-proxy-check.sh 
  4. #!/bin/bash 
  5. curl -s -X POST -H 'Content-Type: application/json' -d ' 
  6.     "jsonrpc""2.0"
  7.     "method""proxy.get"
  8.     "params": { 
  9.         "output""extend"
  10.         "selectInterface""extend" 
  11.     }, 
  12.     "auth""0qwewerwrsdfdsfdsafsd"
  13.     "id": 1 
  14. }' http://172.16.10.37:8888/api_jsonrpc.php | awk -F '{"' '{print $3}' | awk -F ',' '{print $8}' | awk -F '"' '{print $4}' 
  15.  
  16.  
  17. [root@sre zabbix_agentd.d]# chmod +x /etc/zabbix/zabbix_agentd.d/a-proxy-check.sh 

 修改 zabbix_agentd.conf 配置文件,创建KEY ,指定脚本路径

  1. [root@sre ~]# vim /etc/zabbix/zabbix_agentd.conf  
  2. ........ 
  3. UnsafeUserParameters=1 
  4. #自定义一个key,监控a_proxy的状态 
  5. UserParameter=a_proxy_status,/bin/bash /etc/zabbix/zabbix_agentd.d/a-proxy-check.sh 
  6. ........ 

 重启 zabbix-agent

  1. systemctl restart zabbix-agent 

登录到zabbix-server 使用zabbix-get 测试监控项

  1. [root@sre zabbix]# zabbix_get -s 172.16.10.37 -p 10050 -k "a_proxy_status" 
  2. 1637923240 

 登录到zabbix web 控制台,

#添加监控项

使用Zabbix Api功能,跨互联网 监控Zabbix-Proxy状态

#添加触发器

触发器表达式表示: 当a-proxy 时间戳的 值 和 zabbix 当前时间戳的值 ,相差60 秒 ,触发告警

使用Zabbix Api功能,跨互联网 监控Zabbix-Proxy状态

修改触发器值,模拟触发告警

使用Zabbix Api功能,跨互联网 监控Zabbix-Proxy状态

总结: 本篇文能写出来也是被逼无奈,单向网络,跨互联网监控,也是生产上一个案例吧.

 

责任编辑:姜华 来源: 今日头条
相关推荐

2024-04-24 08:01:47

日常监控服务器ZABBIX

2010-06-07 12:56:58

Zabbix中文

2014-03-13 15:14:19

Zabbix监控报警Zabbix

2015-06-18 10:45:31

英特尔

2011-03-29 13:25:10

Zabbix监控

2011-03-29 11:27:37

监控Zabbix

2011-04-01 16:40:00

2011-04-01 10:18:12

zabbix

2015-06-24 15:35:54

2023-06-20 07:19:00

2013-10-08 10:56:38

zabbix监控

2011-04-01 17:22:32

ZABBIX监控

2011-03-30 10:07:05

Zabbix监控

2011-03-29 11:17:57

ZABBIX监控

2011-04-01 14:28:58

zabbix应用proxy

2015-10-08 15:20:34

互联网物联网

2014-01-15 14:35:35

云计算

2015-05-28 16:11:07

互联网+

2021-06-11 06:54:00

Zabbix 5.2yum仓库监控

2015-10-30 17:50:18

互联网金融
点赞
收藏

51CTO技术栈公众号