Python自动化运维

Python自动化运维



中国运维领域偶像级专家、腾讯高级系统工程师在天涯社区和腾讯近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章系统基础信息模块详解
■第2章业务服务监控详解
■第3章定制业务质量报表详解
■第4章Python与系统安全
第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是一个跨平台库( http://code.google.com/p/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  https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz  --no-check-certificate
# tar -xzvf psutil-2.0.0.tar.gz
# cd psutil-2.0.0

# python setup.py install