自动化运维系统具备的功能
一個成熟的自動化運維系統至少應該包括三個子系統:
機房設備數據系統(EMDB)
1.錄入機房服務器和網絡設備的各種信息,比如機器型號,硬盤大小,OS類型,所屬應用,運行狀態,機房名稱,所在房間,機架,位置等等各種信息,這是一個最基礎的數據庫,最主要的目的是給每個機器從多個維度統一打上各種標簽,方便其他系統的使用。
2.提供各種查詢API接口,并做好權限控制。目的是能夠被上層的各種系統調用,一般是rest接口,xml接口。然后基于各種語言做相應的封裝庫。
應用監控系統(Appmonitor)
1.一個統一的數據采集模塊,用于采集設備運行信息,包括磁盤IO,網絡流量,CPU利用率,網絡設備的Session數,PPS。這個采集模塊在網絡設備上一般可以通過snmp來實現,在服務器上一般通過一個定制化的Agent來實現,這個Agent最基礎的能力是采集服務器運行數據,最重要的是能執行各種腳本語言并通過腳本語言實現對服務器的各種操作(如更改配置,分析應用日志并輸出結果)。
2.監控數據存儲與可視化,數據采集模塊采集到各種數據會很多,但對事務性沒啥要求,可以用各種NoSQL數據庫如Hbase,Cassandra等來實現。數據的可視化是一個可以做的很深且偏應用層面的東西,一般在監控系統上只實現最基本的曲線圖展示,提供按時段選擇和對比的功能,其他復雜的可視化操作通過各種API來實現。
3.監控項添加和報警通知,監控項是一種層次結構,而不是列表結構。上層節點的配置能夠被下層節點的配置覆蓋掉。對網絡設備來說監控項就是一些不同的oid。借助于底層的數據采集模塊,對服務器來說監控項基本上就是一個腳本。可以分為標準監控項和自定義監控項,標準監控項最大化的通用,實現cpu,內存,磁盤,網絡等信息的監控。自定義監控項可以用多種系統管理腳本語言(shell,python,perl)等實現,腳本的輸出符合一定規范即可,一般采用行結構或json串。每個監控項設定warn,crit報警閾值和若干報警聯系人,閾值一般是數值型,特殊的可以是字符串。超過閾值的監控項會發送報警給聯系人,報警可以通過短信,郵件,IM軟件發出。報警發送要支持合并報警,頻率控制,關閉報警。要不然可能一次小故障就能發出成千上萬條報警,報警就失去效果了。
4.監控Api接口,并做好權限控制。做法和目的與EMDB一樣。開放監控數據獲取,報警消息發送,配置推送的接口。主要目的是讓監控系統里面的數據能夠被外界利用,可以在這些數據基礎上做更加絢麗復雜的數據可視化工作,或者做一些更加個性化的監控和報警。次要目的是支持對服務器的統一操作,比如公司所有機器統一升級系統軟件的版本。建議統一操作的API接口僅對少數幾個人開放,并且權限嚴格控制。
發布和線上配置管理系統(ReleaseManager)
1.應用發布和依賴庫版本管理,應用發布是運維與開發對接的重要環節,一般發布系統會和svn系統緊密結合,svn系統里面會有線上應用的列表,EMDB里面會有各個機器所屬的應用。發布系統會用到這些數據,將svn系統里面生成的應用包及其依賴包發布到線上,并且自身對這些應用包和依賴包進行版本管理和控制,在應用發布出現問題時可以回滾到上一個版本。
2.線上配置管理,類似于linux下puppet的功能,主要用于應用服務器上關鍵配置文件的版本控制,分發,一致性維護工作。大應用一般是若干臺服務器組成集群提供服務,要求這若干臺服務器的應用配置是一致的,但有時候又存在應用的灰度發布操作,或者某人誤更改配置。線上配置管理系統要求提供統一的配置修改入口,對灰度發布提供支持,同時對于誤更改配置情況進行糾正。執行操作可以借助于Appmonitor的接口。
以這三個系統為基礎可以做更多的自動化工作,比如說財務人員可以用EMDB里面的數據準確的計算Capex&Opex,機房管理人員可以用EMDB通過OOB遠程執行各種關機,重裝系統,網絡設備維護等工作,不在現場也能管理機器,現場工作可以外包完成。應用開發人員可以通過svn系統調用Releasemanager自主打包,發布,回滾應用。應用維護人員可以調用監控系統獲取數據和報警信息,通過編寫相關腳本,實現一些簡單報警的自動化處理工作,提升效率。
總結
以上是生活随笔為你收集整理的自动化运维系统具备的功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学成在线项目异常
- 下一篇: python 异步执行多个函数_Pyth