如何编写运维常用监控脚本?

2025.5.29 杂七杂八 697

如何编写运维常用监控脚本? 杂七杂八-第1张

本文详细讲解运维监控脚本的编写方法,包括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
业务指标 请求量/成功率/延迟 应用日志/埋点

五、告警机制最佳实践

  1. 分级告警:区分紧急/重要/提示等级
  2. 聚合通知:相同告警合并发送
  3. 恢复通知:问题解决后发送恢复确认
  4. 静默期:避免短时间重复告警

六、性能优化技巧

  • 使用缓存减少重复查询(如将多次使用的df结果存入变量)
  • 批量执行命令(避免多次SSH连接)
  • 异步处理非关键指标
  • 合理设置执行间隔(关键指标1分钟,次要指标5分钟)

通过以上方法,可以构建出高效可靠的运维监控体系。建议将脚本纳入版本控制,并定期审查优化。

评论