每10秒为周期,输出一次采集的数据;

第一次,获取相关数据,写入文件中;

第二次以后,从文件中获取前一次的数据,并将这次的数据替换进文件中,并计算此次和前一次的差值,并输出

#!/bin/bashSNIC_DATA_FILE='/home/cenquanyu/bbc_snic_data_10.txt'# CPU数据收集
function cpu_idle_w_cal() {# CPU空闲率core=${1}total=0cpu_stat=`cat /proc/stat | head -${core}`for i in {2..9}; doarr[$i]=`echo $cpu_stat | awk -v t="${i}" '{print $t}'`if [ $i -eq 5 ]; thenidle=$((arr[$i]))fitotal=$((total + arr[$i]))done# core=1代表总的cpu核的数据if [ $core -eq 1 ]; thenecho cpu_total:$total >> $SNIC_DATA_FILEecho cpu_idle:$idle >> $SNIC_DATA_FILEelse# 每个核的数据,core要减2,当前的core代表行数,-2后为核数core=$((core-2))echo cpu_${core}_total:$total >> $SNIC_DATA_FILEecho cpu_${core}_idle:$idle >> $SNIC_DATA_FILEfi
}
# 第一次数据写入文件中
function cpu_core_idle_w() {cpu_core_num=$(cat /proc/stat | grep 'cpu' | wc -l)a=1# 每个核的数据写入文件中while ((a <= cpu_core_num)); docpu_idle_w_cal $a((a++))done
}
# 从文件中读出数据并计算
function cpu_idle_r_cal() {# CPU空闲率core=${1}total=0cpu_stat=`cat /proc/stat | head -${core}`for i in {2..9}; doarr[$i]=`echo $cpu_stat | awk -v t="${i}" '{print $t}'`if [ $i -eq 5 ]; thenidle=$((arr[$i]))fitotal=$((total + arr[$i]))donecpu_idle_2=$idlecpu_total_2=$totalif [ $core -eq 1 ]; thencpu_idle_1=`cat "${SNIC_DATA_FILE}" | grep cpu_idle | grep -Po "(\d+(\.\d+)?)"`cpu_total_1=`cat "${SNIC_DATA_FILE}" | grep cpu_total | grep -Po "(\d+(\.\d+)?)"`elsecorenum=$((core-2))cpu_idle_1=`cat "${SNIC_DATA_FILE}" | grep "cpu_${corenum}_idle" | grep -Po "(\d+(\.\d+)?)" | sed -n '2p'`cpu_total_1=`cat "${SNIC_DATA_FILE}" | grep "cpu_${corenum}_total" | grep -Po "(\d+(\.\d+)?)" | sed -n '2p'`ficpu_idle_val=$((cpu_idle_2-cpu_idle_1))cpu_total=$((cpu_total_2-cpu_total_1))cpu_idle=`awk 'BEGIN{printf "%.3f\n",'$cpu_idle_val'/'$cpu_total'}'`if [ $core -eq 1 ]; then# 读出数据的同时,替换对应行的值sed -i 's/^.*'cpu_idle'.*$/cpu_idle:'${cpu_idle_2}'/' $SNIC_DATA_FILEsed -i 's/^.*'cpu_total'.*$/cpu_total:'${cpu_total_2}'/' $SNIC_DATA_FILEecho cpu_idle:$cpu_idleelsesed -i 's/^.*'cpu_${corenum}_idle'.*$/'cpu_${corenum}_idle:${cpu_idle_2}'/g' $SNIC_DATA_FILEsed -i 's/^.*'cpu_${corenum}_total'.*$/'cpu_${corenum}_total:${cpu_total_2}'/g' $SNIC_DATA_FILEecho cpu_${corenum}_idle:$cpu_idlefi
}function cpu_core_idle_r() {cpu_core_num=`cat /proc/stat | grep 'cpu' | wc -l`b=1# 读出每个核的数据while ((b <= cpu_core_num)); docpu_idle_r_cal $b((b++))done
}function cpu_server_loadavg() {# CPU负载--最近一分钟,最近五分钟,最近十五分钟cpu_server_loadavg_1=$(cat /proc/loadavg | awk '{print $1}')cpu_server_loadavg_5=$(cat /proc/loadavg | awk '{print $2}')cpu_server_loadavg_15=$(cat /proc/loadavg | awk '{print $3}')echo cpu_server_loadavg_1:$cpu_server_loadavg_1echo cpu_server_loadavg_5:$cpu_server_loadavg_5echo cpu_server_loadavg_15:"$cpu_server_loadavg_15"
}# 内存数据收集
function mem_data_collect() {# 内存空闲量-MEM_FREE,内存总量-MEM_TOTAL,内存使用量-MEM_USED,内存使用率-MEM_USED_PERCENTmem_total=$(cat /proc/meminfo | grep 'MemTotal' | awk '{print $2}')mem_buffers=$(cat /proc/meminfo | grep 'Buffers' | awk '{print $2}')mem_cached=$(cat /proc/meminfo | grep 'Cached' | head -1 | awk '{print $2}')mem_free=$((mem_free + mem_buffers + mem_cached))mem_used=$((mem_total - mem_free))mem_used_percent=$(awk 'BEGIN{printf "%.2f\n",'$mem_used'/ '$mem_total'}')echo mem_free:$mem_freeecho mem_total:$mem_totalecho mem_used:$mem_usedecho mem_used_percent:$mem_used_percent}# 磁盘数据收集
function disk_data_collect() {num=`df -BK | grep -v 'none\|nodedev\|tmpfs\|devtmpfs' | awk '{print $2}' | tail -n +2 | grep -Po "(\d+(\.\d+)?)"  | sed '/^$/d' | wc -l`total_info=`df -BK | grep -v 'none\|nodedev\|tmpfs\|devtmpfs' | awk '{print $2}' | tail -n +2 | grep -Po "(\d+(\.\d+)?)"`free_info=`df -BK | grep -v 'none\|nodedev\|tmpfs\|devtmpfs' | awk '{print $4}' | grep -Po "(\d+(\.\d+)?)"`used_info=`df -BK | grep -v 'none\|nodedev\|tmpfs\|devtmpfs' | awk '{print $3}' | grep -Po "(\d+(\.\d+)?)"`while ((i <= num)); dodisk_used_size=`echo $used_info | awk -v t="${i}" '{print $t}'`disk_total_used=$((disk_total_used + disk_used_size))disk_free_size=`echo $used_info | awk -v t="${i}" '{print $t}'`disk_total_free=$((disk_total_free + disk_free_size))disk_total_size=`echo $total_info | awk -v t="${i}" '{print $t}'`disk_total_total=$((disk_total_total + disk_total_size))((i++))doneecho disk_total_used:$disk_total_useddisk_total_used_percent=$(awk 'BEGIN{printf "%.3f\n",'$disk_total_used'/ '$disk_total_total'}')echo disk_total_used_percent:$disk_total_used_percent}function net_total_bitps_w() {# 整机网卡总接收比特速率 -- 写入NIC_NUM=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | wc -l`   # 网卡数量,除去lo网卡inbit_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $2}'`i=1while ((i <= NIC_NUM)); doinbit_val=`echo $inbit_total_val | awk -v t="${i}" '{print $t}'`echo inbit_nic_name_${i}:$inbit_val >> $SNIC_DATA_FILE((i++))done# 整机网卡总发送比特速率 -- 写入NIC_NUM=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | wc -l`outbit_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $10}'`i=1while ((i <= NIC_NUM)); dooutbit_val=$(echo $outbit_total_val | awk -v t="${i}" '{print $t}')echo outbit_nic_name_${i}:$outbit_val >> $SNIC_DATA_FILE((i++))done
}function net_total_bitps_r() {# 整机网卡总接收比特速率 -- 读取NIC_NUM=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | wc -l`inbit_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $2}'`i=1while ((i <= NIC_NUM)); doinbit_val_2=`echo $inbit_total_val | awk -v t="${i}" '{print $t}'`inbit_val_1=`cat $SNIC_DATA_FILE | grep inbit_nic_name_${i} | grep -Po "(\d+(\.\d+)?)" | sed -n '2p'`sed -i 's/^.*'inbit_nic_name_${i}'.*$/'inbit_nic_name_${i}:${inbit_val_2}'/g' $SNIC_DATA_FILEinbps_bytes=$((inbit_val_2 - inbit_val_1))net_total_in_bitps=$((net_total_in_bitps + 8 * inbps_bytes / 10))((i++))doneecho net_total_in_bitps:$net_total_in_bitps# 整机网卡总发送比特速率 -- 读取outbit_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $10}'`i=1while ((i <= NIC_NUM)); dooutbit_val_2=`echo $outbit_total_val | awk -v t="${i}" '{print $t}'`outbps_val_1=`cat $SNIC_DATA_FILE | grep outbit_nic_name_${i} | grep -Po "(\d+(\.\d+)?)" | sed -n '2p'`sed -i 's/^.*'outbit_nic_name_${i}'.*$/'outbit_nic_name_${i}:${outbit_val_2}'/g' $SNIC_DATA_FILEoutbps_bytes=$((outbit_val_2-outbps_val_1))net_total_out_bitps=$((net_total_out_bitps + 8 * outbps_bytes / 10))((i++))doneecho net_total_out_bitps:$net_total_out_bitps
}if [ ! -f $SNIC_DATA_FILE ]; thentouch $SNIC_DATA_FILEecho 1 > $SNIC_DATA_FILEcpu_core_idle_wnet_total_bitps_w# 写完内容,更改首行的1为2sed -i '1s/1/2/' $SNIC_DATA_FILE
elsecpu_core_idle_rcpu_server_loadavgmem_data_collectdisk_data_collectnet_total_bitps_r
fi

每60秒为周期,输出一次采集的数据;

第一次,获取相关数据,写入文件中;

第二次以后,从文件中获取前一次的数据,并将这次的数据替换进文件中,并计算此次和前一次的差值,并输出

#!/bin/bashSNIC_DATA_FILE='/home/cenquanyu/bbc_snic_data_60.txt'
# 网卡相关参数(60s周期)
function net_other_w() {# 1.整机网卡总接收包速率NIC_NUM=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | wc -l`inpkg_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $3}'`i=1while ((i <= NIC_NUM)); doinpkg_val=`echo $inpkg_total_val | awk -v t="${i}" '{print $t}'`echo inpkg_nic_name_${i}:$inpkg_val >> $SNIC_DATA_FILE((i++))done# 2.整机网卡总发送包速率outpkg_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $11}'`i=1while ((i <= NIC_NUM)); dooutpkg_val=`echo $outpkg_total_val | awk -v t="${i}" '{print $t}'`echo outpkg_nic_name_${i}:$outpkg_val >> $SNIC_DATA_FILE((i++))done# 3.TCP接收包速率tcp_in_segs=`cat /proc/net/snmp | grep 'Tcp:' | tail -1 | awk '{print $11}'`echo tcp_in_segs:$tcp_in_segs >> $SNIC_DATA_FILE# 4.TCP发送包速率tcp_out_segs=`cat /proc/net/snmp | grep 'Tcp:' | tail -1 | awk '{print $12}'`echo tcp_out_segs:$tcp_out_segs >> $SNIC_DATA_FILE# 5.TCP丢包速率tcp_loss=`cat /proc/net/netstat | awk '(f==0) {name=$1; i=2; \while ( i<=NF) {n[i] = $i; i++ };f=1; next} (f==1){ i=2; \while ( i<=NF){ printf "%s%s = %d\n", name, n[i], $i; i++}; f=0}' | grep 'TCPLossFailures' | awk '{print $3}'`echo tcp_loss:$tcp_loss >> $SNIC_DATA_FILE# 6.当前建立的TCP连接数 -- NET_TCP_CURR_ESTABnet_tcp_curr_estab=`cat /proc/net/snmp | grep 'Tcp:' | tail -1 | awk '{print $10}'`echo net_tcp_curr_estab:$net_tcp_curr_estab >> $SNIC_DATA_FILE
}function net_other_r() {# 1.整机网卡总接收包速率NIC_NUM=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | wc -l`inpkg_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $3}'`i=1while ((i <= NIC_NUM)); doinpkg_val_2=`echo $inpkg_total_val | awk -v t="${i}" '{print $t}'`inpkg_val_1=`cat $SNIC_DATA_FILE | grep inpkg_nic_name_${i} | grep -Po "(\d+(\.\d+)?)" | sed -n '2p'`sed -i 's/^.*'inpkg_nic_name_${i}'.*$/'inpkg_nic_name_${i}:${inpkg_val_2}'/g' $SNIC_DATA_FILEinpkg_val=$((inpkg_val_2 - inpkg_val_1))net_total_in_pkg=$((net_total_in_pkg + inpkg_val / 10))((i++))doneecho net_total_in_pkg:$net_total_in_pkg# 2.整机网卡总发送包速率outpkg_total_val=`cat /proc/net/dev | tail -n +3 | grep -v 'lo:' | awk '{print $11}'`i=1while ((i <= NIC_NUM)); dooutpkg_val_2=`echo $outpkg_total_val | awk -v t="${i}" '{print $t}'`outpkg_val_1=`cat $SNIC_DATA_FILE | grep outpkg_nic_name_${i} | grep -Po "(\d+(\.\d+)?)" | sed -n '2p'`sed -i 's/^.*'outpkg_nic_name_${i}'.*$/'outpkg_nic_name_${i}:${outpkg_val_2}'/g' $SNIC_DATA_FILEoutpkg_val=$((outpkg_val_2 - outpkg_val_1))net_total_out_pkg=$((net_total_out_pkg + outpkg_val / 10))((i++))doneecho net_total_out_pkg:$net_total_out_pkg# 3.TCP接收包速率tcp_in_segs_2=`cat /proc/net/snmp | grep 'Tcp:' | tail -1 | awk '{print $11}'`tcp_in_segs_1=`cat $SNIC_DATA_FILE | grep tcp_in_segs | grep -Po "(\d+(\.\d+)?)"`sed -i 's/^.*'tcp_in_segs'.*$/'tcp_in_segs:${tcp_in_segs_2}'/g' $SNIC_DATA_FILEtcp_in_segs=$((tcp_in_segs_2 - tcp_in_segs_1))net_tcp_in_segs=$((tcp_in_segs / 60))echo net_tcp_in_segs:$net_tcp_in_segs# 4.TCP发送包速率tcp_out_segs_2=`cat /proc/net/snmp | grep 'Tcp:' | tail -1 | awk '{print $12}'`tcp_out_segs_1=`cat $SNIC_DATA_FILE | grep tcp_out_segs | grep -Po "(\d+(\.\d+)?)"`sed -i 's/^.*'tcp_out_segs'.*$/'tcp_out_segs:${tcp_out_segs_2}'/g' $SNIC_DATA_FILEtcp_out_segs=$((tcp_out_segs_2 - tcp_out_segs_1))net_tcp_out_segs=$((tcp_out_segs / 60))echo net_tcp_out_segs:$net_tcp_out_segs# 5.TCP丢包速率period=60tcp_loss_2=`cat /proc/net/netstat | awk '(f==0) {name=$1; i=2; \while ( i<=NF) {n[i] = $i; i++ };f=1; next} (f==1){ i=2; \while ( i<=NF){ printf "%s%s = %d\n", name, n[i], $i; i++}; f=0}' | grep 'TCPLossFailures' | awk '{print $3}'`tcp_loss_1=`cat $SNIC_DATA_FILE | grep tcp_loss | grep -Po "(\d+(\.\d+)?)"`sed -i 's/^.*'tcp_loss'.*$/'tcp_loss:${tcp_loss_2}'/g' $SNIC_DATA_FILEtcp_loss_val=$(((tcp_loss_2 - tcp_loss_1)))net_tcp_loss=`awk 'BEGIN{printf "%.3f\n",'$tcp_loss_val'/ '$period'}'`echo net_tcp_loss:$net_tcp_loss
}if [ ! -f $SNIC_DATA_FILE ]; thentouch $SNIC_DATA_FILEecho 1 > $SNIC_DATA_FILEnet_other_w# 写完内容,更改首行的1为2sed -i '1s/1/2/' $SNIC_DATA_FILE
elsenet_other_r
fi

Shell脚本采集基础监控项数据(含采集周期)相关推荐

  1. SHELL 脚本编程基础

    目录 前言 一. shell 概述 1.1 shell 和 shell 脚本 1.1.1 什么是shell 1.1.2 shell的作用 1.1.3 shell脚本是什么 1.1.4 shell脚本能 ...

  2. Linux基础篇--shell脚本编程基础

    Linux基础篇–shell脚本编程基础 本章内容概要  编程基础  脚本基本格式  变量  运算  条件测试  配置用户环境 7.1 编程基础 程序:指令+数据 程序编程风格:   过程式:以指令为 ...

  3. 监控硬盘脚本linux,shell脚本实现磁盘监控系统

    利用shell脚本实现每隔60秒磁盘内存数据监控 #!/bin/bash #Author:GaoHongYu #QQ:1061767621 #Time:2019-12-24 18:43:22 #Nam ...

  4. Linux Shell脚本编程基础

    2 Linux Shell脚本编程基础 发表于: Linux, Shell, UNIX, 资源分享 | 作者: 谋万世全局者 标签: Linux,Shell,编程基础,脚本 本文作者:Leal 授权许 ...

  5. shell脚本的基础知识

    shell脚本的基础知识 1 什么是shell 2 shell脚本的意义 3 如何创建shell脚本 4 如何执行shell脚本 5如何对脚本脚本进行调试 6 脚本练习 1 什么是shell shel ...

  6. linux怎么监控守护进程,linux shell脚本守护进程监控svn服务

    最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

  7. shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。

    shell脚本由基础变量及特殊变量($@.$*.$#等)到实战. 一.shell脚本建立: shell脚本通常是在编辑器(如vi/vim)中编写,也可以在命令行中直接执行: 1.脚本开头:     规 ...

  8. linux基础—课堂随笔_03 SHELL脚本编程基础

    shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then 条件为真的分支代码  fi(结尾) 双分支 if(开头)判断条件:then 条件为 ...

  9. 详细介绍Linux shell脚本系列基础学习(列表)

    本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...

最新文章

  1. 一个Java多线程的问题,颠覆了我多年的认知!
  2. numpy中的broadcasting
  3. 模型融合(stackingblending)
  4. 廉价raid_如何查找80行代码中的廉价航班
  5. leetcode 47. 全排列 II 思考分析
  6. ad19pcb设置恢复默认_无需重装WINDOWS将计算机恢复到初始状态
  7. std::kill_dependency
  8. 黄梯云,李一军.管理信息系统(第七版)[M].北京:高等教育出版社,2019.8 课后二维码选择题
  9. Origin | 堆叠柱状图 | 多列(分组)堆积柱状图
  10. Chrome 添加自定义搜索引擎
  11. 2022 年中回顾|一文看懂预训练模型最新进展
  12. 最浪漫的程序员表白代码打动美人心
  13. 曾国藩:读书、交友、处事、养性,都在这里了
  14. 详细解析集成运算放大电路比例运算的工作原理
  15. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
  16. 关于微信小程序云开发,申请退款接口返回“订单不存在”的问题
  17. viewpager左右循环滑动,自动滑动广告栏
  18. isql登陆本地和远程sybase数据库
  19. java FUNCTION传入返回值模式简单记录
  20. Scrum板与Kanban如何抉择?敏捷工具:mouglu板与按照tnisvdpa

热门文章

  1. 做普惠AI实干家,华为云“Cloud+X”助力杭州打造数字经济第一城
  2. HCL_H3CNE综合实验
  3. PHP常用第三方包,php第三方包管理
  4. 魅族mx1Android4.4,魅族最新系统 Flyme 1.0 for MX(双核/四核)正式版 基于Android 4.0
  5. dwz php 联动,PHP利用DWZ.CN服务生成短网址
  6. 笔记③:牛客校招冲刺集训营---C++工程师(5.9 C++新特性)
  7. EF和Dapper之争的关键
  8. android沉浸式的实现
  9. esxi突然启动不起来了!显示:Error loading /sb.v00
  10. 我的暗影精灵BIOS做过的更改