Skip to content

Instantly share code, notes, and snippets.

@frobware
Created May 29, 2020 13:13
Show Gist options
  • Save frobware/b492952662374985fd57bc48c84ee537 to your computer and use it in GitHub Desktop.
Save frobware/b492952662374985fd57bc48c84ee537 to your computer and use it in GitHub Desktop.
destructure haproxy stats
#!/bin/bash
# Numeric constants
declare -r -i pxname=0
declare -r -i svname=1
declare -r -i qcur=2
declare -r -i qmax=3
declare -r -i scur=4
declare -r -i smax=5
declare -r -i slim=6
declare -r -i stot=7
declare -r -i bin=8
declare -r -i bout=9
declare -r -i dreq=10
declare -r -i dresp=11
declare -r -i ereq=12
declare -r -i econ=13
declare -r -i eresp=14
declare -r -i wretr=15
declare -r -i wredis=16
declare -r -i status=17
declare -r -i weight=18
declare -r -i act=19
declare -r -i bck=20
declare -r -i chkfail=21
declare -r -i chkdown=22
declare -r -i lastchg=23
declare -r -i downtime=24
declare -r -i qlimit=25
declare -r -i pid=26
declare -r -i iid=27
declare -r -i sid=28
declare -r -i throttle=29
declare -r -i lbtot=30
declare -r -i tracked=31
declare -r -i typ=32
declare -r -i rate=33
declare -r -i rate_lim=34
declare -r -i rate_max=35
declare -r -i check_status=36
declare -r -i check_code=37
declare -r -i check_duration=38
declare -r -i hrsp_1xx=39
declare -r -i hrsp_2xx=40
declare -r -i hrsp_3xx=41
declare -r -i hrsp_4xx=42
declare -r -i hrsp_5xx=43
declare -r -i hrsp_other=44
declare -r -i hanafail=45
declare -r -i req_rate=46
declare -r -i req_rate_max=47
declare -r -i req_tot=48
declare -r -i cli_abrt=49
declare -r -i srv_abrt=50
declare -r -i comp_in=51
declare -r -i comp_out=52
declare -r -i comp_byp=53
declare -r -i comp_rsp=54
declare -r -i lastsess=55
declare -r -i last_chk=56
declare -r -i last_agt=57
declare -r -i qtime=58
declare -r -i ctime=59
declare -r -i rtime=60
declare -r -i ttime=61
declare -r -i agent_status=62
declare -r -i agent_code=63
declare -r -i agent_duration=64
declare -r -i check_desc=65
declare -r -i agent_desc=66
declare -r -i check_rise=67
declare -r -i check_fall=68
declare -r -i check_health=69
declare -r -i agent_rise=70
declare -r -i agent_fall=71
declare -r -i agent_health=72
declare -r -i addr=73
declare -r -i cookie=74
declare -r -i mode=75
declare -r -i algo=76
declare -r -i conn_rate=77
declare -r -i conn_rate_max=78
declare -r -i conn_tot=79
declare -r -i intercepted=80
declare -r -i dcon=81
declare -r -i dses=82
declare -r -i wrew=83
declare -r -i connect=84
declare -r -i reuse=85
declare -r -i cache_lookups=86
declare -r -i cache_hits=87
declare -r -i srv_icur=88
declare -r -i src_ilim=89
declare -r -i qtime_max=90
declare -r -i ctime_max=91
declare -r -i rtime_max=92
declare -r -i ttime_max=93
# F=frontend
# B=backend
# S=server
# L=listener or socket
declare -a TYPES
TYPES[0]="F" # frontend
TYPES[1]="B" # backend
TYPES[2]="S" # server
TYPES[3]="L" # listener
while read line; do
[[ -n $line ]] || continue
IFS=',' read -ra FIELDS <<< "$line"
echo ${FIELDS[$pxname]} type=${TYPES[${FIELDS[$typ]}]} smax=${FIELDS[$smax]}
done < "${1:-/dev/stdin}"
# /tmp/x is this script
# while :; do echo "show stat" | socat /var/lib/haproxy/run/haproxy.sock stdio | /tmp/x |grep weighted ; date; sleep 1; done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment