服务器负载监控以及文字处理脚本

时间:2022-04-22
本文章向大家介绍服务器负载监控以及文字处理脚本,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

运维监控总少不了一些脚本来监控自己的机器,博主自己写了个监控,并通过sleep来控制输出的间隔时间。如果想要获取其他的相关信息,可以采用类似的方式,添加即可。

首先是服务器的负载监控脚本,主要输出了 内存,CPU,网络连接等信息

#!/bin/sh
while true
do

TOP=`top -b -n 2 | grep Cpu |tail -2`
FREE=`free -m`
SWAP=`echo $FREE | grep Swap | cut -d":" -f 4`
MEM=`echo $FREE | grep Mem | cut -d: -f 2`
#cpu status##########################################################

IDLE=`echo $TOP | awk '{print $14}'| sed s/id,//`
#swap status#########################################################
swap_total=`echo $SWAP | awk '{print $1}'`
swap_free=`echo $SWAP| awk '{print $3}'`

#mem status##########################################################
mem_total=`echo $MEM| awk '{print $1}'`
mem_used=`echo $MEM | awk '{print $2}'`
mem_free=`echo $MEM| awk '{print $3}'`
caches=`echo $MEM| awk '{print $6}'`

#tcp status##########################################################
closed_wait=`netstat -an| awk '/^tcp.*CLOSED_WAIT/' | wc | awk '{print $1}'`
established=`netstat -an| awk '/^tcp.*ESTABLISHED/' | wc | awk '{print $1}'`

#date infomation####################################################
DATE=`date +"%F %T"`

#echo all the infomation############################################
echo $DATE" "$IDLE" "$mem_total" "$mem_used" "$mem_free" "$caches" "$swap_total" "$swap_free" "$closed_wait" "$established >> Load.log
sleep 1
done

然后是单独列出 日期时间以及CPU负载的 文本处理脚本,主要进行了自动的筛减数据,及分列处理

#!/bin/bash
count=1
num=10
while read line;do
    ((count++))
{
    if [ $count -eq $num ];then
         count=1 && echo $line >> odb.txt
    fi
}
done < db.txt

最后是脚本输出的最后处理,过滤掉CPU获取失败的行,并把CPU空闲转化为CPU的利用率。最后的脚本效率极差,可以进行优化。

#!/bin/bash
while read line;do
{
    READ=`echo $line | awk '{print $3}'`
    WE="0.0%wa,"
    NUM=`echo $READ    | tr -cd '0-9'`
    NUM1=`echo $NUM | sed 's/(.)$/.1/g'`
    RESULT=`echo "scale=3;1000-$NUM1"|bc`
    RERE=`echo $RESULT | sed 's/.*(...)$/1/'`

    HAHA=`echo $line | awk '{print $1,$2}'`

    if [ $READ != $WE ];then
        echo $HAHA $RERE% >> idb.txt 
    fi
}
done < odb.txt