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


    运维监控总少不了一些脚本来监控自己的机器,博主自己写了个监控,并通过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
  • 相关阅读:
    ADO连接access和oracle的一个区别
    我的大救星——Oracle APEX 快速Web开发(鼠标点点即可开发出专业级Web应用)
    Sql Server 2008 R2 error:40 错误处理
    我的第一个WPF程序
    开源社会网络分析工具NodeXL介绍
    JavaScript学习笔记1之基础知识点
    JavaScript学习笔记6 之经典神坑题整理
    JavaScript学习笔记2之Tab切换
    变量声明和函数声明会提升到当前作用域顶部
    JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动
  • 原文地址:https://www.cnblogs.com/xing901022/p/3359198.html
Copyright © 2020-2023  润新知