Haproxy :统计脚本
2015-07-24 by dongnan
环境
操作系统: CentOS 6.6 amd64
软件版本: Haproxy 1.5.x(源码方式安装)
目标
输出 Haproxy
统计数据,为 Zabbix
采集 Haproxy
数据提供支持。
功能
通过 Socat
命令从 Haproxy socket
文件获得统计数据,完成流量统计、tcp
连接统计、http
请求数量统计、http
状态统计等。
开始之前
Shell脚本需要以下3个条件:
- Haproxy 配置统计 Socket
- Haproxy 使用Socat获得统计数据
- 使用crontab任务计划,每分钟获得一次数据保存在文本文件中。
脚本代码
注意: 示例 awk
匹配字符串为 localhost
,请根据 haproxy
实际配置(frontend
) 更改匹配字符串。
#!/bin/bash
# 20150726 by dongnan
# crontab -l
# * * * * * /bin/echo "show stat" | /usr/bin/socat stdio /var/run/haproxy.sock | awk -F, '/localhost/' > /tmp/ha_stat.txt
# 0 0 * * * /etc/init.d/haproxy reload > /dev/null 2>&1
#variables
item="$1"
disk="$2"
tmp_file='/tmp/ha_stat.txt'
#main
case "$1" in
byte_in)
awk -F, '{print $9}' $tmp_file
;;
byte_out)
awk -F, '{print $10}' $tmp_file
;;
cur_sess)
awk -F, '{print $5}' $tmp_file
;;
max_sess)
awk -F, '{print $6}' $tmp_file
;;
curr_conns)
/bin/echo "show info" | /usr/bin/socat stdio /var/run/haproxy.sock | awk -F: '/CurrConns/ {print $2}'
;;
cum_conns)
/bin/echo "show info" | /usr/bin/socat stdio /var/run/haproxy.sock | awk -F: '/CumConns/ {print $2}'
;;
max_sess_rate)
awk -F, '{print $36}' $tmp_file
;;
max_request_rate)
awk -F, '{print $48}' $tmp_file
;;
cum_http)
awk -F, '{print $49}' $tmp_file
;;
http_1xx)
awk -F, '{print $40}' $tmp_file
;;
http_2xx)
awk -F, '{print $41}' $tmp_file
;;
http_3xx)
awk -F, '{print $42}' $tmp_file
;;
http_4xx)
awk -F, '{print $43}' $tmp_file
;;
http_5xx)
awk -F, '{print $44}' $tmp_file
;;
*)
echo "Usage: $0 {byte_in|byte_out|curr_conns|cum_conns|cum_http|http_1xx|http_2xx|http_3xx|http_4xx|http_5xx}"
echo "Example: $0 byte_in"
exit 1
;;
esac