网络工程师眼中的自动化运维

本文从一名网工从业者的角度出发,探讨了在企业网运维过程中,网络工程师可以用什么样的工具让网络更加透明高效。

上篇文章回顾:Apache Ranger——Hadoop ACL控制工具

引言

“网络就像wifi,没有故障的时候,就没有人意识到它的存在”,这句话有无数的翻版,但是对于网络工程师来说这就是现身说法。由于网络工程师的人数即便是在上千人的公司,也仅仅是个位数,所以他们的工作也鲜为人知 。“网络是不是有问题?”这句话几乎成了所有SRE排错时的口头禅,如果这个时候网络工程师表示沉默,或者无法拿出足够的证据,那背锅几乎是无疑的,如何让网络环境的运行状态更加透明,如何在每次业务故障的时候自证清白,这不仅是基础服务团队要关心的内容,更是整个技术团队想要了解的黑匣子。    

1、监控

网络设备存活监控

对于SRE来说需要监控程序是否正常,对于主机组来说需要监控服务器硬件是否正常,对于网络来说我们首先需要关心网络设备是否可达。当一台TOR不可达时,基本上预示着会有一片服务器不可达,业务的痛感是相当强烈的。

网络设备的监控最好和业务监控系统尽量解藕,因为网络故障极有可能引发业务系统异常,如果恰巧导致的是业务的监控系统异常,那网络设备的告警将失去可靠性,“监控不准”且不说这个锅是谁的,这种局面会让网络工程师Trouble Shooting时陷入被动,延长了故障时间。

每一个网工在走出校门的那一刻,都已经具备基本的编程基础, 况且交换机的数量和服务器的数量有着量级上的差别,所以如果你能看懂几句python,100+的python代码即可搞定一个简易的设备存活监控的程序,Github中可搜索 NodePingManage 就是一个很好的例子,还可以通过多点部署来消除单点故障。有了这类工具, 从此全网的各个角落的可达性终于明了, 漆黑的网络环境,似乎反射出了一丝光明。 设备日志监控

设备存活告警虽然可以预警很多异常,并且准确度很高,但是对于冗余性做的比较好的网络,能Ping通并不代表完全没问题,此时,细心的网络工程师会去看日志,这里可以反映出更多细节。对于万台服务器规模,网络设备的数量也就千台,但是逐台查看日志,人肉判断是否有异常,那简直是场噩梦。

《日志告警》程序就成为网络工程师们居家旅行必备之良品,只需要一台Syslog服务器,部署一个日志监控程序,当发现日志中出现特殊关键字,触发邮件+短信告警即可。这么高大上的工具当然需要更多的编程技巧,150+ python代码才能搞定。Github中类似的解决方法有很多,搜索 LogScanWarning 即可得到一个示范案例。

从此你可以在业务无感的情况下,发现网络中的异常, 例如:风扇转速异常/电源模块故障/ospf邻居状态抖动/端口flapping/有黑客在爆破我的设备/设备硬件parity error/模块收发光异常/Kernel报错等等。优秀的网络工程师可以在故障发生时快速定位,牛X的网络工程师可以在故障发生前就消除隐患,防范于未然。流量监控

高速公路铺的再好,也架不住车多人多。确保网络顺畅,品质优良,没有丢包,延时稳定也是网络工程师的职责 ,此时流量监控就成了刚需。业务的飞速发展体现在网络层面就是DC内流量上涨/DCI流量上涨/IDC出口流量上涨/专线流量上涨,流量监控可以准确掌握业务的高峰和低谷,当线路需要扩容时,带宽使用率是老板参考的重要数据。一般情况下线路中的流量超过50%即可发起扩容,因为这意味着当备份链路down之后,主线路将出现拥塞。接口error监控

接口的Error包监控和流量监控一样,均可以通过snmp采集,OID:ifOutErrors,ifInErrors ,  Error包出现增量会直接影响业务的服务质量,一旦发现需要优先处理,否则业务会拎着一堆TcpTimeOut指标找上门来。当然,可以通过snmp采集的信息还有很多,例如:设备的CPU/内存/温度/防火墙的Session等,掌握这些信息对了解设备的工作环境也颇有益处,如果你要做一个自动化巡检工具,那么这些指标必不可少。市面上提供网络监控的软件有很多,例如:Falcon/Zabbix/Solarwinds/Cacti/Nigos 等,有开源的也有收费的,功能类似,此处不加赘述。

