第1章 系统基础信息模块详解按刘天斯原书第1章重建:系统基础信息模块、psutil系统性能与进程管理、IPy地址与网段处理、dnspython域名解析、DNS域名轮循业务监控。从一次运维变更开始 先预测:脚本在一台测试机成功,是否就能安全用于批量生产?不能。还要说明目标、权限、超时、部分失败、证据和回滚。必须落进可观察的执行链。 核心模型与责任 系统基础信息模块把主机状态转换为结构化数据。采集器要明确采样时刻、单位和权限,返回原始指标而不是直接决定告警;策略层再根据基线和服务目标解释数据。 本章按照原书核心模块建立最小实验,再用现代Python和安全默认重写边界。工具版本可以变化,但目标选择、输入验证、结果聚合和审计证据不能消失。 机制一:采集或控制入口 psutil系统性能与进程管理覆盖CPU、内存、磁盘、网络和进程。cpu_percent第一次调用只是建立基线,进程也会在枚举期间退出,因此代码必须处理NoSuchProcess和AccessDenied。 import psutil snapshot = { 'cpu': psutil.cpu_percent(interval=0.2), 'memory': psutil.virtual_memory().percent, 'disk': psutil.disk_usage('/').percent, } print(snapshot) 运行前固定测试目标与时间窗,运行后保存结构化结果、耗时和异常类型。不要把打印了几行输出当成成功,也不要让示例凭据进入源码。 机制二:状态、网络与批量 IPy地址与网段处理用于计算网络、广播、前缀和包含关系。原书使用IPy,现代Python也可用标准库ipaddress;不要用字符串前缀判断地址归属,IPv4与IPv6必须由地址对象验证。 from ipaddress import ip_network, ip_address network = ip_network('10.20.0.0/20') assert ip_address('10.20.3.8') in network print(network.network_address, network.broadcast_address) 批量任务要先预览匹配目标,再限制并发并逐目标汇总。成功、失败、超时和未返回是不同状态;只展示总成功率会掩盖关键主机失败。 机制三:证据与恢复 dnspython域名解析返回A、AAAA、MX、CNAME等记录及TTL。解析失败要区分NXDOMAIN、无记录、超时和SERVFAIL,缓存时间受TTL约束,不能把一次答案当成永久配置。 DNS域名轮循业务监控要同时验证每个答案是否出现、是否可连接以及服务内容是否正确。只看域名能解析会漏掉后端故障,探针还要记录解析器、时延和本次答案集合。 import dns.resolver answers = dns.resolver.resolve('example.com', 'A', lifetime=3) records = [(answer.address, answers.rrset.ttl) for answer in answers] print(records) 分步验收 实战验证清单 在隔离环境执行三段代码:先只读采集,再模拟一台目标超时,最后验证失败不会改变未授权对象。记录命令或API参数、开始结束时间、目标清单、返回码、标准错误、制品摘要和回滚结果。涉及网络扫描、远程命令或配置发布时,必须使用经过批准的测试资产。 常见误区 本章回顾 官方核心单元核对:系统基础信息模块;psutil系统性能与进程管理;IPy地址与网段处理;dnspython域名解析;DNS域名轮循业务监控。本章把原书模块放进现代运维闭环:先授权与预览,再执行与收集,最后判断、审计和恢复。 术语表← 上一章《Python自动化运维:技术与最佳实践》全书导览下一章 →第2章 业务服务监控详解讨论评论区加载中…