zoukankan      html  css  js  c++  java
  • 简单监控脚本细节分析

    这一博文,是对上一博文的中两个脚本的细节的分析,内容不多,但是价值不小!

    其一,就是CPU的统计利用率,我采用的是top指令。计算用户态和内核态的使用率之和。

    function cpuSts(){
       content=`top -b -n 1| grep "Cpu(s)"`
       ##echo $content
       cpup=`echo ${content#*:}`
       cpuu=`echo ${cpup%us*}`
       cpuss=`echo ${cpup#*,}`
       cpus=`echo ${cpuss%sy*}`
       us=`echo "$cpuu" | sed 's/^[ 	]*//g'`
       sy=`echo "$cpus" | sed 's/^[ 	]*//g'`
       #echo $us
       ius=`echo $us |awk -F ' ' '{print $2}'`
       #echo $ius
       #echo $sy
       isy=`echo $sy |awk -F ' ' '{print $2}'`
       #echo $isy
    
       fius=`echo $ius |awk -F '%' '{print $1}'`
       fisy=`echo $isy |awk -F '%' '{print $1}'`
       #total=`echo $fius+$fisy | bc`   
       #total=$(echo "$total * 100" | bc)
       total=`echo "$fius $fisy" | awk '{printf("%0.2f
    ",$1+$2)}'`   
       #total=`echo "$total * 100" | bc`
       total=`echo "$total 100" | awk '{printf("%0.2f
    ",$1*$2)}'`
       echo "$total"
    }

    top参数不带-b的情况下,cpuSts不能作为后台程序被调度执行。否则会爆出下面的错误:

    [tomcat@p0-tkonline-css-web01 ~]$ tailf nohup.out
            top: failed tty get
    
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)

    另外,还有一点,关于上述的脚本,就是浮点数运算,在后台进程中进行时,不能用bc指令,我们可以采用awk的函数。因为bc在后台脚本运行时,会爆出下面的错误:

     [tomcat@p0-tkonline-css-web01 ~]$ tailf nohup.out
    (standard_in) 1: syntax error
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)

    其二,就是mongo数据库操作,统计一个时间段内的QA数量,脚本如下:

    #!/bin/sh
    mongo 100.126.22.156/tkrobotkdb -u xxx -p xxxx --eval 'et=new Date();st=new Date();st.setMinutes(st.getMinutes()-10);db.messageHistory.find({"channel":{"$nin":["CSS","SYS"]},"createTime":{"$gte":st,"$lte":et}}).count()'

    这个脚本的重点是,mongo的eval参数,在这个参数后面,可以写很复杂的mongo shell脚本。

    正如我这里的,在mongo shell里面,设置两个时间,分别表示起始时间和结束时间,相隔10分钟,然后在messageHistory这个collection里面查找相关数据在这个10分钟的间隔里面的数量,这里实现每10分钟统计一次QA数量。

    PS: 按条件导出mongo中指定的内容:

    ./mongoexport -h 100.126.22.156 -u xxx -p yyy -d tkrobotkdb -c messageHistory -o /home/tomcat/cshmessageHistory.json --type json -f "msgInId,createTime,type" -q '{"channel":"zzz","createTime" : { $gt: ISODate("2017-11-02T06:00:00Z")}}'

    希望能够帮助到有需要的你!

  • 相关阅读:
    gcc 编译
    UltraEdit 添加到右键菜单
    linux 编译错误:undefined reference to `__gxx_personality_v0'
    UltraEdit 取消生成.bak文件
    容器
    Windows CEvent事件
    Windows _beginthreadex 线程类与线程池
    C++ 工厂模式
    Mutex linux线程锁
    windows CRITICAL_SECTION 线程锁
  • 原文地址:https://www.cnblogs.com/shihuc/p/7797531.html
Copyright © 2011-2022 走看看