2、制造自动化运维工具

第一章中的组合拳打完之后,基本上不会出现“意料之外的故障”,所有的异常都应该有据可查,当SRE莫名其妙提出对网络环境的质疑时,你应该早已心中有谱。但是网络工程师的工作并非只有救火,日常运维工作中,经常需要配合业务发展做一些线上变更/ 机房扩建/业务类故障排查等。作为一名“懒惰”的网络工程师,程序可以帮忙点什么忙呢?UserDevice Tracker

这个名词借用于Solarwinds套装中的一个组件,直译为“用户设备追踪器” , 在中小型企业网运维中,经常会有这样的需求:

  • 知道服务器的IP,请问连接在交换机的哪个口?
  • 知道交换机的某个端口,请问连接的服务器的IP是多少?
  • 给你一台服务器的MAC地址,怎么知道在哪个交换机的哪个口?

大型互联网公司一般会有CMDB或者网络管理平台来记录这些信息, 但是如果你是一家中小型企业的网管,没有运维研发团队做支持,并且还在沿用二层的环境(服务器网关在核心设备),那就比较费劲了。以上几个问题其实归根到底是要捋清楚三个要素的对应关系: PORT<>MAC<>IP   

举个例子:

一台交换机有多个物理接口,一个物理接口下可以有多个MAC,一个MAC可以对应多个IP,或者不对应任何IP。 有了这个基本的模型,只需要做两件事情即可找到全网设备这三元素的对应关系。首先去服务器直连的交换机获取MAC表(即MAC<->PORT), 然后再去服务器的网关设备获取ARP表(即IP<->MAC),这两张表根据MAC地址作为唯一主键即可得到 PORT <->MAC<->IP 的对应关系。 信息的获取可以通过模拟登陆或者OID采集均可,Github中也有很多类似的代码可供参考,有了这个对应关系,即便没有CMDB,你依然可以快速定位想要的信息, 普通网工查找这个信息需要5分钟, 而你只需要5秒钟。网络设备北向接口的二次封装

日常网络运维工作中,经常会有一些 “简单重复劳动”,例如:为某个接口划分Vlan/给某台设备添加一条指向主机的路由等, 这些操作即没有科技含量,还占用了工程师宝贵的时间,更要命的是再简单的人肉操作,重复的次数只要足够多,总有失误的时候,正所谓“常在河边走,哪有不湿鞋”,但是在这种问题上犯错误简直是对职业生涯的抹黑,如此“鸡肋”的工作怎么才能干的漂亮?

以《自动划分交换机接口Vlan》的功能为例, 如果有一个工具只需要你提供三个参数:设备IP/端口/vlan编号, 就能自动登陆设备把特定接口划分到指定Vlan,那岂不是美哉。没错!你需要的是一个对设备封装后的接口, 现在多数网络设备厂商都会提供自己的API,无论是NETCONF还是RESTful,只要读懂了使用手册,即可通过程序轻松变更设备的配置,甚至你可以用更加”接地气”的方法,用程序“模拟登陆”设备 ,虽然这个方法在效率上比不过NETCONF和RESTful API,但是在通用性上那简直无敌,因为没有哪个厂商的设备不支持SSH或者TELNET的。

有了这个理论基础,一些简单的网络上的操作就可以通过自己封装的接口来实现变更,甚至可以把变更的权限交给业务,只要业务提交的请求是合法的,变更可立即上线生效。此时,肯定会有人大惊失色!把网络设备的权限交给业务,这样真的好么?万一改坏了怎么办…所有的疑惑都是正常的,同时也都是有解的。还以《自动划分交换机接口Vlan》举例子,你可以限制程序执行的内容,你可以规定交换机只能是TOR不能是CSW,你可以约束接口只能是Access不能是Trunk,你可以限定被操作的接口下流量必须为0bps,以避免误操作影响到业务,你可以通过动态Token保证接口的安全,你可以要求必须提供接口下现存的MAC以定位接口的位置,你还可以对调用者加白名单,另外,操作成功后还需要有短信+邮件反馈操作后的结果,等等…   

 所有的考量都可以固化为代码规则,只有程序是最忠实的执行者。接口可以提供7*24 小时全年无休的服务,而人的精力是有限的,用程序去应对业务那些简单有规律的需求,节省出工程师宝贵的时间来思考人生,这才是网络工程师自动化运维之路的正道。

