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")}}'

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

  • 相关阅读:
    HDU Railroad (记忆化)
    HDU 1227 Fast Food
    HDU 3008 Warcraft
    asp vbscript 检测客户端浏览器和操作系统(也可以易于升级到ASP.NET)
    Csharp 讀取大文本文件數據到DataTable中,大批量插入到數據庫中
    csharp 在万年历中计算显示农历日子出错
    csharp create ICS file extension
    CSS DIV Shadow
    DataTable search keyword
    User select fontface/color/size/backgroundColor设置 字体,颜色,大小,背景色兼容主流浏览器
  • 原文地址:https://www.cnblogs.com/shihuc/p/7797531.html
Copyright © 2011-2022 走看看