Zabbix使用Python检查Haproxy状态页面.md
概述
网上有很多使用zabbix监控haproxy的脚本,但大多数都使用的socket方式,而haproxy的stats页面页面我们经常需要访问的,所以我们这次使用python来抓取haproxy的stats页面。
haproxy的stats页面分析
haproxy的stats页面如下
当backend出现问题时,会显示红色,HTML代码为:
<tr class="active0"><td class=ac><a name="app_push/push496">
尔当backend正常时,会显示绿色.
<tr class="active4"><td class=ac><a name="app_push/push096">
中间会有黄色的情况,backend反复故障恢复时会产生。
Python脚本抓取
#!/usr/bin/env python
#coding=utf-8
#Debug in Python2.7
import urllib2
import sys
import re
url = sys.argv[1]
#url = 'http://10.100.18.78:8888/status'
try:
response = urllib2.urlopen(url,timeout=5).read();
except:
print 'error to connect haproxy.'
sys.exit(0)
pattern = re.compile('<tr class="active0"><td class=ac><a name="(.*?)"></a>')
items = re.findall(pattern, response)
data = []
for item in items:
#print item
data.append(item)
if len(data):
print data
else:
print 'ok'
当haproxy有backend故障时,会打印故障服务器,没有故障时显示OK,服务器无法连接,显示’error to connect haproxy.’
故障显示如下
['app_push/push496', 'app_push/push092']
Zabbix中添加监控项
需要zabbix客户端自定义一个key来关联检查脚本。然后zabbix服务器端设置模板。这里我是用的字符串匹配。