设为首页 收藏本站
查看: 990|回复: 0

[经验分享] zabbix监控haproxy, zabbix监控DRBD状态 ,zabbix监控lvs连接

[复制链接]

尚未签到

发表于 2019-1-4 11:39:54 | 显示全部楼层 |阅读模式
#!/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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659283-1-1.html 上篇帖子: LVS 负载均衡调度器 下篇帖子: LVS基于socket负载均衡模式高可用集群部署方案实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表