Last active
June 10, 2022 13:24
-
-
Save fangpsh/a0522b4d5657b42ebf14 to your computer and use it in GitHub Desktop.
open-falcon agent haproxy plugin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#requires: socat | |
#author: fangpsh | |
#关于采集的Haproxy指标和报警阈值设置请参考:https://github.com/iask/haproxymon | |
set -eu | |
STATS_SOCKET="/var/lib/haproxy/stats" | |
HOST=`cat /etc/hostname` | |
DATE=`date +%s` | |
tmp_info="/tmp/haproxy_info" | |
tmp_stat="/tmp/haproxy_stat" | |
echo -n "[" | |
##haproxy info | |
echo "show info" |sudo socat /var/lib/haproxy/stats stdio > $tmp_info 2>/dev/null | |
echo -n "{\"metric\": \"Haproxy_CurrConns\", \"endpoint\": \"$HOST\", \"tags\": \"\", \"value\": `grep -E '^CurrConns:' $tmp_info |cut -d ' ' -f 2`,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_ConnRate\", \"endpoint\": \"$HOST\", \"tags\": \"\", \"value\": `grep -E '^ConnRate:' $tmp_info |cut -d ' ' -f 2`,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Tasks\", \"endpoint\": \"$HOST\", \"tags\": \"\", \"value\": `grep -E '^Tasks:' $tmp_info |cut -d ' ' -f 2`,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_SessRate\", \"endpoint\": \"$HOST\", \"tags\": \"\", \"value\": `grep -E '^SessRate:' $tmp_info |cut -d ' ' -f 2`,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Run_queue\", \"endpoint\": \"$HOST\", \"tags\": \"\", \"value\": `grep -E '^Run_queue:' $tmp_info |cut -d ' ' -f 2`,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Idle_pct\", \"endpoint\": \"$HOST\", \"tags\": \"\", \"value\": `grep -E '^Idle_pct:' $tmp_info |cut -d ' ' -f 2`,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
##haproxy stat | |
echo "show stat" |sudo socat /var/lib/haproxy/stats stdio > $tmp_stat 2>/dev/null | |
for line in `grep -vE '#|FRONTEND|BACKEND' $tmp_stat | sed '/^$/d'`; | |
do | |
server=`echo $line |cut -d ',' -f 1,2 |sed 's/,/_/'` | |
status=`echo $line |cut -d ',' -f 18` | |
if [ $status == 'UP' ]; | |
then | |
status_code=0 | |
else | |
status_code=1 | |
fi | |
scur=`echo $line |cut -d ',' -f 5` | |
qcur=`echo $line |cut -d ',' -f 3` | |
rate=`echo $line |cut -d ',' -f 34` | |
econ=`echo $line |cut -d ',' -f 14` | |
qtime=`echo $line |cut -d ',' -f 59` | |
ctime=`echo $line |cut -d ',' -f 60` | |
echo -n ",{\"metric\": \"Haproxy_Status\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $status_code,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Scur\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $scur,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Qcur\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $qcur,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Rate\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $rate,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Econ\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $econ,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Qtime\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $qtime,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Ctime\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $ctime,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
done | |
for line in `grep -E 'FRONTEND' $tmp_stat | sed '/^$/d'`; | |
do | |
server=`echo $line |cut -d ',' -f 1,2 |sed 's/,/_/'` | |
ereq=`echo $line |cut -d ',' -f 13` | |
dreq=`echo $line |cut -d ',' -f 11` | |
echo -n ",{\"metric\": \"Haproxy_Ereq\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $ereq,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
echo -n ",{\"metric\": \"Haproxy_Dreq\", \"endpoint\": \"$HOST\", \"tags\": \"server=$server\", \"value\": $dreq,\"timestamp\": $DATE, \"counterType\": \"GAUGE\", \"step\": 30}" | |
done | |
echo -n "]" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment