本文详细讲解运维监控脚本的编写方法,包括Bash/Python实现基础监控、关键指标采集、告警逻辑设计以及性能优化技巧,帮助运维工程师构建高效可靠的监控体系。
一、监控脚本的核心设计原则
编写运维监控脚本时需遵循以下原则:
- 低侵入性:不影响被监控系统正常运行
- 可扩展性:方便添加新的监控指标
- 容错机制:异常处理和数据校验必不可少
- 性能优化:控制资源消耗在合理范围
二、Bash脚本实现基础监控
以下是磁盘空间监控的经典实现:
!/bin/bash
磁盘空间监控脚本
THRESHOLD=90
CURRENT=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$CURRENT" -gt "$THRESHOLD" ]; then
echo "警告:根分区使用率 ${CURRENT}% 超过阈值 ${THRESHOLD}%"
可添加邮件/钉钉告警逻辑
exit 1
fi
exit 0
三、Python实现高级监控功能
使用psutil库实现多指标监控:
import psutil
import smtplib
from email.mime.text import MIMEText
def check_system():
alerts = []
CPU检查
if psutil.cpu_percent(interval=1) > 80:
alerts.append("CPU使用率超过80%")
内存检查
mem = psutil.virtual_memory()
if mem.percent > 85:
alerts.append(f"内存使用率{mem.percent}%")
return alerts
def send_alert(alerts):
if alerts:
msg = MIMEText("n".join(alerts))
msg['Subject'] = '系统监控告警'
配置SMTP发送逻辑
smtp.sendmail(...)
if __name__ == '__main__':
alerts = check_system()
send_alert(alerts)
四、关键监控指标采集
监控类别 | 常用指标 | 采集方法 |
---|---|---|
系统资源 | CPU/内存/磁盘/网络 | top/vmstat/iostat |
服务状态 | 端口/进程/日志 | netstat/pgrep/grep |
业务指标 | 请求量/成功率/延迟 | 应用日志/埋点 |
五、告警机制最佳实践
- 分级告警:区分紧急/重要/提示等级
- 聚合通知:相同告警合并发送
- 恢复通知:问题解决后发送恢复确认
- 静默期:避免短时间重复告警
六、性能优化技巧
- 使用缓存减少重复查询(如将多次使用的df结果存入变量)
- 批量执行命令(避免多次SSH连接)
- 异步处理非关键指标
- 合理设置执行间隔(关键指标1分钟,次要指标5分钟)
通过以上方法,可以构建出高效可靠的运维监控体系。建议将脚本纳入版本控制,并定期审查优化。
评论