shell脚本编写案例--实战

shell脚本编写案例

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

一、每个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使用过的,显示小数点后两位

shell脚本编写案例--实战_第1张图片

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将永远不会从标准输入中读取。
支持的运算包括:

  • 加法
  • 减法
  • 乘法
    / 除法
    ^ 指数
    % 余数
    shell脚本编写案例--实战_第2张图片

你可能感兴趣的:(Linux基础,服务器,运维)