监控告警指南

服务器性能监控和告警设置

服务器监控能帮助您及时发现问题,确保服务稳定运行。

控制面板监控

实时监控

控制面板提供以下实时监控数据:

  • 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使用率

  1. 使用tophtop找到占用CPU的进程
  2. 检查进程是否正常
  3. 考虑重启或优化应用

内存不足

  1. 检查内存使用情况
  2. 识别内存泄漏的应用
  3. 增加swap空间或升级内存

磁盘空间不足

  1. 找到占用空间最大的目录
  2. 清理不必要的文件
  3. 考虑扩容或添加存储