CMDB小計1

 

1.web開發(Django,flask, tornado)。python

2.自動化運維(CMDB項目)。linux

3.爬蟲 和 數據分析。web

4.自動化測試。算法

4.人工智能,機械學習, 算法shell

 

```
CMDB 項目:數據庫

自動化運維:django

運維:管理服務器的flask

ps: 分爲基礎運維,應用運維服務器

爲何須要自動化運維?網絡

1.項目上線:

流程:產品經理調研(畫出原型圖)------定需求----------三方會談(產品經理,研發,老大)-----定日期-------測試項目--------最終上線--------應用運維

目前:是把代碼打包給運維,運維解壓上線

問題:隨着機器數量的線性增長,運維的工做量也是線性增長,重複並且是無心義的勞動

解決:

1,寫一個shell腳本,進行部署

2,搞一個自動化代碼上線系統

必要條件:

服務器的各類信息(主機名,CPU,硬盤大小等)

2.監控系統:

檢測服務器的各類信息(硬盤是否滿,CPU的使用率,內存的使用率,網站服務運行是否正常)

問題:以前寫簡單的腳本,檢測服務器的信息,比較麻煩

解決:想將服務器的各類信息,以圖標的形式展現在web界面上(可視化)

必要條件:
服務器的各類信息(主機名,CPU,硬盤大小等)

3.自動裝機系統:
問題:人工工做量大(ps要人一臺臺裝)

解決:搞一個裝機系統(一鍵裝機),cobbler軟件
必要條件:服務器的各類信息(主機名,CPU等)

4.Excel表格審計管理資產
cmdb系統:
配置管理系統:

運維自動化沒法實現

cmdb實現的核心:

目標:收集服務器的信息(CPU,內存,網卡,硬盤等)

實現方式:

1.linux命令獲取CPU,內存

2.python執行linux的命令:

subprocess模塊, getoutput函數

```

```
df -h內存信息
cat /proc/cpuinfo IP信息

 

4種實現方案: agent方案: 其本質上就是在各個服務器上執行subprocess.getoutput()命令,而後將每臺機器上執行的結 果,經過request模塊返回給主機API,而後主機API收到這些數據以後,放入到數據庫中,而後 經過web界面將數據展示給用戶 缺點:須要在每一臺服務器上進行部署 優勢:速度快 使用場景:服務器比較多的時候

 

 

ssh類方案: 中控機經過parmiko(py模塊)登陸到各個服務器上,而後執行命令的方式去獲取各個服務器上的信息 API從數據庫中獲取到未採集的機器列表後發送到中控機服務器中,中控機服務器經過parmiko模塊登陸到服務器上,進行信息的採集,服務器採集完後再將結果返回給中控機,仍後將從服務器中獲得 的信息經過 request模塊發送給API,API經過主機名和SN做爲惟一標識,將信息錄入到數據中,而後經過web界面將數據展示給用戶 paramiko模塊 缺點: 1:網絡有延遲,有一箇中控機,網絡有延遲,速度較第一種要慢一些(有其是數據比較大的時候更加明顯) 優勢:不用每臺都部署 使用場景: 服務器比較少的時候

 

 

 

salt-stack方式: 中控機從API中獲取未採集的資產信息後經過隊列發送命令給服務器執行。服務器執行完後將結果放到入另外一個隊列中,中控機將獲取到的服務信息結果發送到API進而錄入數據庫。而後經過web界面將數據展示給用戶

使用場景:公司已經使用salt-stack軟件 優勢:速度快,開發成本低 缺點:過於依賴salt-stack軟件 安裝salt-master: yum install salt -master 配置配置文件: interface: 本機IP service salt-master start#(ps啓動) 安裝 salt-minion yum install salt-minion 配置文件配置: master:10.0.0.51 salt -ket -L:列出全部的minion主機 salt "主機名「 cmd.run "命令"

 

 

 

puppet方式:(不用特別學習)

rubby寫的 ​

 

分爲三大部分: 1.服務器數據採集 目標: 實現上述三種方案,而後經過配置,能夠任意的切換方案。 規劃採集項目: bin:啓動文件 conf:配置 lib:庫文件或公共文件 src:源代碼 test:測試目錄 配置文件的管理: django的全局配置文件: 管理一些不經常使用的默認的配置 好比:語言, email配置等。 核心點: setattr, getattr, dir 的用法 代碼: class Settings(): def init(self)


核心點:
setattr, getattr, dir 的用法
代碼:
class Settings():
def __init__(self):

## 整合全局配置文件
for k in dir(global_settings):
if k.isupper():
v = getattr(global_settings, k)
setattr(self, k, v)

## 整合自定義配置文件
for k in dir(config):
if k.isupper():
v = getattr(config, k)
setattr(self, k, v)
settings = Settings()

 

 

2.API獲取數據並清洗入DB

3.web界面的展現 ​```

相關文章
相關標籤/搜索