第一,傳統的資產管理通常都是經過人爲手動維護一個excel表,這樣,當一臺服務器的任何資產出現了變動,都須要人力去記錄一下。並且,有時候容易忘記本身究竟是否已經作了變動記錄,這樣就使得變動記錄表信息愈來愈不許確,統計資產就變得至關的麻煩,這是設計初衷其一。 python
第二,隨着公司部門的增多,每一個部分都有本身消費狀況,若是人爲的統計,不免也會出現上述的錯誤,爲了解決上述的問題,咱們也須要這樣一個資產管理來實時更新各個部門的平常開銷,這是設計初衷其二。數據庫
第三,平常生產過程當中,各個部分有時候會進行數據的交互。若是每一個部分都以本身的方式將數據傳遞給開發人員,這樣無疑是增大了他們的工做壓力,所以,設計一個資產管理系統,是一個不錯的選擇。api
基於上述三點,咱們討論出了一套解決上述問題的方案。即,設計一個管理資產的系統,全部須要錄入的數據,都傳遞到該系統中,進入保存,一旦須要使用,咱們能夠經過接口,可以迅速的調用數據,也能實時觀測各個數據的變化。服務器
1.實現自動採集服務器資產信息cookie
2.實現報表功能多線程
3.統一API接口,便於給其餘部門提供數據架構
整個項目分爲三個部分:運維
資產採集部分、API接口部分、後臺管理部分。ssh
項目大體示意圖以下:tornado
經過API接口獲取服務器傳來的資產信息,而後保存入庫。後臺從數據庫中取出數據,而後展現到頁面上,便於統計與分析。
整個項目共由三人完成,1個運維人員,負責提供運維方面的知識以及提供需求;2個開發人員,負責數據錄入以及後臺頁面數據的展現。
整個項目數據設計以下:
其中關係:
Disk,NIC,Memory與Server是FK關係
IDC,BusinessUnit與Server是FK關係,Tags與Server是M2M關係
UserGroup與BusinessUnit是FK關係,UserGroup與UserProfile是M2M關係,AdminInfo與UserProfile是o2o關係。
其中還有記錄變動信息表和錯誤日誌表。
Agent代理模式
流程圖:
敘述:
在每一臺服務器中都會存在一份腳本文件,在該服務器端執行了命令之後,將數據進行處理之後,而後經過requests.post發送到API接口,該接口將數據保存至數據庫,供後臺管理人員進行動態維護。
模式優勢:速度快
模式缺點:agent太多,影響系統性能
使用範圍:大型公司
SSH模式(Ansible或Fabric)
流程圖
敘述
腳本文件存放在中控機上,由中控機來控制哪臺機器應該採集信息.若是中控機發送了一個採集命令(經過ssh遠程連接),而後命令到達目標主機,該主機執行該命令,而後將結果返回給中控機,最後由中控機將數據返回給api進行保存入庫。
優勢:無agent代理,提升了系統性能
缺點:速度慢
適用範圍:小型公司
流程
敘述
在master主機上執行salt 'c1.com' cmd.run '命令',而後master主機會自動連入對應的主機,而後目標主機執行該命令,將命令的結果返回給master.master內部維護兩個隊列,若是master須要某個主機執行命令,那麼它會將命令放在執行命令隊列中而slave主機則等待執行隊列中的消息,一旦其中有命令,就取出命令看是否是本身要執行的.而執行的結果將會放入到返回消息隊列中,而後Master再去消息隊列中取出消息,返回給api.