总结

以上,是笔者结合自身工作经历总结的一些心法,写代码对于网络工程师来说确实有些难度,但是只要跨过这道坎,你会得到更多富裕的时间来扩展自己的专业道路,谨以此文,希望能抛砖引玉为自动化网络运维尽绵薄之力。

Image placeholder
apulll
未设置
  69人点赞

没有讨论,发表一下自己的看法吧

推荐文章
面向DevOps的企业自动化运维体系如何构建?

随着软件交付速度的加快,过去那种研发、测试、部署和运维各自为政的模式,已经无法满足用户需求。越来越多的企业希望通过更高效、更敏捷的方式,快速交付和部署相关应用。所以,DevOps顺势而生!那么,什么是

架构师眼中的文化:试用期才是真正的考察时间

如果说架构师在技术上的沉淀称为“武”,那么对于文化的感知和影响、对于团队的带动和辅导、以及多角色沟通等可以称为“文”,文武兼备,才是好架构!管理风格团队是由个体组成的,管理风格往往能够显示出团队文化。

架构师眼中的高并发架构

前言高并发经常发生在有大活跃用户量和用户高聚集的业务场景中,如:秒杀活动、定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己

直击DTCC2019现场:数据库智能化运维探索与实践

5月10日,第十届中国数据库技术大会(DTCC2019)正在火热进行中。作为本届大会讨论的焦点之一,“数据库智能运维”专场人气爆棚,来自京东物流、腾讯、字节跳动、京东商城、便利峰的行业专家出席现场,他

【web自动化】 自动化无人值守运行

推荐课程:web全栈开发就业班--拿到offer再缴学费--融职教育 在你根据手工测试用例完善自动化测试用例后,每个测试用例都调试通过了,说明我们已完成了对被测对象的测试用例覆盖。可是在平时的上线回归

数据库运维迈向智能运维新时代

【ITPUB专访】“美创的数据库运维团队在业内属于运维技术的风向标,很可能是最大的oracle运维团队,随着国产化替代的进程,但我们也在积极储备各种国产数据库、开源数据库技术人才,中国数据库市场未来百

Java 程序员眼中的 Linux_1.0.Linux 介绍

Linux介绍 Linux这个名字 Linux的Wiki介绍:http://zh.wikipedia.org/zh/Linux Linux也称:GNU/Linux,而其中GNU的全称又是:Gnu’sN

[Java 程序员眼中的 Linux] Linux 下常用压缩文件的解压、压缩

Linux下常用压缩文件的解压、压缩 常用压缩包解压命令整理 Linux后缀为.tar.gz格式的文件-解压 命令:tarzxvfXXXXXX.tar.gz Linux后缀为.bz2格式的文件-解压

阿里支付宝架构师:谈谈我眼中的高并发架构【好文】

来源:my.oschina.net/u/3772106/blog/1793561前言高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且

一个程序员眼中的宋慧乔离婚、宝强母亲去世、李晨范冰冰分手

目录(1)为什么要用缓存集群(2)20万用户同时访问一个热点缓存(3)基于流式计算的缓存热点自动发现(4)热点缓存自动加载为JVM本地缓存(5)限流熔断保护(6)总结昨天一连出现3个热点新闻:双宋离婚

实操讲解:使用Keras中的自动编码器进行极端罕见事件分类

在这篇文章中,我们将学习如何实现用自动编码器来构建稀有事件分类器。我们将使用来自此处的真实稀有事件数据集。背景什么是极端罕见的事件?在一个罕见的问题中,我们有一个不平衡的数据集。意思是,我们得到的阳性

巧用自动化测试组合拳保证产品质量

