Python自動化運維:分享高性能可擴展的實用框架

一直在用Python寫各種腳本,想做自動化運維平臺卻有心無力,沒有見過大的運維平臺怎么做,

自己寫的腳本在大的場景下是否靠譜,每當討論說一些基于ssh獲取數據執行操作的方式都會被鄙視。

迷茫大半年找不到方向,最近在reboot系統學習了下,收獲很多,很多疑惑和疑難問題終于解開了。

感謝PC老師講解,程序對系統利用的深入講解[cpu\內存的利用\系統的特性],

幾款典型開源軟件源碼的網絡模型剖析,如何真正控制多線程,守護進程如何fork的,封裝socket非阻塞的框架,如何制定傳輸協議。

  • 監控和執行命令流程圖

    高性能可擴展的python自動化運維框架

  • 軟件目錄 [根據需要分分鐘復制出一個server,改改操作就好了]

    高性能可擴展的python自動化運維框架

  • 任務控制服務的傳輸數據

    高性能可擴展的python自動化運維框架

  • flask數據接口的請求日志

    高性能可擴展的python自動化運維框架

  • agent的執行日志

    高性能可擴展的python自動化運維框架

  • agent的4個線程,可隨意擴展需求

    高性能可擴展的python自動化運維框架

  • 后臺請求頁面和數據接口

高性能可擴展的python自動化運維框架

  • 頁面ajax調用數據接口

高性能可擴展的python自動化運維框架

  • 監控數據出圖

高性能可擴展的python自動化運維框架

哎!前面的數據,6個server同時在一個機器上跑,毫無壓力,監控圖不好看。。。。我來搞幾百個并發shell進程跑跑,把load壓上來。

  • 執行命令 [發出ajax請求,agent異步處理,傳回入庫后,再用ajax動態調用數據接口顯示]

高性能可擴展的python自動化運維框架

總結

此架構非常靈活,任意拆裝拼接,如果小,可功能集成于一點,如果大,可隨意擴展瓶頸,server全部守護進程方式。

一切魔法都封裝在nbNet模塊中,socket非阻塞,自定義傳輸協議,QPS幾萬毫無壓力,所有模塊全部導入這個nbNet模塊,收發接口全部統一,就可隨意拼接,3分鐘就可以擴展出一個不同功能的server。得此神器,只有想不到沒有做不到。

nbNet模塊中2個重要功能,已經全部封裝好了,只需要調用即可。

sendData(sock_a, "reboot", 50003, input)   # 發送數據,也可任意發多份給不同server
nbNet(self.host, self.port, transfer)      # 接收數據

flask_web 就是極簡單的幾個數據接口和html頁面,不得不承認大家確實都覺得一些比較炫的web頁面就很牛,不會過多關注后臺怎么回事,有張漂亮的臉也確實吸引 人,不過確實需要花不少時間折騰,像我這種根本不懂審美,時間又有限,只能做成這個熊樣了,真心不喜歡折騰web頁面,啥時候用啥時候看,看過了還是忘, 這里緊緊做了一些監控出圖和執行命令的ajax調用。底層框架有了,頁面隨便找個做前端的小妹紙配合下就好了。

其他的server流程基本一致,不做過多重復展示了,文件傳輸在另外一個分支上做了,暫時沒有合并,有這套框架,業務和功能比較好擴展了。

這里關于諸多實際情況都做出了考慮,比如agent睡眠時間漂移,監控數據丟失后時間戳不連續,報警動態加載配置,網絡狀態不好等等。但還是有很多細節需要逐步完善的地方

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播