自动化巡检服务器状态可以从巡检内容、采集方式、调度执行、告警通知、可视化几个层面来设计。下面给你一套可落地的方案,从简单到专业逐步演进。
常见服务器巡检指标:
基础资源
系统状态
服务与进程
日志与安全
#!/bin/bash
# server_check.sh
HOST=$(hostname)
DATE=$(date '+%Y-%m-%d %H:%M:%S')
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')
MEM=$(free | awk '/Mem/{printf "%.1f", $3/$2*100}')
DISK=$(df -h / | awk 'NR==2{print $5}')
echo "$DATE $HOST CPU:$CPU% MEM:$MEM% DISK:$DISK"
crontab -e
*/30 * * * * /opt/scripts/server_check.sh >> /var/log/server_check.log
if [ $(echo "$MEM > 90" | bc) -eq 1 ]; then
echo "内存使用过高: $MEM%" | mail -s "服务器告警" admin@xx.com
fi
✅ 适合:服务器少(<10台)、无运维平台
# check.yml
- hosts: all
tasks:
- name: 检查磁盘
shell: df -h /
register: disk
- name: 输出结果
debug:
msg: "{{ inventory_hostname }}: {{ disk.stdout }}"
执行:
ansible-playbook check.yml
可结合:
ansible-cron✅ 适合:10–100 台服务器
架构:
服务器 → node_exporter → Prometheus → Grafana
优点
示例告警规则
- alert: 高CPU使用
expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
for: 5m
✅ 适合:中大型环境
✅ 适合:传统企业运维
示例(钉钉):
curl -X POST $DINGTALK_URL \
-H 'Content-Type: application/json' \
-d '{"msgtype":"text","text":{"content":"服务器 CPU 告警"}}'
| 规模 | 推荐方案 |
|---|---|
| 1–10 台 | Shell + Cron + 邮件 |
| 10–50 台 | Ansible + 日志 |
| 50+ 台 | Prometheus + Grafana |
| 企业级 | Zabbix / 运维平台 |
如果你愿意,可以告诉我:
我可以直接帮你写一套可运行的自动化巡检方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。