跳转至

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个条件:

脚本代码

注意: 示例 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

参考

欢迎关注微信公众号: 运维录

Back to top