监控告警指南
服务器性能监控和告警设置
服务器监控能帮助您及时发现问题,确保服务稳定运行。
控制面板监控
实时监控
控制面板提供以下实时监控数据:
- CPU使用率:当前CPU负载情况
- 内存使用:RAM使用量和可用量
- 磁盘使用:存储空间使用情况
- 网络流量:入站和出站流量统计
历史数据
- 24小时趋势图:查看近24小时性能趋势
- 7天统计:一周内的资源使用情况
- 月度报告:每月资源使用汇总
系统监控命令
CPU监控
# 查看CPU使用率
top
htop
# 查看CPU详细信息
cat /proc/cpuinfo
# 查看系统负载
uptime
w
内存监控
# 查看内存使用情况
free -h
# 详细内存信息
cat /proc/meminfo
# 查看进程内存使用
ps aux --sort=-%mem | head
磁盘监控
# 查看磁盘使用情况
df -h
# 查看目录大小
du -sh /var/log
du -sh /home/*
# 查看磁盘I/O
iostat -x 1
网络监控
# 查看网络连接
netstat -tuln
ss -tuln
# 查看网络流量
iftop
nethogs
# 查看网络统计
cat /proc/net/dev
安装监控工具
安装htop
# Ubuntu/Debian
apt install htop
# CentOS/AlmaLinux
yum install htop
安装iotop
# Ubuntu/Debian
apt install iotop
# CentOS/AlmaLinux
yum install iotop
安装网络监控工具
# Ubuntu/Debian
apt install iftop nethogs
# CentOS/AlmaLinux
yum install iftop nethogs
日志监控
系统日志
# 查看系统日志
tail -f /var/log/syslog
# 查看内核日志
dmesg | tail
# 查看认证日志
tail -f /var/log/auth.log
Web服务器日志
# Apache访问日志
tail -f /var/log/apache2/access.log
# Apache错误日志
tail -f /var/log/apache2/error.log
# Nginx访问日志
tail -f /var/log/nginx/access.log
# Nginx错误日志
tail -f /var/log/nginx/error.log
数据库日志
# MySQL错误日志
tail -f /var/log/mysql/error.log
# MySQL慢查询日志
tail -f /var/log/mysql/slow.log
设置告警
创建监控脚本
#!/bin/bash
# monitor.sh
# 设置阈值
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=90
# 获取当前使用率
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
MEM_USAGE=$(free | grep Mem | awk '{printf("%.0f", $3/$2 * 100.0)}')
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | cut -d'%' -f1)
# 检查CPU使用率
if [ ${CPU_USAGE%.*} -gt $CPU_THRESHOLD ]; then
echo "WARNING: CPU usage is ${CPU_USAGE}%"
fi
# 检查内存使用率
if [ $MEM_USAGE -gt $MEM_THRESHOLD ]; then
echo "WARNING: Memory usage is ${MEM_USAGE}%"
fi
# 检查磁盘使用率
if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
echo "WARNING: Disk usage is ${DISK_USAGE}%"
fi
邮件告警
#!/bin/bash
# email_alert.sh
RECIPIENT="admin@example.com"
SUBJECT="Server Alert"
# 检查服务状态
if ! systemctl is-active --quiet apache2; then
echo "Apache service is down" | mail -s "$SUBJECT" $RECIPIENT
fi
if ! systemctl is-active --quiet mysql; then
echo "MySQL service is down" | mail -s "$SUBJECT" $RECIPIENT
fi
设置定时检查
# 编辑crontab
crontab -e
# 每5分钟检查一次
*/5 * * * * /root/monitor.sh
# 每小时发送状态报告
0 * * * * /root/status_report.sh
性能优化建议
CPU优化
- 识别高CPU使用的进程
- 优化应用程序代码
- 考虑升级CPU配置
内存优化
# 清理缓存
echo 3 > /proc/sys/vm/drop_caches
# 调整swap使用
echo 'vm.swappiness=10' >> /etc/sysctl.conf
磁盘优化
# 清理日志文件
find /var/log -name "*.log" -mtime +30 -delete
# 清理临时文件
rm -rf /tmp/*
第三方监控服务
推荐监控服务
- Zabbix:开源企业级监控
- Nagios:经典监控解决方案
- Prometheus + Grafana:现代监控栈
云监控服务
- 阿里云监控
- 腾讯云监控
- AWS CloudWatch
故障排查
高CPU使用率
- 使用
top或htop找到占用CPU的进程 - 检查进程是否正常
- 考虑重启或优化应用
内存不足
- 检查内存使用情况
- 识别内存泄漏的应用
- 增加swap空间或升级内存
磁盘空间不足
- 找到占用空间最大的目录
- 清理不必要的文件
- 考虑扩容或添加存储