基于前面的四次实验,已经积累了一定的经验,现在可以经行进阶设计;
实验目的:定时巡检每台设备的邻居,若出现信息不对称,则发出告警信息。
过程:基于前面设置的环境,cdp协议是每60s进行,一次信息通告,180s内没有回复则清楚邻居信息。可以通过新建一张新表,将新表与旧表进行比较,如果出现信息不对称的情况则可认为网络的某个端口down
思路:写入数据库后逐条取出进行匹配,这里需要考虑到,如果数据库存的内容过大,一次性写入内存会给计算机带来不必要的开销,所以,建议一次查询一条。即取一条信息后查询原表,信息一致则网络稳定。
查询语句,查找是否有相应条目,如果有,bool应为1L,否则为0L
考虑到有可能设备登陆不成功,此时应该是抛出异常并跳过该设备
此时网络已经稳定,之前数据库中记录的链路条目是不够的,嗯,我是故意的,正常来说应该是42条,此时少了9条端口,稍后会增加,系统自动增加
此时再看数据库
达到理想的效果
查看cdp邻居信息
我们故意断开两根线,来检查代码性能
等待2min,后再查看cdp信息,此为cdp协议的性质决定的,此时应有4条告警信息才是正确的
这里设置的逻辑是:查询一次就自动更新一次记录的时间,如果未更新则证明该线路未被查询到,这里设置,当Change_record的时间比当前时间晚,即可认为该线路是down,因为没有更新过
感叹号表示这条链路有问题
至此,整个小型项目部署完成。本设计仅仅是为了打开脑洞,验证自动化巡检的思路的可行性,以及开拓未来巡检可以开发设计的功能,读写入关系型数据库是一个思路,操作非关系型数据库是另一个思路,都是可以做的,后续会利用mongodb进行设计,以检验两种数据库的在工作效率上的不同。另外通过收集到这一系列参数,笔者想尝试着,转化成数学语言,通过机器学习算法通过预测设备的工作状况来动态检查设备,以提高采集效率,降低巡检设备的工作压力
本文转自:
http://yerikyu.blog.51cto.com/11421505/1962212
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Rockyw | If it solves your problem, please mark as answer. Thanks !