一、背景 我们的测试工作经历了以下四个阶段。第一阶段,产品需求评审完成,开发团队实现功能开发,然后草草提测,不写单元测试。测试人员进行人工测试,没有工具或系统做辅助,测试用例编写是在excel或脑图中

我们做了大量工作,可自动化 UI 测试依旧实现不了

对开发者而言,测试的重要性不言而喻。在发布新功能前,开发者需要确保已有功能有效,这就需要将每个发布版本给到QA团队执行人工回归测试。然后,测试人员或QA团队花费数天时间执行脚本以寻找Bug。本文是S

甲骨文将自动化的安全特性植入云中!

在一年一度的OpenWorld大会上,甲骨文公司重点介绍了自治Linux、合作伙伴生态,以及在云计算领域的新功能扩展,包括云的可访问性,更严格的安全选项,虚拟基础设施层面的改进,向系统注入更多的智能化

为什么说IPA智能流程自动化是企业IT的下一波浪潮?

提到IPA,可能很多人会立刻想到RPA。RPA,即机器人流程自动化,是企业IT过去两年最热门的技术之一。仅在2018年,就有三家公司拿到了总额超过十亿美金的风投,包括AnywhereAutomatio

python自动化测试学习 - Pytest插件之selenium

推荐课程《Python开发工程师--学习猿地精品在线课》今天主要演示Pytest框架的selenium插件。webdriver是主流的UI自动化测试框架,在Pytest的测试框架中也提供了对webdr

从网络接入层到 Service Mesh,蚂蚁金服网络代理的演进之路

本文作者:肖涵(涵畅)上篇文章《 诗和远方:蚂蚁金服ServiceMesh深度实践|QCon实录》中, 介绍了ServiceMesh在蚂蚁金服的落地情况和即将来临的双十一大考,帮助大家了解Servic

从理论到案例,请收下这篇 Nginx 监控运维干货

Nginx(“enginex”)是一个开源、免费、高性能的HTTP和反向代理服务器,也可以用于IMAP/POP3代理服务器。充分利用Nginx的特性,可以有效解决流量高并发请求、cc攻击等问题。本文

云数据库反脆弱性运维体系

摘要:本文主要分享如何构建反脆弱性的云数据库服务体系与实践,实现分布式云数据库服务的高可用方案,同时采取措施保护分布式云数据库整体服务,实现跨机房分布式自动切换方案,并在实践过程中,实施分享SQL自动

腾讯数据库专家雷海林分享智能运维架构

2019年5月8日-10日的DTCC2019年中国数据库大会上,腾讯云数据库专家工程师雷海林首受邀做了主题为《TDSQL智能运维平台-扁鹊架构与实践》的技术分享,以下为大会现场演讲实录。雷海林在大会现

redis开发与运维-笔记

1.SDS数据结构SDS自己维护了一个字段的长度。获取获取字符串长度的效率是O(1);在字符串拼接的时候,如果空间不够,就会去申请。修改字符串长度带来修改次数问题:申请空间:当小于1M时,申请字符串同

分析帖!怎样辨别生物和人工神经网络中的递归?

递归是神经网络中的一个重要术语,在机器学习和神经科学领域有着不同的含义。然而,随着用于实际应用的人工神经网络(ANNs)越来越复杂,且在某些方面更像生物神经网络(BNNs),这种差异正在逐渐缩小(但总

Linux中的权限、进程、服务、网络的管理与防火墙

查看权限 使用ls-l,或者ls命令查看目录下的文件,第一列就是文件或者目录的权限位: [test@ubuntu:~]$ls-l -rw-rw-r--1testtest0Sep2316:18fil

别小瞧了 Linux,安卓、华为的自研系统,均源自 Linux!

众所周知,目前国内已有众多的国产系统,基本上均源自linux,以linux为基础进行二次开发。比如红旗linux、深度等等。但不知道为什么,一说起某系统是基于linux而来,很多网友就瞧不起,并且会觉

5位女性程序员的自白:计算机不撒谎;女程序员的代码一样也很棒

谁说这个领域就是男性的天下偏见本身就是一种带标签的想法她们的世界里只信奉“computer never lies”她们认为代码漂亮比发型漂亮更重要她们到底是谁?谷悦是喜欢简单、纯粹工作的气质女神,八年