当前位置: 首页 > news >正文

Shell监控告警:从零搭建服务器监控系统

对于运维工程师来说,服务器监控是保障业务稳定运行的核心能力。本文汇总10个实用的Shell监控告警技巧,帮助你从零搭建轻量级监控系统。


📊 一、核心监控指标获取

1. CPU使用率监控

# 获取CPU空闲率(100-空闲率=使用率) top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1 # 更精确的单核CPU使用率 mpstat 1 1 | awk '/Average/ {print 100-$NF"%"}'

2. 内存使用情况

# 获取内存使用百分比 free | awk '/Mem:/ {printf "%.0f", $3/$2 * 100}' # 实时监控内存变化 watch -n 1 'free -h | grep Mem'

3. 磁盘空间监控

# 获取根分区使用率 df -h / | awk 'NR==2 {print $5}' | sed 's/%//' # 监控所有分区,超过80%告警 df -h | awk 'NR>1 { usage = substr($5, 1, length($5)-1) if (usage > 80) print $1": "$5" (Warning!)" }'

🔍 二、日志与进程监控

4. 关键进程存活检测

#!/bin/bash # 检查进程是否存活,不存在则告警 PROCESS_NAME="nginx" if ! pgrep -x "$PROCESS_NAME" > /dev/null; then echo "$(date) ALERT: $PROCESS_NAME is down!" | tee /var/log/process_alert.log # 这里可接入告警通知 fi

5. 日志关键词实时监控

# 实时监控错误日志关键词 tail -f /var/log/nginx/error.log | awk '/error|critical|failed/ {system("echo "$0" | notify-send Alert")}' # 历史日志统计ERROR数量 grep -c "ERROR" /var/log/app.log

6. 连接数异常检测

# 获取当前TIME_WAIT连接数 netstat -an | awk '/^tcp/ {s[$NF]++} END {for(k in s) print k, s[k]}' # 检测异常IP连接 netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

🚨 三、告警通知实现

7. 微信企业号告警

# 企业微信机器人Webhook告警 send_wechat() { CORPID="your_corpid" WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_key" curl -XPOST "$WEBHOOK_URL" -H 'Content-Type: application/json' \ -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"$(hostname): $1\"}}" }

8. 钉钉告警

# 钉钉机器人告警 send_dingtalk() { WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=your_token" curl -s -X POST "$WEBHOOK" \ -H 'Content-Type: application/json' \ -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"服务器告警: $1\"}}" }

⚙️ 四、自动化监控脚本模板

9. 一键巡检脚本

#!/bin/bash # server_health_check.sh LOG_FILE="/var/log/health_check_$(date +%Y%m%d).log" echo "=== 服务器巡检报告 $(date) ===" > "$LOG_FILE" # CPU检查 CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1) echo "CPU使用率: ${CPU_USAGE}%" >> "$LOG_FILE" # 内存检查 MEM_USAGE=$(free | awk '/Mem:/ {printf "%.1f", $3/$2 * 100}') echo "内存使用率: ${MEM_USAGE}%" >> "$LOG_FILE" # 磁盘检查 DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}') echo "磁盘使用率: ${DISK_USAGE}" >> "$LOG_FILE" # 负载检查 LOAD=$(uptime | awk -F'load average:' '{print $2}') echo "系统负载: $LOAD" >> "$LOG_FILE" # 发送报告 [ -f /usr/local/bin/send_wechat ] && /usr/local/bin/send_wechat "$(cat $LOG_FILE)"

10. 定时任务配置

# 添加到crontab,每5分钟执行一次监控 # crontab -e */5 * * * * /root/scripts/server_health_check.sh # 每小时巡检+邮件报告 0 * * * * /root/scripts/server_health_check.sh | mail -s "Health Report $(hostname)" admin@example.com

📦 五、轻量级监控工具推荐

工具用途特点
htop进程监控交互式界面,比top更直观
iotopI/O监控监控磁盘读写情况
nmon性能综合监控支持CPU/内存/磁盘/网络
GlancesWeb化监控支持浏览器远程查看
netdata实时监控面板安装简单,界面美观
# 一键安装Glances pip install glances glances -w # 启动Web服务,浏览器访问61208端口

✅ 总结

通过Shell脚本配合定时任务和告警通知,可以快速搭建轻量级监控系统。核心要点:

  1. 指标采集:CPU、内存、磁盘、进程、日志
  2. 告警触发:设置阈值,超过阈值自动通知
  3. 定时执行:crontab控制检查频率
  4. 日志留存:保留历史数据便于分析趋势

这套方案适合中小规模服务器集群,生产环境建议配合 Prometheus + Grafana 使用。

http://www.jsqmd.com/news/673001/

相关文章:

  • 2026年口碑好的大宗贸易公司哪家专业?一文为你揭晓答案 - GrowthUME
  • 2026年上海徐汇艺术高中文化课强深度解析:双轨教学与升学规划的真实对比 - 商业小白条
  • VSCode的安装与配置
  • GEO冷启动-第1篇-露天矿智能化成本
  • Dify金融问答合规配置全链路拆解(含敏感词拦截、溯源审计、知识边界熔断机制)
  • 嵌入式BootLoader开发实战:如何用C语言实现CRC32分段校验(附NXP源码解析)
  • 2026上海奉贤民办高考高中对比测评:从升学路径到教学模式的实用选择指南 - 商业小白条
  • 终极指南:在Windows上直接运行APK文件的完整解决方案
  • 2026年马鞍山装修市场新亮点:专业装修企业究竟有何独特之处? - GrowthUME
  • Windhawk终极指南:免费开源Windows系统定制工具完全解析
  • YOLO-Pose vs HRNet/OpenPose:在拥挤地铁和健身镜里,谁才是姿态估计的‘六边形战士’?
  • 启程:当技术遇见数字收藏的渴望
  • [20260416]奇怪的latch free等待事件1.txt
  • Phi-3-mini-4k-instruct-gguf应用实践:技术团队用它批量处理PR描述与Issue摘要
  • ADK+MDT自动化部署实战(六):定制化软件包集成与静默安装引导配置
  • HTML表单实验报告实战【零基础入门,快来快来!!!】
  • 2026年3月进口流量计源头厂家推荐,进口涡街流量计/进口蒸汽流量计/进口流量计/进口孔板流量计,进口流量计机构哪家权威 - 品牌推荐师
  • 汕头快速门/卷闸门/电动门/自动门/伸缩门/玻璃感应门哪家便宜
  • 2026年想找好的雅安居间金服?哪家公司才是最优之选? - GrowthUME
  • 面试必问:别背“URL请求到渲染”了,你的对手压根不走这条路
  • 2026年口碑爆棚!贵阳这些家装公司凭啥赢得客户一致称赞? - GrowthUME
  • Ubuntu 16.04下海康威视工业相机SDK开发避坑指南:从MVS安装到OpenCV图像转换
  • ROS机器人系统与URDF建模入门
  • 003、Git核心概念:仓库、工作区、暂存区、版本库
  • JavaScript 基本流程
  • QT ModbusTCP实战:用QModbusTcpClient封装一个带自动重连的工业客户端
  • H5GG:终极iOS修改引擎的7个核心功能与实战指南
  • 《GPT-6发布了,你的工作还在吗?》
  • 2026年口碑爆棚!大理居间金服众多选择中,究竟哪个最值得入手? - GrowthUME
  • 学Java第3周:被“类型不匹配”折磨一周后,我终于把数据类型转换彻底搞懂了![特殊字符]