37 lines
1.1 KiB
Bash
37 lines
1.1 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Ansible managed
|
||
|
|
# modified from https://raw.githubusercontent.com/anapsix/zabbix-haproxy/master/haproxy_discovery.sh
|
||
|
|
# Get list of Frontends and Backends from HAPROXY
|
||
|
|
# Example: ./haproxy_discovery.sh FRONTEND|BACKEND|SERVERS
|
||
|
|
# the argument should be either FRONTEND, BACKEND or SERVERS, will default to FRONTEND if not set
|
||
|
|
|
||
|
|
HAPROXY_SOCK="/run/haproxy/monitoring.sock"
|
||
|
|
|
||
|
|
query_stats() {
|
||
|
|
echo "show stat" | socat ${HAPROXY_SOCK} stdio 2>/dev/null
|
||
|
|
}
|
||
|
|
|
||
|
|
get_stats() {
|
||
|
|
echo "$(query_stats)" | grep -v "^#"
|
||
|
|
}
|
||
|
|
|
||
|
|
case $1 in
|
||
|
|
B*) END="BACKEND" ;;
|
||
|
|
F*) END="FRONTEND" ;;
|
||
|
|
S*)
|
||
|
|
for backend in $(get_stats | grep BACKEND | cut -d, -f1 | uniq); do
|
||
|
|
for server in $(get_stats | grep "^${backend}," | grep -v BACKEND | cut -d, -f2); do
|
||
|
|
serverlist="$serverlist, "'{ "{#BACKEND_NAME}": "'$backend'","{#SERVER_NAME}": "'$server'" }'
|
||
|
|
done
|
||
|
|
done
|
||
|
|
echo -e '{ "data": [ '${serverlist#,}'] }'
|
||
|
|
exit 0
|
||
|
|
;;
|
||
|
|
*) END="FRONTEND" ;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
for frontend in $(get_stats | grep "$END" | cut -d, -f1 | uniq); do
|
||
|
|
felist="$felist,"'{ "{#'${END}'_NAME}": "'$frontend'" }'
|
||
|
|
done
|
||
|
|
echo -e '{ "data": [ '${felist#,}']}'
|