NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# **收集日志相同错误代码累加,一定时间内超过多少个数,就告警** ## **有缺陷,日志太大的话,会计算不过来。** root@ali-hk-public-ops-jumperlog:~# cat /dev/shm/prebwbase prebwcode1 17 prebwcode2 9 prebwcode3 0 prebwcode4 0 root@ali-hk-public-ops-jumperlog:~# cat /dev/shm/prebwbase-pre prebwcode1 4 prebwcode2 3 prebwcode3 0 prebwcode4 0 awk 'NR==FNR{a[`$1`]=`$2`;}NR!=FNR{print `$1`"="a[`$1`]-`$2`}' prebwbase prebwbase-pre **awk 'NR==FNR{a[`$1`]=`$2`;}'** a是一个数组;当NR==FNR,也就是读取第一个文件的内容(第一个文件就是后面的prebwbase),以prebwbase中的`$1`作为数组索引号,以prebwbase中的`$2`作为数组的值; 因此,第一部分过后,有了一个数组a,具体的值为 a[prebwcode1]=10, a[prebwcode2]=9... **NR!=FNR{`print $1`"="a[`$1`]-`$2`}'** 当NR!=FNR时候,也就是读取第二个文件的内容(prebwbase-pre),`print $1`(打印prebwbase-pre中的第一列),`a[$1]`去数组a中获取值,并与第2个文件中的第2列做加减。 **执行结果:** prebwcode1=13 prebwcode2=6 ``` ####count for path-spre cd ${path_spre} && rm -rf /dev/shm/prebwcode* && \ for i in $(ls |grep bw-facade) do grep -a '"mcode":"-1"' $i |wc -l >>/dev/shm/prebwcode1 grep -a '"mcode":"-2"' $i |wc -l >>/dev/shm/prebwcode2 grep -a '"mcode":"-3"' $i |wc -l >>/dev/shm/prebwcode3 grep -a '"mcode":"-4"' $i |wc -l >>/dev/shm/prebwcode4 done && \ cd /dev/shm && \ for j in prebwcode{1..4} do echo "$j $(echo $(cat $j |tr -s '\n' '+')1-1 |bc -l)" done >/dev/shm/prebwbase && \ if [[ ! -e /dev/shm/prebwbase-pre ]] then cp -av /dev/shm/prebwbase /dev/shm/prebwbase-pre fi && \ cd /dev/shm && \ for k in $(awk 'NR==FNR{a[$1]=$2;}NR!=FNR{print $1"="a[$1]-$2}' prebwbase prebwbase-pre) do dnum=$(echo ${k} | awk -F '=' '{print $2}') if [[ ${dnum} -gt 10 ]] then curl $url -X POST -H "Content-Type: application/json" -d '{"title": "灰度BW错误日志15分钟个数:", "text": "'${k}'"}' fi done && \ cp -av /dev/shm/prebwbase /dev/shm/prebwbase-pre ```