背景与需求
在IDC运维中,服务器硬盘故障是导致业务中断的主要原因之一。传统的人工巡检方式存在效率低、响应慢、易遗漏等问题。通过Python编写自动化脚本,可以实现对硬盘健康状态的定期检查、异常告警及日志记录,显著提升运维效率与可靠性。
脚本设计思路
脚本基于Python标准库(如os、subprocess、smtplib)和第三方工具(如smartctl),主要完成以下功能:
- 调用系统命令获取硬盘SMART信息
- 解析关键指标(如Reallocated_Sector_Ct、Temperature_Celsius、Power_On_Hours)
- 根据阈值判断健康状态并生成告警
- 记录巡检日志至本地文件
- 通过邮件发送异常通知
实现步骤
- 环境准备:确保系统已安装smartmontools,并配置Python环境。
- 数据采集:使用
subprocess.run()执行smartctl -a /dev/sda,捕获输出。 - 解析与评估:通过正则表达式提取关键字段,与预设阈值对比。
- 告警与日志:若指标异常,记录日志并调用smtplib发送邮件。
- 定时执行:利用crontab或计划任务设置每日/每周运行。
核心代码示例
以下为关键函数简化示例(实际需增加错误处理与配置管理):
def check_disk(device):
result = subprocess.run(['smartctl', '-a', device], capture_output=True, text=True)
if 'Reallocated_Sector_Ct' in result.stdout:
value = int(re.search(r'Reallocated_Sector_Ct\s+\d+\s+(\d+)', result.stdout).group(1))
if value > 10:
send_alert(device, '坏道计数过高')
优势与应用
- 效率提升:自动化巡检可覆盖数百台服务器,耗时从数小时降至分钟级。
- 减少误判:基于统一阈值与规则,避免人工主观差异。
- 快速响应:异常实时告警,缩短故障发现时间。
该脚本已在实际IDC环境中部署,支持SAS/SATA及NVMe硬盘,可灵活扩展至其他监控指标。