1. 概览:分层思路与准备工作
1) 明确分层:基础设施->操作系统->网络->中间件->应用->外部依赖。
2) 准备工具:Prometheus+node_exporter、Grafana、Filebeat/Fluentd、tcpdump、mtr/traceroute、ss/netstat、iostat/top。
3) 权限与出口:确保有云控制台与主机root/sudo权限,开启防火墙/安全组以允许抓包与监控端口。
2. 关键基础指标(必须采集)
1) 主机:CPU负载(1/5/15m)、CPU使用率、iowait、内存使用与swap、磁盘利用与延迟。
2) 网络:带宽吞吐(in/out)、丢包率、RTT、中间路由延迟、TCP重传。
3) 应用:响应时间(p50/p95/p99)、并发连接数、错误率(4xx/5xx)、请求量QPS。
4) 数据库:慢查询数、连接数、锁等待、IOPS与延迟。
3. 指标采集配置实操(步骤)
1) 部署Prometheus node_exporter:sudo useradd -r -s /bin/false node_exporter;下载并运行。
2) 应用指标:在应用中添加Prometheus client(Go/Python/Java),暴露 /metrics。
3) 日志采集:Filebeat安装并配置output到Elasticsearch或Logstash,设定paths与multiline规则。
4) Grafana:导入社区仪表盘,配置Prometheus数据源并建立告警面板。
4. 指标可视化与告警设计(实操)
1) 面板:建立主机概览、网络概览、应用延迟、数据库健康四个仪表盘。
2) 告警阈值示例:CPU>80% 持续5分钟、iowait>20% 3分钟、磁盘延迟>20ms、丢包率>1%。
3) 告警通道:配置Grafana Alert或Prometheus Alertmanager,推送到Slack/邮件/钉钉并附采样日志与截图。
5. 第一次故障定位流程(一步步)
1) 收到告警:记录告警时间窗口并截图相关图表。
2) 先看高层:检查负载均衡/负载是否异常(请求暴增)、是否有部署变更。
3) 回溯指标:在时间窗口内查看CPU、iowait、网络吞吐、磁盘IO、数据库慢查询是否同步异常;标注异常开始时间。
6. 深入网络层排查命令与流程
1) latency/丢包:使用mtr -r -c 100 <目标IP> 分析路由路径与丢包点。
2) tcp问题:ss -tuna 或 netstat -anp 查看连接数、TIME_WAIT、重传。sudo tcpdump -i eth0 -w /tmp/cap.pcap host X and port Y 进行抓包。
3) 路由/运营商:若跨境访问慢,使用traceroute或查BGP路由,联系云厂商或本地ISP确认链路抖动。
7. 存储与IO问题定位实操
1) 查看磁盘延迟:iostat -x 1 5,关注 await、svctm 与 %util。
2) 进程级IO:iotop -ao 查看哪个进程占用IO。
3) 临时缓解:对磁盘热IO分流、增加缓存、调整数据库慢查询或临时扩容云盘类型(如升级到更高IOPS)。
8. 日志与追踪(Trace)用于根因分析
1) 日志收集:按时间窗口搜索关键日志(错误、超时、重试)。使用ELK/Kibana做时间线关联。
2) 分布式追踪:若有Jaeger/Zipkin,定位请求跨服务耗时热点。
3) 结合指标:找到“指标异常时间点”并定位对应trace id与日志条目。
9. 常见越南地域注意事项与优化建议
1) 区域选择:优先选择离用户近的可用区,避免跨国链路造成高RTT。
2) CDN与DNS:静态资源使用CDN,配置本地DNS缓存,减少DNS解析延迟。
3) 速率限制与重试:增加幂等重试策略、限流保护以避免级联故障。
10. 故障复盘与长期改进流程
1) 复盘报告:时间线、根因、短期缓解、长期修复、责任人、完成时限。
2) 自动化:将可复现检测写成Prometheus规则或脚本,减少人工判断。
3) 演练:定期做故障演练并更新Runbook。
11. 问:在越南云上遇到网络抖动,优先排查哪些点?
问题:网络抖动时优先排查哪些?
回答:按顺序排查:1) 本地实例网络指标(丢包、带宽饱和、错误接口);2) 路由与中转(mtr/traceroute定位丢包节点);3) 云厂商内部链路与公网出口(查看云控制台告警/维护通知);4) 应用层重试与连接数导致拥塞。用tcpdump与mtr定位后联系云运维。
12. 问:如何快速判断是磁盘IO还是数据库慢查询导致的服务慢?
问题:服务变慢时如何区分IO还是DB查询问题?
回答:同时查看iostat(await/IOPS/%util)和数据库慢查询(慢查询日志/慢查询计数),若系统层IO延迟显著升高且iotop定位到db进程高IO,说明为IO瓶颈;否则查看慢查询语句与索引使用,结合trace确定。
13. 问:没有监控时如何临时定位生产问题?
问题:新环境无监控怎排查?
回答:先登陆实例执行top/iostat/ss/netstat,抓包tcpdump若是网络问题;立即收集关键日志(应用/数据库),暂时开启简单Prometheus exporter或push metrics到临时监控,快速构建最小仪表盘并设置简单告警,随后补齐监控与报警链路。
来源:面向开发者的越南云服务器数据分析指标与故障定位策略