免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2757 | 回复: 4
打印 上一主题 下一主题

perl 监控报警间隔时间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-22 14:26 |只看该作者 |倒序浏览
用perl脚本些一个监控脚本实现短信报警,但是如果检测失败就会不停的报警。
怎么才能实现像nagios那样设置检测失败重试次数和报警间隔时间呢?

论坛徽章:
0
2 [报告]
发表于 2011-01-22 14:30 |只看该作者
检测失败次数加个计时器,报警时间间隔设置alarm信号
这个不知道行不,没做过这种

论坛徽章:
0
3 [报告]
发表于 2011-01-22 14:38 |只看该作者
不知道那个计数器怎么加,能给我说明一下吗。
假如这个计数器是个变量的话,那程序脚本退出了之后,下次再运行脚本这个变量不就又变成0了。

论坛徽章:
0
4 [报告]
发表于 2011-01-22 14:40 |只看该作者
有没有高手直接能写出一个脚本提供以下功能!我以前写过,然后能满足条件,但占用系统资源太高!

脚本要求!假如监控ip是不是存活192.168.0.1

1、5秒监控一次,如果连续监控5次后,192.168.0.1仍然是死的话,就发邮件警告。

2、只发一次警告,然后脚本还是继续监控是否存活每5秒,如果死的话,就不再发警告。如果连续5次,监控到是活的,则发信息,提供主机恢复正常。



活的脚本

if [ `nmap -sP 192.168.0.1 | grep "1 host up" | wc -l ` -eq 1 ]
then
       echo "主机是活的"
fi


if [ `nmap -sP 192.168.0.1 | grep "1 host up" | wc -l ` -ne 1 ]
then
       echo "主机是死的"
fi


上面这些是引用本论坛“todayhero"会员的话。我就是想实现这样的功能

论坛徽章:
0
5 [报告]
发表于 2011-01-22 15:48 |只看该作者
本帖最后由 r_zack 于 2011-01-22 15:52 编辑

计数器本身不复杂,但考虑到你程序的实用性——虽然你没有提到,但你程序只监控一个IP是很无用的
所以你要做的就是fork,对每个被控IP专门fork一个子进程去监控。①

剩下的就简单了,每个子进程只要通过死循环每sleep 5秒执行一次Net:ing
失败则计数器+1,成功则计数器判断之前是否大于0,“是”则发邮件通知恢复并清零,“否”则什么都不做(所以不用判断否);
计数器等于5则邮件告警;(因为你想要大于5什么都不做,那就不要去判断大于小于5了)

就是这样。

注①:接下来你可以通过各种方法比如socket或写文件等等等等来通知哪个子进程监控哪个IP,通信的内容就是子进程PID和被控IP的对应。

——这是保持多个fork不收割,当然你也可以每5秒fork然后收割……如果你不嫌麻烦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP