1. 程式人生 > >不會 Python 的運維都將失業?(內含福利)

不會 Python 的運維都將失業?(內含福利)

處理 分布式監控 IT 框架 觸發 magedu 間隔 無需 使用

技術分享圖片

導言:2017年無疑是Python最火的一年,為什麽Python這麽火,這裏面功勞最大的或許就是AlphaGo了,你知道嗎?AlphaGo是用Python開發的哦!從技術領先的運維工具到人工智能學習程序,你都能看到Python的身影。那麽對於運維來說,不會Python就將要失業嗎?我想看了作者對在Linux 系統運維中Python都有哪些應用的分析你就會知道Python對運維的重要性了。

Python現階段分析

現階段,掌握一門開發語言已經成為高級運維工程師的必備技能。如果你不會開發,那麽你就不能充分理解你們系統的業務流程,那麽你就不能幫助調試和優化開發人開發的程序。開發人員有的時候很少關註性能相關的問題,這些問題誰來做呢?還是得運維人員來做。

不信?舉個栗子一個業務上線了,導致 CPU 使用過高,內存占用過大。怎麽辦?這是運維來解決還是開發來解決?

如果你不會開發,你可能只能查到進程級別,也就是哪個進程占用這麽多,然後呢?通常情況下就直接交給開發人員處理了,開發人員一頭霧水的處理問題,不能交付問題原因這樣咋體現你運維的價值?

另外,大一點的公司,服務器都上幾百,上千,甚至數萬臺,這種情況下怎樣做自動化運維?用 SHELL 寫腳本 FOR 循環?呵呵,歇了吧, SHELL腳本數量一多,你用什麽來管理SHELL腳本? SHELL腳本也就適合簡單的系統管理工作。

構建復雜的自動化任務還得是要用專門的開發語言。現有的開源軟件如 puppet\saltstack\zabbix\nagio 這類軟件很多。

但這些都是獨立的系統軟件,在運維自動化追求統一管理的今天,跨平臺的維護你還能忍嗎?不做定制、不做二次開發可行嗎?可是你不會,咋辦嘞?找開發部門?開發部門不懂運維的實際業務邏輯,寫出來的東西爛,爛到不能用,這活最後還得交給運維開發人員來做。

其次,不會運維開發,你就不能自己寫運維平臺\復雜的運維工具,一切要借助於找一些開源軟件拼拼湊湊,如果是這樣,那就請不要抱怨你的工資低,你的工作不受重視了。

那為什麽是Python?

PYTHON 第一是個非常牛 B 的膠水語言, 能滿足絕大部分自動化運維的需求,又能做後端 C/S 架構,又能用 WEB 框架快速開發出高大上的 WEB 界面,還能做機器學習,只有當你自已有能力做出一套運維自動化系統的時候,你的價值才體現出來,你才有資格跟老板談重視, 否則,還是老老實實回去裝機器吧。

Python在Linux運維中的常見應用

第一、靜態文件服務器

技術分享圖片

重點練習使用redux管理狀態。前端api與後端交互、數據封裝、狀態變化等。

第二、Python開發的jumpserver跳板機

技術分享圖片
jumpserver跳板機是一款由Python編寫開源的跳板機(堡壘機)系統,實現了跳板機應有的功能。基於ssh協議來管理,客戶端無需安裝agent。

企業主要用於解決:
可視化安全管理

  • 特點:
    完全開源,GPL授權,Python編寫,Django開發框架,容易再次開發

  • 實現了跳板機基本功能:
    認證、授權、審計。集成了Ansible、批量命令等。功能強大。

通俗點就是起到監控誰在服務器上做了什麽操作等。錄像回放、命令搜索、實時監控、批量上傳下載等。

第三:Python開發的Magedu分布式監控系統

技術分享圖片
以自動化運維視角為出發點,自動化功能、監控告警、性能調優,結合saltstack實現自動化配置管理等內容進行了全方位的深入剖析。

企業主要用於解決:
自動化監控常用系統服務、應用、網絡設備等。分布式可監控更多服務器,分區域監控再匯總。Zabbix監控結合Python自定義監控腳本。

  • 監控系統需求分析:
    監控常用系統服務、應用、網絡設備等?一臺主機上可監控多個不同服務、不同服務的監控間隔可不同?同一個服務在不同主機上的監控間隔、報警閾值可不同?告警級別?數據可視化,如何做出簡潔美觀的用戶界面?如何實現單機支持5000+機器監控需求?采取何種通信方式?主動or被動?

第四:Python開發的Magedu的CMDB

技術分享圖片

企業主要用於解決:
項目功能,采集硬件數據、Api、頁面管理。統計資產,例如服務器存放位置,服務器上的賬號等等。

  • cmdb的開發需要包含三部分功能:
    采集硬件數據、API、頁面管理。

  • 執行服務的過程如下:
    服務器的客戶端采集硬件數據,然後將硬件信息發送到API,API負責將獲取到的數據保存到數據庫中,後臺管理程序負責對服務器信息的配置和展示。

第五:Python開發的任務調度系統

技術分享圖片

Python任務調度系統的multiprocessing模塊不但支持多進程,其中managers子模塊還支持把多進程分布到多臺機器上。

企業主要用於解決:批量管理crontab定時任務。原理用戶通過web頁面設置任務,傳輸到任務調度系統服務器上的客戶端,客戶端收集數據反饋給服務器端,服務器端根據任務具體內容調度後端的集群服務器做定時任務。

一個服務進程可以作為調度者,將任務分布到其他多個機器的多個進程中,依靠網絡通信。想到這,就在想是不是可以使用此模塊來實現一個簡單的作業調度系統。

第六:Python運維流程系統

技術分享圖片

使用python語言編寫的調度和監控工作流的平臺內部用來創建、監控和調整數據管道。任何工作流都可以在這個使用Python來編寫的平臺上運行。

企業主要用於解決:通俗點說就是規範運維的操作,加入審批,一步一步操作的概念。

是一種允許工作流開發人員輕松創建、維護和周期性地調度運行工作流(即有向無環圖或成為DAGs)的工具。這些工作流包括了如數據存儲、增長分析、Email發送、A/B測試等等這些跨越多部門的用例。

這個平臺擁有和 Hive、Presto、MySQL、HDFS、Postgres和S3交互的能力,並且提供了鉤子使得系統擁有很好地擴展性。除了一個命令行界面,該工具還提供了一個基於Web的用戶界面讓您可以可視化管道的依賴關系、監控進度、觸發任務等。

來個小總結

幾個實戰項目之間的結合,可以理解成,運維流程系統,就是規範運維的每一步操作,審批通過後,通過調用任務調度系統來定制批量操作。任務調度系統操作的過程中,可以通過CMDB資產管理系統來獲取服務器的詳細信息,ip地址,用戶名,密碼等。

如果是需要運維人員直接登陸到服務器上操作,需要通過跳板機來登陸服務器,記錄誰登陸了哪臺服務器,具體做了什麽操作等。

以上為常見的五種應用,請指點!

Python自動化主要幫助企業解決日常繁雜的工作事務,數據化、可視化的監控日常的業務運行情況。

歡迎一起交流和補充!

本文由高效運維原創作者投稿,高效運維社區致力於陪伴您的職業生涯,與您一起愉快的成長。

不會 Python 的運維都將失業?(內含福利)