代码改变世界

脚本获取rds慢日志

2019-03-30 16:54  ndzj  阅读(805)  评论(0编辑  收藏  举报

 

 

#!/bin/bash

#慢日志开始时间
stime='2019-03-05T00:01Z'
#慢日志结束时间
etime='2019-03-05T16:00Z'
#页面大小
pagenum=100
#rds实例ID
rds_id='rr-bp1487z0p4r345hra'

function get_slows {
python rds.py $1 $2 $3 $4
}


count=`get_slows "$stime" "$etime" 1 "$rds_id" |grep TotalRecordCount|awk -F' ' '{print $2}'`

if [ "$count" == "0" ];then
echo '没有慢日志~';exit
fi

pd=$(echo "scale=1;$count/"$pagenum""|bc)
xs=$(echo $pd|cut -d'.' -f2)
#总页数
zs=$(echo $pd|cut -d'.' -f1)

#判断计算总条数小于100时整数部分为0时,变量赋值为0
if [ ! -n "$zs" ];then
zs=0
fi

if [ "$xs" -gt 0 ];then
zs=$((zs+1))
fi

#sql总量
full_sql=$(echo `echo $stime|cut -d'T' -f1|sed -r 's#-#_#g'`_`echo $stime|cut -d'T' -f2|cut -d'Z' -f1|sed -r 's#:##g'`_`echo $etime|cut -d'T' -f1|sed -r 's#-#_#g'`_`echo $etime|cut -d'T' -f2|cut -d'Z' -f1|sed -r 's#:##g'`).sql

for i in `seq $zs`;do

get_slows "$stime" "$etime" "$i" "$rds_id">>/tmp/slow/$full_sql
done

#去重后sql
uniq_sql=uniq_$full_sql
grep SQLText /tmp/slow/"$full_sql"|sed -r 's#"SQLText": "##g'|sed 's/.$//'|sed 's/^ *//'|sed -r 's#\\n##g' |sed -r 's#\\##g'|sed -r 's#_[0-9]##g'|uniq -c|awk '{$1="";print $0}' >/tmp/slow/"$rds_id""$uniq_sql"
sed -i 's/$/;/' /tmp/slow/"$rds_id""$uniq_sql"


运行脚本结果
[rdsuser@ansible ~]$ ls /tmp/slow/
2019_03_05_1500_2019_03_06_1600.sql    uniq_2019_03_05_1500_2019_03_06_1600.sql

 

打赏: