中国运维领域偶像级专家、腾讯高级系统工程师在天涯社区和腾讯近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个案例均来自实际生产环境。
第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
……
本书赞誉
前言
第一部分 基础篇
第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 系统平台搭建
……