发表于2024-12-23
中国运维领域偶像级专家、腾讯高级系统工程师在天涯社区和腾讯近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