CMDB小计1
?
1.web開發(Django,flask, tornado)。
2.自動化運維(CMDB項目)。
3.爬蟲 和 數據分析。
4.自動化測試。
4.人工智能,機械學習, 算法
?
```
CMDB 項目:
自動化運維:
運維:管理服務器的
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界面的展示 ?```
轉載于:https://www.cnblogs.com/sudaguo/p/10867377.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 微信支付app支付怎么快速开通
- 下一篇: JDK8十大新特性