1) 在阿里云控制台启用云监控(CloudMonitor)与日志服务(Log Service, SLS)。
2) 在SLS中新建Project与Logstore,安装并配置Logtail:下载Logtail安装包并执行 sh install.sh;编辑 /etc/logtail/config.d/ 增加采集规则(比如 /var/log/nginx/*.log、/var/log/messages)。
3) 在CloudMonitor中为实例关联监控项(CPU、内存、网卡、磁盘IO、网络连接数、进程数等),并针对关键指标创建告警策略(阈值、持续时间、通知方式)。
1) CPU:短时突增>80%或5分钟均值持续高于70%为异常信号;命令 top -b -n1 | head -20。
2) 内存/Swap:free -m 查看到可用内存急降且swap使用增加,top 或 vmstat 观察swap in/out。
3) 磁盘:df -h 查看使用率>85%、iostat -xz 1 3 查看avgqu-sz与await上升提示IO瓶颈。
4) 网络:CloudMonitor流量突增、连接数暴增(ss -s 或 ss -tunap | wc -l),以及丢包/延迟异常。
1) 在SLS使用Query:* | select count(*) as c by status | sort -c c desc 以统计HTTP状态码。
2) 常用关键词:ERROR、WARN、timeout、slow、502、504、connection refused、OOM、segfault。示例:grep -iE "error|timeout|segfault" /var/log/nginx/error.log | tail -n 200。
3) 从慢日志入手:nginx access.log 筛选响应时间>1s:awk '$NF>1{print $0}' access.log | awk '{print $1,$7,$9,$NF}'。
1) 时间线对齐:先在CloudMonitor找到异常时间点,再在SLS按时间区间搜索日志,确保时间同步(注意时区HK为Asia/Hong_Kong)。
2) 进程与端口检查:ps aux | grep
3) 内核/系统错误:dmesg | tail -n 200 检查OOM或硬盘错误;journalctl -u
4) 网络层抓包:tcpdump -i eth0 port 80 and host
1) 区域网络波动:检查阿里云网络告警、路由表与EIP状态;使用mtr/traceroute排查到目标的延迟和丢包。
2) 出口限流或带宽峰值:CloudMonitor查看 outbound 带宽,若接近带宽上限则考虑扩容或流量清洗。
3) 法规或链路中断:确认是否有运营商故障公告或BGP路由变动;联系阿里云支持并提供时间线与抓包证据。
1) 临时缓解:重启高内存/高CPU的应用进程、扩大实例规格或开启Auto Scaling、清理磁盘空间(删缓存/日志归档)。
2) 长期防护:完善告警策略(多级告警+抖动周期)、接入APM/链路追踪(ARMS),设置Logtail规则与难查事件的自定义日志字段。
3) 演练与文档:建立Runbook(包含常见问题的命令与恢复步骤),定期演练并保留事故复盘记录。
问:如何在日志里快速定位是否为应用异常导致的502/504?
答:先在SLS按时间窗口统计502/504的频率(* | select count() by status),再在同一时间段查看nginx error.log与后端应用日志(grep 502/504 时间段),结合后端服务响应时间(access.log中的响应时间字段)和后端进程状态(ss、ps)判断是后端超时、连接重置还是负载过高导致。
问:如果发现磁盘IO高但CPU低,下一步怎么做?
答:使用 iostat -xz 1 3 看具体设备的await和svctm,排查是否为单盘瓶颈;查看dmesg是否有磁盘错误;检查是否有大量小文件IO(iotop 或 pidstat -d),如有考虑优化IO策略、使用更高性能云盘或增加缓存。
问:阿里云香港实例遇到短时网络抖动,如何证明是云平台链路问题?
答:收集凭证:CloudMonitor网络抖动告警时间点、mtr/traceroute 到目标的丢包与跳点信息、tcpdump 抓包显示重传/握手失败,同时与同区域其它实例对比(是否普遍存在),将这些时间线与抓包提交给阿里云工单支持请求BGP/机房链路排查。
