0
点赞
收藏
分享

微信扫一扫

基于bash的滑动窗口

山竹山竹px 2022-01-10 阅读 8

背景:本人就职于业务导向型的传统企业,技术部门虽有划分开发部和运行部,但运维实力仍属于基础运维。平时工作除了解决用户报障、监控服务可用性、监控服务器性能指标外,偶尔帮公司写写运维脚本,提高运维效率。

一个月前,协助领导编写了互联网IP可用性监控脚本,因告警容错度太差,巡检失败立即产生告警;在多次半夜被告警吵醒后,今天终于完成容错功能的编写,测试成功,完成上线。传送门如下:一只晨兴夜不得寐的运维人---基于SHELL脚本批量PING工具https://blog.csdn.net/weixin_42803243/article/details/120502221

按照惯例,进行需求分析:

  • 多次(3次)相同的告警内容才产生告警,过滤出告警内容
  • 如告警内容未在出现,则视为恢复,过滤出恢复内容

原理图:

代码详情: 

#取上次脚本执行结果
failContent=/dev/shm/failContent

##### more test
failContent_old1=/dev/shm/failContent_old1
failContent_old2=/dev/shm/failContent_old2

touch $failContent_old1
touch $failContent_old2

#store old failed Content
echo -e "" > $failContent_old2
cp $failContent_old1 $failContent_old2
echo -e "" > $failContent_old1
cp $failContent $failContent_old1

#init vars 清空保存结果的变量
echo -e "" > $failContent

#=========此处执行任务逻辑,并将错误输出添加到$failContent
WriteFail() {
echo -e "$failMessage" >> $failContent
}

#=========结果判断
#取此次结果和历史第二次结果的交集,为输出
#$fail = $failContent ∩ $failContent_old2
alert=$(cat $failContent $failContent_old2 | sort | uniq -d | xargs)

#取历史第二次结果 减去此次结果,为告警恢复
#$restore = $failContent_old2 - $failContent 
restore=$(sort $failContent $failContent $failContent_old2 | uniq -u | xargs)

echo "此次失败:" $failContent
echo "告警内容:" $alert
echo "告警恢复:" $restore
举报

相关推荐

通信滑动窗口

滑动窗口框架

数组-滑动窗口

3 滑动窗口

「算法」滑动窗口

算法-滑动窗口

0 条评论