自动运维工具和系统分享!

“网络就像wifi 。没有过错的时候,没有人意识到它的存在 。”这句话有无数个版本,但对于网络工程师来说,这是他们说的 。
即使是上千员工的公司,网络工程师的数量也只有个位数,所以他们的工作鲜为人知 。
“网络有问题吗?”这句话几乎成了所有SRE故障排除的口头禅 。如果这个时候网络工程师沉默了,或者拿不出足够的证据,那几乎可以肯定 。
如何让网络环境的运行状态更加透明?每次生意失败怎么证明自己的清白?这不仅是基础服务团队要关心的内容,也是整个技术团队都想知道的黑匣子 。
监控
网络生存监控
对于SRE来说,需要监控程序是否正常;对于主机组,需要监控服务器硬件是否正常;对于网络,我们首先需要关心的是网络设备是否可达 。当一个TOR不可达的时候,基本上就预示着一个服务器会不可达,业务的痛苦是相当剧烈的 。
网络监控最好尽可能与业务监控系统解耦,因为网络故障很可能导致业务系统异常 。如果碰巧导致业务监控系统异常,网络设备的告警就失去了可靠性,更何况“监控不准”的锅是谁的 。这种情况会使网络工程师的故障排除陷入被动,延长故障时间 。
每个网络工作者在离开学校的那一刻就已经具备了基本的编程基础 。况且交换机的数量和服务器的数量有一个数量级的差别,所以如果你能听懂几句python,100+的python代码就能搞定一个简单的监控设备存活的程序 。Github中的可搜索NodePingManage就是一个很好的例子,通过多点部署可以消除单点故障 。有了这种工具,整个网络各个角落的可达性终于变得清晰起来,黑暗的网络环境似乎也反射出了一丝光亮 。
设备日志监控
虽然设备生存告警可以预警很多异常,准确率很高,但是对于冗余性好的网络来说,并不代表完全没有问题 。这时候细心的网络工程师会去看日志,日志可以反映更多细节 。对于10000台服务器的规模,网络设备的数量也是1000台,但是一个一个的查看日志,判断有没有异常,简直就是噩梦 。
“日志提醒”程序已经成为网络工程师在家旅行时的必备产品 。他们需要的只是一个系统日志服务器和一个日志监控程序 。当日志中出现特殊关键字时,可以触发邮件+短信预警 。这么高大上的工具当然需要更多的编程技巧,150+的python代码就能搞定 。Github中有很多类似的解决方案 。搜索LogScanWarning以获取演示案例 。
从此可以发现网络中的异常,比如:风扇转速异常/电源模块故障//ospf邻居状态抖动/端口拍打//有黑客在爆我的设备/设备硬件奇偶错误//模块接收和点亮异常//内核错误等 。优秀的网络工程师可以在故障发生时快速定位,牛X的网络工程师可以在故障发生前消除隐患,做到防患于未然 。
流量监控
高速公路铺得再好,也容不下很多车 。网络工程师也有责任保证网络畅通、质量高、不丢包、稳定延时 。这时候流量监控就是刚需了 。
业务的快速发展体现在网络层面,即DC内部流量//DCI流量//IDC出口流量/专线流量的增加 。流量监控可以准确把握业务的高峰和低谷 。当线路需要扩容时,带宽利用率是老板参考的一个重要数据 。一般来说,当线路中的流量超过50%时,就可以启动扩容,因为这意味着当备用链路下行时,主线路会发生拥塞 。
错误监控界面
接口的错误包监控和流量监控一样,可以通过snmp收集 。OID:ifOutErrors、iFinerErrors和错误包的增量将直接影响服务的服务质量 。一旦发现需要先治疗,服务就会带着一堆TcpTimeOut指标上门 。
当然还有很多信息可以通过snmp收集,比如设备的CPU//内存/温度/防火墙的会话等 。掌握这些信息对于了解设备的工作环境也是相当有益的 。如果你想成为一个自动巡逻工具,那么这些指标必不可少 。市面上有很多提供网络监控的软件,比如Falcon/Zabbix/网络安全管理软件产品/Cacti/Nigos等 。还有一些开源和付费的软件也有类似的功能,这里就不赘述了 。
制造自动化运维工具
第一章的组合拳打完之后,基本上不会出现“意外失败”,所有的异常都要有据可查 。当SRE莫名其妙地提出关于网络环境的问题时,你应该已经胸有成竹了 。
然而,网络工程师的工作不仅仅是救火 。在日常运维工作中,经常需要进行一些在线改动/机房扩容/业务故障排除等 。符合业务发展 。作为一个“懒”的网络工程师,程序能帮上什么忙?
用户设备跟踪器
这个术语是从Solarwinds suite中的一个组件借来的,字面意思是“用户设备跟踪器” 。在中小型企业网络的运维中,经常会有这样的需求:


推荐阅读