shell脚本编写案例--实战

一、每个node配置一个监控,算出“异常请求量/总请求量”的值

要求:按照每个小时的0-10、10-20、20-30……六个时间段来计算,每10分钟运行一次,计算上个完整10分钟的。
1.这个是总请求量的命令
在这里插入图片描述
2.异常请求量的命令
在这里插入图片描述
d0=date +%F" "%H:$minute
这边也要10分钟前,否则每个小时的第一次运行拼出来的时间就不对了
另外,还要考虑下每天0:0x运行的情况

time_minute=$(date --date '-10 min' +%F" "%H:%M)   //获取当前时间的前十分钟时间 格式是:2022-12-02 17:17
#上一行还可以 写成这个 time_minute=$(date -d '-10 min' +%F" "%H:%M)
grep_string=${time_minute::-1}   //截取前十分钟的分钟的第一位   格式:2022-12-02 17:1
log_date=${time_minute::-6}       //只能获得当天的日期 年月日    格式:2022-12-02 

total=$(grep "${grep_string}" /home/guess/java/node1/logs/access_log.${log_date}.log  | grep -c "/api/worldCup/user/phoneToken")
error=$(grep "${grep_string}" /home/guess/java/node1/logs/pk-server.error-log.${log_date}.*.log | grep -c "手机号码解密接口发送异常")

echo "scale=2;$error*1000/$total" | bc       // scale=2是配合bc使用过的,显示小数点后两位

在这里插入图片描述

time1=`env LANG=en_us.UTF-8 date --date "-10 min" "+%F %H:%M"|cut -c 1-15`
day1=`env LANG=en_us.UTF-8 date --date '-10 min' '+%F'`
x=`grep "${time1}" /home/guess/java/node1/logs/access_log.${day1}.log | grep -c "/api/worldCup/user/phoneToken"`
y=`grep "${time1}" /home/guess/java/node1/logs/pk-server.error-log.${day1}.*.log | grep -c "手机号码解密接口发送异常"`
let total=$y*1000/$x   //let是整数型的

bc是一种支持任意精度数字的语言,支持语句的交互式执行。在语法上与C编程语言有一些相似之处。通过命令行选项可以使用标准数学库。如果需要,将在处理任何文件之前定义数学库。
bc首先按照列出的顺序处理命令行上列出的所有文件中的代码。处理完所有文件后,bc从标准输入中读取。所有代码在读取时执行。如果文件中包含停止处理器的命令,bc将永远不会从标准输入中读取。
支持的运算包括:

  • 加法
  • 减法
  • 乘法
    / 除法
    ^ 指数
    % 余数
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值