之前寫了一些技術(shù)的蛛勉,今天扯扯閑篇。
最近幾年網(wǎng)絡(luò)運(yùn)維領(lǐng)域各種名字滿天飛睦柴,SDN诽凌、SD-WAN、雙態(tài)坦敌、智能運(yùn)維侣诵、大數(shù)據(jù)技術(shù)、自動駕駛的網(wǎng)絡(luò)狱窘、基于意圖的網(wǎng)絡(luò)杜顺、NAAS、數(shù)字孿生以及我們今天聊的NetDevOps蘸炸。
概念本身是為了方便理解而取的名字躬络,做什么事情我們還是要抓住本質(zhì)。而不是為了熱度搭儒、為了噱頭去投身其中穷当,這樣的話,事情長久不了淹禾。很多公司給我們推銷過很多產(chǎn)品馁菜,真正能吸引我眼球的,永遠(yuǎn)是那些技術(shù)過硬铃岔、產(chǎn)品過硬汪疮、思路清晰的產(chǎn)品及公司,而不是那些包裝產(chǎn)品外面的噱頭、高大上的名詞智嚷。
我們在聊NetDevOps的時候卖丸,就我而言,它的定義無需那么花里胡哨盏道,它就是
網(wǎng)絡(luò)運(yùn)維人員針對自身運(yùn)維場景稍浆,利用技術(shù)與工具提高自動化運(yùn)維水平,提高日常管理摇天、運(yùn)維效率,提高管理故障排除故障的效率的工作方法及過程恐仑。
它包含了三個重要部分:
開發(fā):開源的技術(shù)與工具泉坐、已購工具的二次開發(fā)。直白一些裳仆,就是開發(fā)腕让,不開發(fā)就不是NetDevOps,NetDevOps離不開開發(fā)歧斟,高深淺顯纯丸,或多或少,你總得寫腳本或者更加深入静袖。
場景:開發(fā)深度結(jié)合自身網(wǎng)絡(luò)運(yùn)維場景觉鼻,開箱即用只是在探索階段,后期一定會將開發(fā)植根與自己的運(yùn)維基因之上队橙,走出自己的特色坠陈。
實(shí)踐:這是一種方法論在自己場景中持續(xù)實(shí)踐的過程。
NetDevOps是個性化具備成長屬性的捐康,它不是開箱即用的產(chǎn)品仇矾,不是通過簡單購買可以獲取的技能。NetDevOps就好比養(yǎng)孩子解总,養(yǎng)的永遠(yuǎn)比其他的都“親”贮匕。這個“親”,就是貼合實(shí)際場景花枫。我們應(yīng)當(dāng)投入心血去培養(yǎng)ta刻盐,給ta時間,看ta逐步成長劳翰。
NetDevOps為什么會產(chǎn)生隙疚?
我覺得根本原因是云計算發(fā)展必然的趨勢,云計算使計算資源數(shù)以萬倍的增長磕道,勢必會對網(wǎng)絡(luò)造成不斷的運(yùn)維壓力供屉。從底層硬件到上層架構(gòu)催生出SDN,進(jìn)而產(chǎn)生NetDevOps這個細(xì)分的領(lǐng)域。
我們?yōu)槭裁匆逳etDevOps的道路伶丐?現(xiàn)有的產(chǎn)品難道不香嗎悼做?
1、運(yùn)維其實(shí)是門藝術(shù)
因?yàn)樗豢蓮?fù)制哗魂,每家都有自己的實(shí)際情況肛走,這就導(dǎo)致了很多奇葩需求與奇葩的問題,這些問題必然是現(xiàn)有產(chǎn)品或者工具無法滿足的录别。
公司產(chǎn)品是做通用的朽色,多賣,我們的場景又是個性化的组题,最終的結(jié)果是葫男,產(chǎn)品照顧絕大部分客戶的需求,然后開放部分可編程能力給用戶崔列,讓用戶去二次開發(fā)自己的個性需求梢褐。通用與開放的結(jié)果,是我們一定會在某些部分去著手自己開發(fā)赵讯,而且比例越來越多盈咳。聰明的賣家總會讓自己的產(chǎn)品充滿可編程接口,開放能力絕對是產(chǎn)品的一大賣點(diǎn)边翼。
2鱼响、沒有人比網(wǎng)絡(luò)人更了解網(wǎng)絡(luò)的需求
信息傳遞是有損耗的,尤其是當(dāng)雙方的領(lǐng)域不同的時候组底,這個天然的鴻溝會讓信息損失非常大热押。讓一個開發(fā)人員理解網(wǎng)絡(luò)很困難,這導(dǎo)致開發(fā)進(jìn)行的總是不順利斤寇。但是讓一個網(wǎng)絡(luò)人員了解開發(fā)桶癣,借助于現(xiàn)有的開源與大環(huán)境,我覺得是非常容易的娘锁。因?yàn)楹芏嗳舜髮W(xué)至少學(xué)過C牙寞、C++等等,網(wǎng)絡(luò)工程師中很多是計算機(jī)體系的莫秆,但是極少有人在上學(xué)的時候?qū)W習(xí)路由交換间雀,因?yàn)闂l件不允許、環(huán)境不具備镊屎。這樣的一個網(wǎng)絡(luò)運(yùn)維人員利用自己的領(lǐng)域知識惹挟,加上開源技術(shù),便可以快捷的實(shí)現(xiàn)自己的需求缝驳。如果這個團(tuán)隊可以有序的組織利用连锯,便可孵化出很棒的工具乃至平臺(多少先進(jìn)的網(wǎng)絡(luò)開源工具框架归苍,其實(shí)都是運(yùn)維工程師寫出來的,而不是軟件工程師)运怖。
(特別想插一個例子拼弃,很多金融的人都在使用python做量化交易或者處理日常大量的表格。編程能力摇展,在未來很多領(lǐng)域而言吻氧,一定會像掌握一門外語一樣重要,如今很多兒童教育機(jī)構(gòu)也都瞄準(zhǔn)了兒童編程教育)
3咏连、用未來規(guī)劃現(xiàn)在
未來的網(wǎng)絡(luò)一定是SDN的網(wǎng)絡(luò)盯孙,未來的網(wǎng)絡(luò)一定是逐步脫離CLI,同時更偏向overlay祟滴。它的運(yùn)維一定是在運(yùn)維平臺的web界面上操作振惰。
通過可編程能力,在SDN網(wǎng)絡(luò)之上構(gòu)建各種應(yīng)用踱启,給自己給上下游报账。從企業(yè)研底,從個人埠偿,都應(yīng)該向這個方向前進(jìn),這樣才不會被淘汰榜晦。
NetDevOps學(xué)習(xí)路線
網(wǎng)上很多NetDevOps的學(xué)習(xí)路線和腦圖冠蒋,我個人覺得有些地方過于略,有些地方過于復(fù)雜乾胶。比如編程開源工具講了chef抖剿,Linux列了awk,還列舉了一些常用的常用工具识窿。有些知識根本就是系統(tǒng)運(yùn)維工程師的領(lǐng)域斩郎,作為NetDevOps,我覺得應(yīng)該根據(jù)網(wǎng)絡(luò)運(yùn)維的特點(diǎn)喻频,提取最精華的地方缩宜,畢竟學(xué)新的網(wǎng)絡(luò)知識已經(jīng)很痛苦了,咱們能省點(diǎn)是點(diǎn)甥温。后續(xù)組織架構(gòu)中應(yīng)該會有分化:一部分人會逐步轉(zhuǎn)向開發(fā)锻煌,且全部的人都需要了解開發(fā)了解開源。
第一部分姻蚓,我希望大家都掌握宋梧,剩下的希望大家都了解。
根據(jù)我的一些理解和實(shí)踐狰挡,我會傾向于以下一個學(xué)習(xí)路線捂龄。本來也想畫個腦圖释涛,但是畫了也不是很滿意,我們上干貨吧跺讯。
1枢贿、基本編程能力
?? python,網(wǎng)工必備刀脏,如果你是從零開始局荚,不用考慮別的。開發(fā)語言也是圍繞python展開愈污。
?? python掌握核心的:
???a)基本數(shù)據(jù)類型
???b)判斷耀态、循環(huán)
???c)函數(shù)
???d)文件操作
???e)表格操作(請用pandas,跳過xlrd?xlwt)
???f)ssh設(shè)備交互?首選netmiko暂雹,也可以選paramiko和pexpect
???g)Netconf設(shè)備交互?只有ncclient一條路首装,或者是一些基于之上的封裝,比如Nornir的一些包
???h)RESTful?API?設(shè)備交互杭跪,學(xué)會用requests
?? i)snmp 說實(shí)話仙逻,我只是極偶爾用,可以忽略涧尿。
?? j)解析文本 Textfsm系奉,ntc-templates,后者內(nèi)置很多的解析模板姑廉,覆蓋很多設(shè)備缺亮。二者可以與netmiko有機(jī)結(jié)合,很強(qiáng)大桥言。
?? k)模板管理萌踱,jinja2,基于參數(shù)生成配置号阿,很棒并鸵,我們就是應(yīng)該聚焦參數(shù),以及得出參數(shù)的過程中扔涧。
?? l)多線程多進(jìn)程园担,大家量力而行,尤其如果是下發(fā)配置扰柠,建議老老實(shí)實(shí)for循環(huán)粉铐。如果真嘗試做,推薦一個celery框架卤档。
自己習(xí)慣的操作系統(tǒng)即可
掌握以上蝙泼,我覺得自己寫很多腳本工具就可以極大的提高工作效率,腳本之后可以構(gòu)建web應(yīng)用劝枣,好處很多汤踏,不贅述织鲸。以下的知識大家按需學(xué)即可。
2溪胶、?web應(yīng)用
??? a) python的web框架:django搂擦、flask、FastAPI哗脖。各有千秋瀑踢,網(wǎng)上很多比對的文章,我個人比較推薦django才避,高大全橱夭。
??? b) drf,django的一個rest API框架桑逝,其他python web框架也有對應(yīng)的rest框架
??? c)?往遠(yuǎn)了走棘劣,一定要做API,前后端分離楞遏。以后你的每個運(yùn)維動作或者服務(wù)背后都是一個個API茬暇,你將來提供的是基于網(wǎng)絡(luò)服務(wù)捡硅,一定是基于API的拟蜻。
??? d)?前端,淺了就是html js css翎猛,深入點(diǎn)推薦vue 及element拘荡。
2臼节、系統(tǒng)知識
?? Linux知識撬陵,你懂也行珊皿,不懂也沒事,現(xiàn)在很多語言都跨平臺巨税。往深了走蟋定,建議了解。
???先是基本的操作草添、安裝軟件驶兜、操作文件。
???后續(xù)可以看看docker远寸。
3抄淑、版本管理
???git?
???可以自己搭建gitlab,借助docker比較方便驰后。
???國外希望借助于git 肆资、ansible做網(wǎng)絡(luò)變更,大型數(shù)據(jù)中心不是很推薦灶芝,安全郑原、審計唉韭、流程上問題太多。簡單做腳本犯犁、工程的管理即可属愤。
4、數(shù)據(jù)庫
???借助于django這些框架的ORM酸役,可以屏蔽sql語句住诸,底層使用postgres、Mariadb涣澡、MySQL只壳、sqlite我覺得都可以,看數(shù)據(jù)量暑塑。
???一些特殊情況可能借助于內(nèi)存數(shù)據(jù)庫或者文檔型數(shù)據(jù)庫時序數(shù)據(jù)庫吼句。其實(shí)常用的就是redis、MongoDB事格、ES惕艳、Prometheus、influxdb驹愚。我會盡量讓技術(shù)棧單一一些远搪,不會過多選擇,畢竟我們還是網(wǎng)工逢捺,應(yīng)該聚焦場景及實(shí)現(xiàn)谁鳍。
5、開源技術(shù)
?? a) ansible 網(wǎng)工必備劫瞳,在一些環(huán)境不復(fù)雜的網(wǎng)絡(luò)中倘潜,它是神器。大型數(shù)據(jù)中心中志于,新老交替涮因,我始終覺得水土不服。原生就是給系統(tǒng)的伺绽,硬生生安上網(wǎng)絡(luò)的一些功能养泡,是可以簡化,但是在復(fù)雜網(wǎng)絡(luò)奈应、流程審批澜掩、安全審計方面,我覺得問題挺多的杖挣。
b)?Nornir?比ansible更貼近網(wǎng)絡(luò)運(yùn)維肩榕,但是還是基于腳本和命令行的,我始終覺得未來的運(yùn)維肯定是基于web界面多一些基于程梦、參數(shù)多一些点把。二次開發(fā)比較適合橘荠。或者同上郎逃,不復(fù)雜的網(wǎng)絡(luò)中可用哥童,也推薦使用,國外很多網(wǎng)絡(luò)運(yùn)維的人都推崇這個褒翰,而不是ansible贮懈。
以下部分不負(fù)責(zé)任:
?? c) Elastic Stack技術(shù)棧,俗稱ELK优训,ES可以很好的處理文檔類數(shù)據(jù)朵你、日志,分布式可擴(kuò)展揣非。Kibana可以自由定制可視化界面
?? d)?日志較多的時候可能需要kafka等中間件抡医。
?? e)?監(jiān)控的話,我了解不多早敬,zabbix忌傻、Prometheus(同時也是時序數(shù)據(jù)庫)、grafana也可以實(shí)現(xiàn)告警(同時也可以定制可視化)搞监,實(shí)際各家都有自己的監(jiān)控水孩,按需二次開發(fā)應(yīng)該是重點(diǎn),如果是小型公司可以在其中進(jìn)行選型琐驴。
?? f)?網(wǎng)絡(luò)的AIOps俘种,這真是個大坑,我覺得時序數(shù)據(jù)方面的可能比較成熟一些(自然語言處理咱們基本用不到绝淡,chatops 我真覺得就是忽悠人的)宙刘,當(dāng)然運(yùn)維中的很多問題都可以將數(shù)據(jù)巧妙的轉(zhuǎn)換,從而將解決A問題變成了解決B問題的簡單過程够委。日志方面也有很多成熟的一些算法荐类,但別指望機(jī)器可以像人一樣看待日志怖现,完全視角不同茁帽。
????????以上,是我個人對NetDevOps的一點(diǎn)認(rèn)識和學(xué)習(xí)的過程屈嗤,簡單分享一下潘拨,有問題大家可以私信多交流,后續(xù)會根據(jù)以上路線展開一些講解饶号。
本公眾號(NetDevOps加油站)的分享的內(nèi)容以后會分為兩種铁追,一種是個人見解(歡迎拍磚),一種是干貨(歡迎分享茫船,我會著重引入國外圈子里的一些內(nèi)容琅束,從視頻或者博客中摘取翻譯理解的)扭屁。