發表於2024-11-05
中國運維領域偶像級專傢、騰訊高級係統工程師在天涯社區和騰訊近10年運維實踐的經驗和智慧結晶不僅詳盡介紹瞭服務監控、數據報錶、係統安全等基礎模塊,而且深入講解瞭自動化操作、係統管理、配置管理、集群管理及大數據應用等高級功能,包含4個完整的綜閤案例。
本書在中國運維領域將有“劃時代”的重要意義:一方麵,這是國內一本從縱、深和實踐角度探討Python在運維領域應用的著作;一方麵本書的作者是中國運維領域的“偶像級”人物,本書是他在天涯社區和騰訊近10年工作經驗的結晶。因為作者實戰經驗豐富,所以能高屋建瓴、直指痛處,圍繞Python自動化運維這個主題,不僅詳細介紹瞭係統基礎信息、服務監控、數據報錶、係統安全等基礎模塊,而且深入講解瞭自動化操作、係統管理、配置管理、集群管理及大數據應用等高級功能。重要的是,完整重現瞭4個來自實際生産環境的不同功能運維平颱的綜閤案例,展示瞭完整的平颱架構及開發流程。
全書一共16章:基礎篇(1-4章)詳細介紹瞭係統基礎信息、業務服務監控、定製業務質量報錶、係統安全等基礎和常用模塊;高級篇(5-12章)深入講解瞭批量運維管理器pexpect、paramiko、Fabric,集中化管理平颱Ansible、Saltstack,統一網絡控製器Func等高級功能,涵蓋自動化操作、係統管理、配置管理、集群管理及大數據應用等主題;案例篇(13-16章)詳細介紹瞭4個來自不同平颱的運維案例,如何從零開始打造一個B/S自動化運維平颱、如何打造Linux係統安全審計功能、如何構建分布式質量監控平颱、如何構建桌麵版C/S自動化運維平颱,這4個案例均來自實際生産環境。
劉天斯,中國運維領域的偶像級人物,從事係統運維工作近10年。現就職於騰訊,擔任高級係統工程師,負責騰訊CDN的運維工作;曾就職於天涯社區,擔任架構師兼高級係統工程師。熱衷開源技術的研究,包括係統架構、運維開發、負載均衡、緩存技術、數據庫、分布式存儲及雲計算等領域,擅長大規模集群的運維工作。崇尚“技術讓工作變得更簡單”的理念,開發並維護著“天涯LVS管理係統”、“天涯服務器管理係統”、“在綫圖片處理平颱”、“Varnish緩存推送平颱”等7個開源項目。對Python如何在運維中發揮作用進行瞭深入研究,而且在騰訊內部開展瞭大量實踐,基於Python開發瞭集群自動化操作工具yorauto,在騰訊各大事業群廣泛使用,同時入選公司精品推薦組件。
曾多次榮獲新浪技術、51CTO和ITPUB等社區評選的“博客專傢”稱號。個人運維著博客“運維進行時”,從2007年至今,筆耕不綴,堅持分享自己在運維領域的經驗和智慧。擁有發明專利4項。
本書贊譽
前言
第一部分 基礎篇
第1章 係統基礎信息模塊詳解
1.1 係統性能信息模塊psutil
1.1.1 獲取係統性能信息
1.1.2 係統進程管理方法
1.2 實用的IP地址處理模塊IPy
1.2.1 IP地址、網段的基本處理
1.2.2 多網絡計算方法詳解
1.3 DNS處理模塊dnspython
1.3.1 模塊域名解析方法詳解
1.3.2 常見解析類型示例說明
1.3.3 實踐:DNS域名輪循業務監控
第2章 業務服務監控詳解
2.1 文件內容差異對比方法
2.1.1 示例1:兩個字符串的差異對比
2.1.2 生成美觀的對比HTML格式文檔
2.1.3 示例2:對比Nginx配置文件差異
2.2 文件與目錄差異對比方法
2.2.1 模塊常用方法說明
2.2.2 實踐:校驗源與備份目錄差異
2.3 發送電子郵件模塊smtplib
2.3.1 smtplib模塊的常用類與方法
2.3.2 定製個性化的郵件格式方法
2.3.3 定製常用郵件格式示例詳解
2.4 探測Web服務質量方法
2.4.1 模塊常用方法說明
2.4.2 實踐:實現探測Web服務質量
第3章 定製業務質量報錶詳解
3.1 數據報錶之Excel操作模塊
3.1.1 模塊常用方法說明
3.1.2 實踐:定製自動化業務流量報錶周報
3.2 Python與rrdtool的結閤模塊
3.2.1 rrdtool模塊常用方法說明
3.2.2 實踐:實現網卡流量圖錶繪製
3.3 生成動態路由軌跡圖
3.3.1 模塊常用方法說明
3.3.2 實踐:實現TCP探測目標服務路由軌跡
第4章 Python與係統安全
4.1 構建集中式的病毒掃描機製
4.1.1 模塊常用方法說明
4.1.2 實踐:實現集中式的病毒掃描
4.2 實現高效的端口掃描器
4.2.1 模塊常用方法說明
4.2.2 實踐:實現高效的端口掃描
第二部分 高級篇
第5章 係統批量運維管理器pexpect詳解
5.1 pexpect的安裝
5.2 pexpect的核心組件
5.2.1 spawn類
5.2.2 run函數
5.2.3 pxssh類
5.3 pexpect應用示例
5.3.1 實現一個自動化FTP操作
5.3.2 遠程文件自動打包並下載
第6章 係統批量運維管理器paramiko詳解
6.1 paramiko的安裝
6.2 paramiko的核心組件
6.2.1 SSHClient類
6.2.2 SFTPClient類
6.3 paramiko應用示例
6.3.1 實現密鑰方式登錄遠程主機
6.3.2 實現堡壘機模式下的遠程命令執行
6.3.3 實現堡壘機模式下的遠程文件上傳
第7章 係統批量運維管理器Fabric詳解
7.1 Fabric的安裝
7.2 fab的常用參數
7.3 fabfile的編寫
7.3.1 全局屬性設定
7.3.2 常用API
7.3.3 示例1:查看本地與遠程主機信息
7.3.4 示例2:動態獲取遠程目錄列錶
7.3.5 示例3:網關模式文件上傳與執行
7.4 Fabric應用示例
7.4.1 示例1:文件打包、上傳與校驗
7.4.2 示例2:部署LNMP業務服務環境
7.4.3 示例3:生産環境代碼包發布管理
第8章 從"零"開發一個輕量級WebServer
8.1 Yorserver介紹
8.1.1 功能特點
8.1.2 配置文件
8.2 功能實現方法
8.2.1 HTTP緩存功能
8.2.2 HTTP壓縮功能
8.2.3 HTTP SSL功能
8.2.4 目錄列錶功能
8.2.5 動態CGI功能
第9章 集中化管理平颱Ansible詳解
9.1 YAML語言
9.1.1 塊序列描述
9.1.2 塊映射描述
9.2 Ansible的安裝
9.2.1 業務環境說明
9.2.2 安裝EPEL
9.2.3 安裝Ansible
9.2.4 Ansible配置及測試
9.2.5 配置Linux主機SSH無密碼訪問
9.3 定義主機與組規則
9.3.1 定義主機與組
9.3.2 定義主機變量
9.3.3 定義組變量
9.3.4 分離主機與組特定數據
9.4 匹配目標
9.5 Ansible常用模塊及API
9.6 playbook介紹
9.6.1 定義主機與用戶
9.6.2 任務列錶
9.6.3 執行playbook
9.7 playbook角色與包含聲明
9.7.1 包含文件,鼓勵復用
9.7.2 角色
9.8 獲取遠程主機係統信息:Facts
9.9 變量
9.9.1 Jinja2過濾器
9.9.2 本地Facts
9.9.3 注冊變量
9.10 條件語句
9.11 循環
9.12 示例講解
第10章 集中化管理平颱Saltstack詳解
10.1 Saltstack的安裝
10.1.1 業務環境說明
10.1.2 安裝EPEL
10.1.3 安裝Saltstack
10.1.4 Saltstack防火牆配置
10.1.5 更新Saltstack配置及安裝校驗
10.2 利用Saltstack遠程執行命令
10.3 Saltstack常用模塊及API
10.4 grains組件
10.4.1 grains常用操作命令
10.4.2 定義grains數據
10.5 pillar組件
10.5.1 pillar的定義
10.5.2 pillar的使用
10.6 state介紹
10.6.1 state的定義
10.6.2 state的使用
10.7 示例:基於Saltstack實現的配置集中化管理
10.7.1 環境說明
10.7.2 主控端配置說明
10.7.3 配置pillar
10.7.4 配置state
10.7.5 校驗結果
第11章 統一網絡控製器Func詳解
11.1 Func的安裝
11.1.1 業務環境說明
11.1.2 安裝Func
11.2 Func常用模塊及API
11.2.1 選擇目標主機
11.2.2 常用模塊詳解
11.3 自定義Func模塊
11.4 非Python API接口支持
11.5 Func的Facts支持
第12章 Python大數據應用詳解
12.1 環境說明
12.2 Hadoop部署
12.3 使用Python編寫MapReduce
12.3.1 用原生Python編寫MapReduce詳解
12.3.2 用Mrjob框架編寫MapReduce詳解
12.4 實戰分析
12.4.1 示例場景
12.4.2 網站訪問流量統計
12.4.3 網站HTTP狀態碼統計
12.4.4 網站分鍾級請求數統計
12.4.5 網站訪問來源IP統計
12.4.6 網站文件訪問統計
第三部分 案例篇
第13章 從零開始打造B/S自動化運維平颱
13.1 平颱功能介紹
13.2 係統構架設計
13.3 數據庫結構設計
13.3.1 數據庫分析
13.3.2 數據字典
13.3.3 數據庫模型
13.4 係統環境部署
13.4.1 係統環境說明
13.4.2 係統平颱搭建
……
第1章
係統基礎信息模塊詳解
係統基礎信息采集模塊作為監控模塊的重要組成部分,能夠幫助運維人員瞭解當前係統的健康程度,同時也是衡量業務的服務質量的依據,比如係統資源吃緊,會直接影響業務的服務質量及用戶體驗,另外獲取設備的流量信息,也可以讓運維人員更好地評估帶寬、設備資源是否應該擴容。本章通過運用Python第三方係統基礎模塊,可以輕鬆獲取服務關鍵運營指標數據,包括Linux基本性能、塊設備、網卡接口、係統信息、網絡地址庫等信息。在采集到這些數據後,我們就可以全方位瞭解係統服務的狀態,再結閤告警機製,可以在第一時間響應,將異常齣現在苗頭時就得以處理。
本章通過具體的示例來幫助讀者學習、理解並掌握。在本章接下來的內容當中,我們的示例將在一個連續的Python交互環境中進行。
進入Python終端,執行python命令進入交互式的Python環境,像這樣:
# python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
1.1 係統性能信息模塊psutil
psutil是一個跨平颱庫,能夠輕鬆實現獲取係統運行的進程和係統利用率(包括CPU、內存、磁盤、網絡等)信息。它主要應用於係統監控,分析和限製係統資源及進程的管理。它實現瞭同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作係統,支持從2.4到3.4的Python版本,目前最新版本為2.0.0。通常我們獲取操作係統信息往往采用編寫shell來實現,如獲取當前物理內存總大小及已使用大小,shell命令如下:
物理內存total值: free -m | grepMem | awk '{print $2}'
物理內存used值: free -m | grepMem | awk '{print $3}'
相比較而言,使用psutil庫實現則更加簡單明瞭。psutil大小單位一般都采用字節,如下:
>>> import psutil
>>>mem = psutil.virtual_memory()
>>>mem.total,mem.used
(506277888L, 500367360L)
psutil的源碼安裝步驟如下:
#wget --no-check-certificate
# tar -xzvf psutil-2.0.0.tar.gz
# cd psutil-2.0.0
# python setup.py install
……
前言 為什麼要寫這本書
隨著信息時代的迅速發展,尤其是互聯網日益融入大眾生活,作為這一切背後的IT服務支撐,運維角色的作用越來越大,傳統的人工運維方式已經無法滿足業務的發展需求,需要從流程化、標準化、自動化去構建運維體係,其中流程化與標準化是自動化的前提條件,自動化的最終目的是提高工作效率、釋放人力資源、節約運營成本、提升業務服務質量等。我們該如何達成這個目標呢?運維自動化工具的建設是最重要的途徑,具體包括監控、部署變更、安全保障、故障處理、運營數據報錶等。本書介紹如何使用Python語言來實現這些功能點,以及Python在我們的自動化運維之路上發揮作用,解決瞭哪些運維問題等。
為什麼是Python?Python是一種麵嚮對象、解釋型計算機程序設計語言,由Guido van Rossum於1989年年底發明,具有簡單易學、開發效率高、運行速度快、跨平颱等特點,尤其是具有大量第三方模塊的支持,其中不乏優秀的運維相關組件,例如Saltstack、Ansible、Func、Fabric等。大部分運維人員為非專業開發人士,對他們而言,選擇一門上手快、技術門檻低的開發語言非常重要。由於Python具有腳本語言的特點,學習資源多,社區非常活躍,且在Linux平颱默認已安裝等優勢。Python已經是當今運維領域最流行程的開發語言之一。
2003年畢業後,我的第一份工作是當PHP程序員,人力緊張時還要兼顧美工的工作。時常迴想,其實也隻有在小公司纔能修煉齣“十八般武藝”。在“非典”肆虐的歲月,大部分公司都閉門不招聘,一個畢業生能有這樣的機會鍛煉也顯得尤為珍貴。工作中一次偶然的機會看到導師詩成兄在黑漆漆的界麵中輸入不同指令,第一感覺非常震撼,很酷,聯想到《黑客帝國》電影中的畫麵,與之前接觸到的Windows係統完全不一樣,後來纔曉得是Redhat 9(紅帽9)。此後很長的一段時間裏,整個人完全沉醉在Linux的世界裏,處於一種癡迷的狀態,那時我還是一個程序員。
到瞭2005年10月,看到隔壁公司招聘一名Linux係統工程師,抱著試一試的心態去麵試,結果齣乎意料,我被錄用瞭,這樣我就找到瞭第二個東傢—天涯社區。人生的第一個轉摺點在此醞釀,由於趕上瞭公司快速發展的階段,接觸到瞭很多開源技術,包括LVS、Squid、Haproxy、MongoDB、MySQL、Cfengine等,並且不斷在生産環境中應用所學的技術,取得瞭非常不錯的效果,重點業務的高可用持續保持在99.99%。期間新的問題也陸續齣現,包括如何更好整閤各類開源組件,發揮其最大效能,以及如何高效運營。不可否認,具有開發背景的運維人員有著先天優勢,可以在不同角色之間進行思考,擴大視野。期間我參與瞭推動大量標準化、規範化的建設,以此為前提,開發瞭“SDR1.0-Linux主機集中管理”、“天涯LVS管理係統”、“天涯服務器管理係統(C/S與B/S版)”、“服務器機櫃模擬圖平颱”、“Varnish緩存推送平颱V1.0”等平颱,這些平颱在很大程度上改變瞭運維人員手工作坊式的工作模式。在釋放人力的同時,我看到國內其他公司的同仁也在做同樣的事情,突然間有一個想法,就是開源。此時已經是2009年,這個想法也得到係統部經理小軍認可,同年12月陸續在code.google.com平颱托管,讓業界更深入瞭解天涯社區的技術架構。憑著這些作品及分享的技術文章,我的博客“運維進行時榮獲瞭“2010年度十大傑齣IT博客”的殊榮。我還先後參與瞭51CTO、IT168、CU等門戶網站以架構、運維為主題的專訪,在運維圈得到越來越多同仁的認同。
再談談如何與Python結緣。接觸Python是從《簡明Python教程》開始,由於我有Perl與PHP的基礎,學習Python沒有太大壓力。事實上,Python的簡潔、容易上手以及大量第三方模塊等特點,深深吸引瞭我,讓我第二次沉醉於知識的海洋。我很快深入學習瞭Func、Django框架、SQLAlchemy、BeautifulSoup、Pys60、wxPython、Pygame、wmi等經典模塊,同時將所學知識應用到運維體係中,解決在工作中碰到的問題。例如,開發的“多節點應用延時監控平颱”解決瞭多運營商網絡環境下的業務服務質量監控問題;開發的“Varnish&Squid;緩存推送平颱”解決瞭快速刷新緩存對象的問題。再例如,刪除敏感帖子的時效性要求非常高,需要在後颱觸發刪除後立即生效,與緩存推送平颱對接後很好地解決瞭這一問題;天涯服務器管理係統(C/S、B/S、移動版)實現自助、智能、多維度接入,提高瞭運維效率,減少瞭人工誤操作,釋放瞭人力資源,同時標準化與流程化得到技術保障與實施落地。
天涯社區是我個人職業生涯的培育期,讓我重新審視自我,明確瞭未來的規劃與定位。2011年9月是我職業生涯的成長期的開始,加盟瞭騰訊,負責靜態圖片、大遊戲下載業務CDN的運維工作,接觸到龐大的用戶群、海量的資源(設備、帶寬、存儲)、世
Python自動化運維:技術與最佳實踐 下載 mobi epub pdf txt 電子書 格式
Python自動化運維:技術與最佳實踐 下載 mobi pdf epub txt 電子書 格式 2024
Python自動化運維:技術與最佳實踐 下載 mobi epub pdf 電子書雖然價格比其他書店貴一些,不過好在書相當不錯,物流也很準時!
評分Python自動化運維:技術與最佳實踐是一本好書
評分包裝和質量沒有問題,物流給力
評分這書不錯,很實用。超級棒!物流很快。
評分書籍隻在京東購,速度快,正品有保證。提供發票,公司報銷也爽快。
評分這書不錯,很實用。超級棒!物流很快。
評分咯哦路途我摸摸屠龍哦哦
評分還是一如既往的給力,貨物很快就收到瞭,一如既往的好,活動很給力,用瞭優惠券,很實惠的,比去實體店買還便宜還方便還快速到貨,測試瞭一下,和介紹描述的完全一緻,質量很好,正品無疑,使用效果也很不錯,很滿意!京東商品種類確實很多,和其他網站相比選擇餘地也就大瞭很多。 而且可以用同類商品做比較。商品的價格也不貴,性價比挺高的。
評分京東配送沒的說,非常及時,快遞員專業,買書選京東沒錯
Python自動化運維:技術與最佳實踐 mobi epub pdf txt 電子書 格式下載 2024