最新消息:网站迁移至香港,数据恢复中。

Zabbix使用Python检查Haproxy状态页面

Linux ipcpu 147浏览

Zabbix使用Python检查Haproxy状态页面.md

概述

网上有很多使用zabbix监控haproxy的脚本,但大多数都使用的socket方式,而haproxy的stats页面页面我们经常需要访问的,所以我们这次使用python来抓取haproxy的stats页面。

haproxy的stats页面分析

haproxy的stats页面如下

当backend出现问题时,会显示红色,HTML代码为:

  1. <tr class="active0"><td class=ac><a name="app_push/push496">

尔当backend正常时,会显示绿色.

  1. <tr class="active4"><td class=ac><a name="app_push/push096">

中间会有黄色的情况,backend反复故障恢复时会产生。

Python脚本抓取

  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. #Debug in Python2.7
  4. import urllib2
  5. import sys
  6. import re
  7. url = sys.argv[1]
  8. #url = 'http://10.100.18.78:8888/status'
  9. try:
  10. response = urllib2.urlopen(url,timeout=5).read();
  11. except:
  12. print 'error to connect haproxy.'
  13. sys.exit(0)
  14. pattern = re.compile('<tr class="active0"><td class=ac><a name="(.*?)"></a>')
  15. items = re.findall(pattern, response)
  16. data = []
  17. for item in items:
  18. #print item
  19. data.append(item)
  20. if len(data):
  21. print data
  22. else:
  23. print 'ok'

当haproxy有backend故障时,会打印故障服务器,没有故障时显示OK,服务器无法连接,显示’error to connect haproxy.’

故障显示如下

  1. ['app_push/push496', 'app_push/push092']

Zabbix中添加监控项

需要zabbix客户端自定义一个key来关联检查脚本。然后zabbix服务器端设置模板。这里我是用的字符串匹配。

报警实例

转载请注明:IPCPU--网络之路 » Zabbix使用Python检查Haproxy状态页面