很高兴和大家在这里分享,2019年很荣幸能够获得即时激励这一个荣誉,感谢各位领导的肯定和同事的帮助。来微众两年半了,学习到了很多,对运维开发的岗位有了新的认识,特别是网络运维系统的开发。

作为和网络相关的系统的开发者更要认真踏实,将稳定安全放在第一位,因为网络的影响范围非常之广,是整个互联网中的基础,定位异常并处理自然越快越好。以和元芳对接的网络自动化模块为例,聊聊我做的一些工作。


Who is 元芳?


有一次我在吃饭的时候和有位同事聊起他在半夜的时候被ECC的同事叫起来要开电脑去上设备查看一些信息,如若是误告或者是普通网络抖动耗费成本大,如若是真有故障,确认故障也消耗一定的时间。所以希望能在移动设备上尽快做完一些初步的检查。


于是我阅读了lewis和xxyang整理的SOP文档,发现SOP的第一步往往都只是用ecc帐号一些检查操作。因此我开发了一个元芳指令叫做netcheck,能够尽快取设备的回显,只需要@一次元芳就省去了拿出电脑、拿出token、等待开机的时间。这大大缩短了一二线运维响应的时间,有利于保障生产稳定运营,更好地服务行里的业务顺利开展。


这个模块设计的初衷是为了准确快速完成SOP。技术上,搭建RESTFUL API和元芳通信我使用了python里的flask框架,开发周期短;设备远程指令执行我使用pexpect对网络设备的不同型号开发并测试不同的模版,每一个功能点都要测试5-8个产品型号,才能投入生产。异步执行采用celery框架,redis作中间件,每个执行的异步任务都有图形界面可以查看执行结果、执行时间、错误原因,方便回溯问题。


流程介绍


网络组的同事@元芳,然后元芳发请求给网络自动化的系统,网络自动化系统执行相应的操作。这些操作包括但不限于:在网络设备上执行命令并获取输出,查询网络设备、专线相关的性能数据,查询网络设备的日志。这样对于常见的排障,就可以节省值班同事打开电脑、连接VPN、打开VDI的时间。

第一种操作类型在网络设备上执行命令是异步的,获取回显后会调用微信发送的接口,将消息以图片的格式发送出来,这里会用到PIL。


第二种操作类型则使用highcharts出图,数据来源是IMS。


第三种操作类型主要逻辑是从ES集群拉取网络设备日志,再把日志内容以图片的形式发送出来,一样用到了PIL。


罗马不是一天建成的。上述模块开发的除了写代码还有自主的学习和同事的配合。

在变化迅速的互联网行业,尤其是在互联网银行工作,花时间学习新的知识,做好笔记,能解决很多问题。当然,学习中除了跑通demo,最好可以用自己的语言总结出这新知识或新框架的以下几点:


  1. 原理

  2. 和传统方式相比的优缺点

  3. 能解决生产什么痛点

  4. 应用到生产的风险 

     

相信同事很重要的,不管是一同开发的同事还是运维同事,都是我们的良师益友,尤其是系统的开发,和运维同事的交流和沟通显得无比重要。我非常幸运自己身边有那么多经验丰富,做事严谨的运维同事。上面提到的应用层逻辑部分看似简单,实际上离不开基础的搭建。有了网络同事详细讲解不同型号操作方式的不同,远程执行命令才成为可能,还有主机同事一起配合搭建网络性能监控的平台和ES集群,性能数据和日志数据才有真正的源头。