CMDB和運(yùn)維自動(dòng)化
IT運(yùn)維备畦,指的是對(duì)已經(jīng)搭建好的網(wǎng)絡(luò)低飒,軟件,硬件進(jìn)行維護(hù)萍恕。運(yùn)維領(lǐng)域也是細(xì)分的逸嘀,有硬件運(yùn)維和軟件運(yùn)維
硬件運(yùn)維主要包括對(duì)基礎(chǔ)設(shè)施的運(yùn)維,比如機(jī)房的設(shè)備允粤,主機(jī)的硬盤,內(nèi)存這些物理設(shè)備的維護(hù)
軟件運(yùn)維主要包括系統(tǒng)運(yùn)維和應(yīng)用運(yùn)維,系統(tǒng)運(yùn)維主要包括對(duì)OS类垫,數(shù)據(jù)庫(kù)司光,中間件的監(jiān)控和維護(hù),這些系統(tǒng)介于設(shè)備和應(yīng)用之間悉患,應(yīng)用運(yùn)維主要是對(duì)線上業(yè)務(wù)系統(tǒng)的運(yùn)維
這里討論的主要是軟件運(yùn)維的自動(dòng)化残家,包括系統(tǒng)運(yùn)維和應(yīng)用運(yùn)維的自動(dòng)化
為什么需要運(yùn)維自動(dòng)化,運(yùn)維自動(dòng)化需要哪些工具售躁,CMDB在運(yùn)維自動(dòng)化中的作用是怎樣的呢 坞淮?
一. 傳統(tǒng)運(yùn)維痛點(diǎn)
先來(lái)看一下傳統(tǒng)運(yùn)維的痛點(diǎn)
1.1 日常工作繁瑣
日常運(yùn)維工作是比較繁瑣的,研發(fā)同學(xué)會(huì)經(jīng)常需要到服務(wù)器上查日志陪捷,重啟應(yīng)用回窘,或者是說(shuō)今天上線某個(gè)產(chǎn)品,需要部署下環(huán)境市袖。這些瑣事是傳統(tǒng)運(yùn)維的大部分工作
1.2 應(yīng)用運(yùn)行環(huán)境不統(tǒng)一
在部署某應(yīng)用后啡直,應(yīng)用不能訪問(wèn),就會(huì)聽(tīng)到開(kāi)發(fā)人員說(shuō)苍碟,在我的環(huán)境運(yùn)行很好的酒觅,怎么部署到測(cè)試環(huán)境后,就不能用了微峰,因?yàn)楦黝惌h(huán)境的類庫(kù)不統(tǒng)一
還有一種極端情況舷丹,運(yùn)維人員習(xí)慣不同,可能憑自己的習(xí)慣來(lái)安裝部署軟件蜓肆,每種服務(wù)器上運(yùn)行軟件的目錄不統(tǒng)一
1.3 運(yùn)維及部署效率低下
想想運(yùn)維人員需要登陸到服務(wù)器上執(zhí)行命令掂榔,部署程序,不僅效率很低症杏,并且非常容易出現(xiàn)人為的錯(cuò)誤装获,一旦手工出錯(cuò),追溯問(wèn)題將會(huì)非常不容易
1.4 無(wú)用報(bào)警信息過(guò)多
經(jīng)常會(huì)收到很多報(bào)警信息厉颤,多數(shù)是無(wú)用的報(bào)警信息穴豫,造成運(yùn)維人員經(jīng)常屏蔽報(bào)警信
另外如果應(yīng)用的訪問(wèn)速度出了問(wèn)題,總是需要從系統(tǒng)逼友、網(wǎng)絡(luò)精肃、應(yīng)用、數(shù)據(jù)庫(kù)等一步步的查找原因
1.5 資產(chǎn)管理和應(yīng)用管理混亂
資產(chǎn)管理帜乞,服務(wù)管理經(jīng)常記錄在excel司抱、文本文件或者wiki中,不便于管理黎烈,老員工因?yàn)楸容^熟习柠,不注重這些文檔的維護(hù)匀谣,只有靠每次有新員工入職時(shí),資產(chǎn)才能夠更正一次
二. 自動(dòng)化運(yùn)維平臺(tái)應(yīng)該有哪些特性
針對(duì)傳統(tǒng)運(yùn)維的痛點(diǎn)资溃,我們可以知道自動(dòng)化運(yùn)維需要支持哪些功能
2.1 標(biāo)準(zhǔn)化一切
運(yùn)維自動(dòng)化最重要的就是標(biāo)準(zhǔn)化一切
- OS的選擇統(tǒng)一化武翎,同一個(gè)項(xiàng)目使用同樣的OS系統(tǒng)部署其所需要的各類軟件
- 軟件安裝標(biāo)準(zhǔn)化,例如JAVA虛擬機(jī)溶锭,php宝恶,nginx,mysql等各類應(yīng)用需要的軟件版本趴捅,安裝目錄垫毙,數(shù)據(jù)存放目錄,日志存放目錄等
- 應(yīng)用包目錄統(tǒng)一標(biāo)準(zhǔn)化,及應(yīng)用命名標(biāo)準(zhǔn)化
- 啟動(dòng)腳本統(tǒng)一目錄和名字拱绑,需要變化的部分通過(guò)參數(shù)傳遞
- 配置文件標(biāo)準(zhǔn)化综芥,需要變化的部分通過(guò)參數(shù)傳遞
- 日志輸出,日志目錄欺栗,日志名字標(biāo)準(zhǔn)化
- 應(yīng)用生成的數(shù)據(jù)要實(shí)現(xiàn)統(tǒng)一的目錄存放
- 主機(jī)/虛擬機(jī)命名標(biāo)準(zhǔn)化毫痕,虛擬機(jī)管理使用標(biāo)準(zhǔn)化模板
- 使用docker比較容易實(shí)現(xiàn)軟件運(yùn)行環(huán)境的標(biāo)準(zhǔn)化
2.2 資產(chǎn)管理系統(tǒng)(CMDB)
CMDB是所有運(yùn)維工具的數(shù)據(jù)基礎(chǔ)
如果用開(kāi)源工具(openstack,jenkins迟几,ansible消请,saltstack,zabbix)來(lái)搭建自動(dòng)化運(yùn)維平臺(tái)类腮,如何將各個(gè)工具之間的數(shù)據(jù)統(tǒng)一起來(lái)就非常重要臊泰,如果這些工具的數(shù)據(jù)不統(tǒng)一記錄,那么意味著每增加一臺(tái)服務(wù)器蚜枢,需要將這個(gè)服務(wù)器的數(shù)據(jù)在所有的工具系統(tǒng)中增加一遍缸逃,那么這些數(shù)據(jù)的統(tǒng)一就需要CMDB,那么如何獲取和更新CMDB中的數(shù)據(jù)呢厂抽,API無(wú)疑是一種非常好的方法
另外現(xiàn)在越來(lái)越多的公司選擇將自己的服務(wù)器遷移到云上需频,云其實(shí)就是虛擬化的一種高級(jí)應(yīng)用,這些公有云(阿里云筷凤,騰訊云昭殉,aws等)、私有云(openstack藐守,Vmware等)都擁有比較完備的資源管理的API挪丢,這些API也就是構(gòu)建一個(gè)云服務(wù)器的CMDB的基礎(chǔ)。自動(dòng)化運(yùn)維平臺(tái)可以基于這些云平臺(tái)的API來(lái)管理和維護(hù)服務(wù)器卢厂、存儲(chǔ)乾蓬、網(wǎng)絡(luò)、負(fù)載均衡等資源慎恒。
通過(guò)API對(duì)資源的操作需要日志記錄任内,以備后續(xù)操作審計(jì)撵渡。
2.3 集中化批量運(yùn)維工具
當(dāng)你維護(hù)的服務(wù)器從幾臺(tái),到幾十臺(tái)族奢,再到幾百臺(tái)姥闭,集中化運(yùn)維就勢(shì)在必行了〉ず瑁現(xiàn)在有不少開(kāi)源的集中化批量運(yùn)維工具越走,比如puppet、chef靠欢、ansible廊敌、saltstack。
我們主要使用ansible和saltstack门怪,這兩個(gè)系統(tǒng)都是python寫的骡澈,而且現(xiàn)在大多數(shù)運(yùn)維人員都有一定的python開(kāi)發(fā)能力,這兩個(gè)工具提供的API或者SDK來(lái)來(lái)實(shí)現(xiàn)更為復(fù)雜的功能
2.4 持續(xù)集成和部署工具
集成和部署工具掷空,一般用jenkins的比較多肋殴,把打好的包發(fā)布至各臺(tái)服務(wù)器,可以通過(guò)批量運(yùn)維工具或者自定義腳本坦弟,軟件應(yīng)用從立項(xiàng)開(kāi)始就需要定義好業(yè)務(wù)線护锤,項(xiàng)目等,如果某個(gè)項(xiàng)目對(duì)酿傍,服務(wù)器的資源需求增多烙懦,只需要在對(duì)應(yīng)的項(xiàng)目集群中增加對(duì)應(yīng)的資源,這些需要和CMDB聯(lián)系起來(lái)
軟件發(fā)布包括文件的上傳赤炒、分發(fā)氯析、版本管理、回滾等各種操作莺褒,推薦使用SVN或者GIT對(duì)打包好的文件進(jìn)行管理掩缓,然后通過(guò)腳本在各臺(tái)服務(wù)器上進(jìn)行發(fā)布操作,利用SVN或GIt來(lái)完成文件的上傳遵岩、分發(fā)你辣、版本管理、回滾等各種操作旷余,這些操作對(duì)需要進(jìn)行日志記錄绢记,需要在記錄中來(lái)確保
另外使用docker鏡像來(lái)進(jìn)行持續(xù)交付會(huì)更加高效,因?yàn)閐ocker鏡像可以輕松解決環(huán)境依賴的問(wèn)題
2.5 監(jiān)控及應(yīng)用性能分析工具
資源性能監(jiān)控和應(yīng)用性能監(jiān)控正卧,有很多重疊的地方蠢熄,如CPU或者內(nèi)存的使用率增高往往和應(yīng)用的性能有關(guān)
常使用開(kāi)源資源監(jiān)控系統(tǒng)有Zabbix、Nagios炉旷,OpenFalcon签孔,這些軟件主要是服務(wù)器的資源性能監(jiān)控(例如CPU叉讥,磁盤、網(wǎng)絡(luò)饥追、內(nèi)存等)和服務(wù)軟件的性能監(jiān)控(例如JAVA虛擬機(jī)图仓,中間件,數(shù)據(jù)庫(kù)等)
APM關(guān)注于對(duì)應(yīng)用程序內(nèi)部及應(yīng)用程序之間調(diào)用的性能分析但绕,比如能精確定位到某應(yīng)用的URL的訪問(wèn)速度快慢救崔,SQL執(zhí)行速度的快慢,這可以幫助開(kāi)發(fā)和運(yùn)維人員定位程序的應(yīng)用性能瓶頸
2.6 日志集中分析工具
應(yīng)用系統(tǒng)的問(wèn)題定位方式捏顺,主要就是日志分析六孵。但是隨著業(yè)務(wù)和服務(wù)器的增長(zhǎng),日志的分析定位也會(huì)比較困難幅骄,系統(tǒng)一旦出故障劫窒,發(fā)生哪個(gè)應(yīng)用,引用所在服務(wù)器以及應(yīng)用的代碼拆座。日志集中分析和APM一起使用主巍,同時(shí)可以根據(jù)CMDB中記錄的應(yīng)用服務(wù)相關(guān)信息,應(yīng)用定位問(wèn)題會(huì)更加高效挪凑。
2.7 安全漏洞掃描工具
安全漏洞更多的是安全工程師的來(lái)做孕索,運(yùn)維工程師更多是去解決這些漏洞,關(guān)于安全漏洞掃描如何與CMDB結(jié)合起來(lái)使用岖赋,可以使用提供API的漏洞掃描工具檬果,針對(duì)CMDB中記錄中對(duì)安全要求很高的應(yīng)用來(lái)進(jìn)行掃描。
三. 資源管理系統(tǒng)的功能
從上面可以知道唐断,所有的運(yùn)維工具都離不開(kāi)CMDB的支持选脊,那么CMDB應(yīng)該有哪些數(shù)據(jù),可以實(shí)現(xiàn)什么樣的功能脸甘,如何確保CMDB的準(zhǔn)確性 恳啥?
3.1 CMDB管理什么數(shù)據(jù)
- 用戶信息管理,記錄測(cè)試丹诀,開(kāi)發(fā)钝的,運(yùn)維人員的用戶表
- 業(yè)務(wù)信息線管理,需要記錄業(yè)務(wù)的詳情
- 項(xiàng)目信息管理铆遭,指定此項(xiàng)目用屬于哪條業(yè)務(wù)線硝桩,以及項(xiàng)目詳情
- 應(yīng)用信息管理,指定此應(yīng)用的開(kāi)發(fā)人員枚荣,屬于哪個(gè)項(xiàng)目碗脊,和代碼地址,部署目錄橄妆,部署集群衙伶,依賴的應(yīng)用祈坠,軟件等信息
- 集群信息管理,指定集群屬于哪個(gè)項(xiàng)目矢劲,以及集群的Level(開(kāi)發(fā)赦拘,測(cè)試,生產(chǎn))
- 主機(jī)信息管理芬沉,包括云主機(jī)躺同,物理機(jī),主機(jī)屬于哪個(gè)集群花嘶,運(yùn)行著哪些軟件笋籽,主機(jī)管理員蹦漠,連接哪些網(wǎng)絡(luò)設(shè)備椭员,云主機(jī)的資源池,存儲(chǔ)等相關(guān)信息
- 主機(jī)信息變更管理笛园,主機(jī)的一些信息變更隘击,例如管理員,所屬集群等信息更改研铆,連接的網(wǎng)絡(luò)變更等
- 網(wǎng)絡(luò)設(shè)備信息管理埋同,主要記錄網(wǎng)絡(luò)設(shè)備的詳細(xì)信息,及網(wǎng)絡(luò)設(shè)備連接的上級(jí)設(shè)備
- IP信息管理棵红,IP屬于哪個(gè)主機(jī)凶赁,哪個(gè)網(wǎng)段, 是否被占用等
數(shù)據(jù)庫(kù)表如下圖所示:
3.2 基于CMDB實(shí)現(xiàn)哪些功能
基于CMDB,可以實(shí)現(xiàn)采集資源信息自動(dòng)化逆甜,軟件安裝自動(dòng)化虱肄,應(yīng)用部署自動(dòng)化,告警信息更加詳細(xì)準(zhǔn)確交煞,應(yīng)用關(guān)系拓?fù)鋱D咏窿,網(wǎng)絡(luò)拓?fù)鋱D更加清晰,這些工具對(duì)運(yùn)維會(huì)有很高的價(jià)值
在公司業(yè)務(wù)層面上素征,基于CMDB我們也可以做很多事情集嵌,最直接的就是IT資源的成本控制,另外還有集群容量彈性縮擴(kuò)容御毅,應(yīng)用平臺(tái)的穩(wěn)定性根欧,應(yīng)用的持續(xù)交付等功能
3.3 確保CMDB數(shù)據(jù)的準(zhǔn)確性
CMDB存儲(chǔ)管理企業(yè)IT架構(gòu)中設(shè)備的配置信息,它是所有的應(yīng)用運(yùn)行和應(yīng)用交付的提供相關(guān)的資源的數(shù)據(jù)基礎(chǔ)端蛆,所以保證CMDB數(shù)據(jù)的準(zhǔn)確性顯得非常重要
想要確保CMDB的準(zhǔn)確性凤粗,根據(jù)自己各個(gè)公司的業(yè)務(wù)不同,來(lái)制定CMDB數(shù)據(jù)的錄入流程必不可少
我們?nèi)绾未_保CMDB的數(shù)據(jù)準(zhǔn)確性欺税,公司所有的IT應(yīng)用(數(shù)據(jù)庫(kù)除外)全部運(yùn)行在VMware虛擬機(jī)中
- 硬件設(shè)備的資產(chǎn)管理侈沪,在采購(gòu)服務(wù)器或者網(wǎng)絡(luò)設(shè)備后揭璃,需要將相關(guān)的設(shè)備手工錄入CMDB系統(tǒng),并且指定連接的上級(jí)網(wǎng)絡(luò)設(shè)備亭罪,負(fù)責(zé)人
- 服務(wù)器需要安裝的VMware軟件后瘦馍,通過(guò)Vcenter來(lái)管理虛擬機(jī)
- 新項(xiàng)目確立,申請(qǐng)服務(wù)器資源時(shí)应役,需要填寫業(yè)務(wù)線情组,開(kāi)發(fā)人員,git庫(kù), 測(cè)試人員箩祥,應(yīng)用依賴的相關(guān)環(huán)境等詳細(xì)信息院崇,CMDB系統(tǒng)會(huì)關(guān)聯(lián)相關(guān)的數(shù)據(jù)
- 運(yùn)維人員在分配IP,主機(jī)名等相關(guān)信息后袍祖,將開(kāi)發(fā)底瓣,測(cè)試,生產(chǎn)等服務(wù)器記錄入CMDB, 且關(guān)聯(lián)相關(guān)的數(shù)據(jù)
- 創(chuàng)建虛擬機(jī)時(shí)使用標(biāo)準(zhǔn)的模板蕉陋,自動(dòng)化創(chuàng)建捐凭,初始化虛擬機(jī),包括安裝salt客戶端凳鬓,監(jiān)控客戶端
- 在準(zhǔn)備開(kāi)發(fā)環(huán)境時(shí)茁肠,編寫salt SLS文件,存入git庫(kù)缩举,方便安裝測(cè)試和生產(chǎn)環(huán)境
- 創(chuàng)建jenkins job垦梆,實(shí)現(xiàn)自動(dòng)化部署及自動(dòng)化打包的相關(guān)部分的定義
我們的CMDB還有哪些不足:
- 網(wǎng)絡(luò)關(guān)系拓?fù)鋱D沒(méi)有在CMDB中顯示
- 沒(méi)有實(shí)現(xiàn)應(yīng)用關(guān)系拓?fù)鋱D,希望可以通過(guò)APM工具來(lái)完善
- 資源監(jiān)控做的不夠到位仅孩,造成資源浪費(fèi)托猩,以及Vcenter虛擬機(jī)分配不合理
- 沒(méi)有實(shí)現(xiàn)應(yīng)用集成部署流水線
- 系統(tǒng)告警后,沒(méi)有自動(dòng)化處理相關(guān)的事件杠氢,更多的是在用人工解決
- CMDB沒(méi)有提供API站刑,提供給別的系統(tǒng)調(diào)用