spell 发表于 2019-1-4 11:39:54

zabbix监控haproxy, zabbix监控DRBD状态 ,zabbix监控lvs连接

#!/bin/bash  
# login_game_pool:FRONTEND
  
pool_name=$(echo $1|awk -F':' '{print $1}')
  
server_name=$(echo $1|awk -F':' '{print $2}')
  
metric=$2
  
stat_socket=/tmp/haproxy
  
stat_file=/tmp/haproxy_stat.csv
  
echo "show stat"|sudo socat stdio unix-connect:/tmp/haproxy > $stat_file
  

  
case $metric in
  
          qcur)
  
            #current queued requests
  
            if [ "$server_name" != "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $3}' $stat_file
  
            else
  
                  echo 0
  
            fi
  
             ;;
  
          qmax)
  
            #max queued requests
  
            if [ "$server_name" != "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $4}' $stat_file
  
            else
  
                  echo 0
  
            fi
  
             ;;
  
          scur)
  
            #current sessions
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $5}' $stat_file
  
             ;;
  
          smax)
  
            #max sessions
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $6}' $stat_file
  
             ;;
  
          slim)
  
            #sessions limit
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $7}' $stat_file
  
             ;;
  
          stol)
  
            #total sessions
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $8}' $stat_file
  
             ;;
  
         bin)
  
            #bytes in
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $9}' $stat_file
  
             ;;
  
          bout)
  
            #bytes out
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $10}' $stat_file
  
             ;;
  
          dreq)
  
            #denied requests
  
            #only FRONTEND and BACKEND has this field
  
            if [ "$server_name" == "FRONTEND" -o "$server_name" == "BACKEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $11}' $stat_file
  
            else
  
               echo 0
  
            fi
  
             ;;
  
         dresp)
  
            #denied responses
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $12}' $stat_file
  
             ;;
  
          ereq)
  
            #request errors
  
            #only FRONTEND has this field
  
            if [ "$server_name" == "FRONTEND" ];then
  
               awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $13}' $stat_file
  
            else
  
               echo 0
  
            fi
  
             ;;
  
          econ)
  
            #connection errors
  
            #FRONTEND has not this field
  
            if [ "$server_name" != "FRONTEND" ];then
  
               awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $14}' $stat_file
  
            else
  
               echo 0
  
            fi
  
             ;;
  
         eresp)
  
            #response errors
  
            #FRONTEND has not this field
  
            if [ "$server_name" != "FRONTEND" ];then
  
               awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $15}' $stat_file
  
            else
  
               echo 0
  
            fi
  
             ;;
  
      status)
  
            #status
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $18}' $stat_file
  
            ;;
  
       chkfail)
  
            #number of failed checks
  
            #FRONTEND and BACKEND has not this field
  
            if [ "$server_name" == "FRONTEND" -o "$server_name" == "BACKEND" ];then
  
               echo 0
  
            else
  
               awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $22}' $stat_file
  
            fi
  
            ;;
  
       chkdown)
  
            #number of UP->DOWN transitions
  
            #FRONTEND has not this field will return 0
  
            if [ "$server_name" != "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $23}' $stat_file
  
            else
  
               echo 0
  
            fi
  
            ;;
  
       lastchg)
  
            #last status change in seconds
  
            #FRONTEND has not this field will return 0
  
            if [ "$server_name" != "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $24}' $stat_file
  
            else
  
               echo 0
  
            fi
  
            ;;
  
      downtime)
  
            #total downtime in seconds
  
            #FRONTEND has not this field will return 0
  
            if [ "$server_name" != "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $25}' $stat_file
  
            else
  
               echo 0
  
            fi
  
            ;;
  
         lbtot)
  
            #total number of times a server was selected
  
            #FRONTEND has not this field
  
            if [ "$server_name" != "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $31}' $stat_file
  
            else
  
               echo 0
  
            fi
  
            ;;
  
          rate)
  
            #number of sessions per second over last elapsed second
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $34}' $stat_file
  
            ;;
  
    rate_limit)
  
            #limit on new sessions per second
  
            #only FRONTEND has this field
  
            if [ "$server_name" == "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $35}' $stat_file
  
            else
  
                  echo 0
  
            fi
  
            ;;
  
      rate_max)
  
            #max number of new sessions per second
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $36}' $stat_file
  
            ;;
  
check_status)
  
            #status of last health check
  
            if [ "$server_name" == "FRONTEND" -o "$server_name" == "BACKEND" ];then
  
               echo "NULL"
  
            else
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $37}' $stat_file
  
            fi
  
            ;;
  
      hrsp_1xx)
  
            #http response with 1xx code
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $40}' $stat_file
  
            ;;
  
      hrsp_2xx)
  
            #http response with 2xx code
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $41}' $stat_file
  
            ;;
  
      hrsp_3xx)
  
            #http response with 3xx code
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $42}' $stat_file
  
            ;;
  
      hrsp_4xx)
  
            #http response with 4xx code
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $43}' $stat_file
  
            ;;
  
      hrsp_5xx)
  
            #http response with 5xx code
  
            awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $44}' $stat_file
  
            ;;
  
      req_rate)
  
            #HTTP requests per second over last elapsed second
  
            #only FRONTEND has this field,others will return 0
  
            if [ "$server_name" == "FRONTEND" ];then
  
               awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $47}' $stat_file
  
            else
  
               echo 0
  
            fi
  
            ;;
  
req_rate_max)
  
            #max number of HTTP requests per second observed
  
            #only FRONTEND has this field,others will return 0
  
            if [ "$server_name" == "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $48}' $stat_file
  
            else
  
                  echo 0
  
            fi
  
            ;;
  
       req_tot)
  
            #total number of HTTP requests recevied
  
            #only FRONTEND has this field,others will return 0
  
            if [ "$server_name" == "FRONTEND" ];then
  
                  awk -F"," '$1=="'$pool_name'"&&$2=="'$server_name'"{print $49}' $stat_file
  
            else
  
                  echo 0
  
            fi
  
            ;;
  
             *)
  
               echo "please input the correct argument"
  
            ;;
  
esac


页: [1]
查看完整版本: zabbix监控haproxy, zabbix监控DRBD状态 ,zabbix监控lvs连接