综合分诊:支付 API 故障
目标
按层次缩小三种缺陷重叠的障碍,确定原因,进行修复,并留下固定的格式后的报告。一次性写下本课程中学到的所有工具。
为什么重要
实际障碍往往不是一个原因造成的。如果修复一个,然后说“没好转”,改变方向的话,甚至会怀疑已经修复的东西。所以最好把每个层都检查到最后,把发现的东西都写下来,这样最终会更快。然后修复后,要用重现失败的那个命令确认成功才能结束措施。
阶段
bash /opt/fixtures/nt-triage/start-incident.sh再现障碍情况,/opt/fixtures/nt-triage/incident.md请阅读。/root/triage请创建目录。- 用自己的接口IP进行3次ping的结果
/root/triage/l3.txt请保存。损失率必须为0%。 - 分别按自己的接口IP的9101和9102端口,查看结果
/root/triage/l4.txt请用两行写下来。9101=<open|refused|timeout>/9102=<open|refused|timeout> pay-api.labhub.local确认的名称解释结果,/root/triage/name.txt请用两行写下来。RESOLVED=<getent 가 돌려준 IP>/SOURCE=<그 값이 적혀 있는 파일의 절대 경로>- 确认9101服务的监听地址
/root/triage/bind.txt请在一行中写下。BIND=<리슨 주소:포트>是形式。(例如:BIND=127.0.0.1:9101) - 到可接近的一边(9102)
/ok请求状态代码/root/triage/http.txt在code=<코드>请写在一行。 - 请把两个都修好。
/etc/hosts的pay-api.labhub.local请将项目调整为本服务器的实际接口IP。- 9101服务
0.0.0.0请重新打开以听。(现有进程已结束) 还有curl -s http://pay-api.labhub.local:9101/ok确认成功后输出/root/triage/fixed.txt请保存为。
/root/triage/report.txt请用以下6行组成。SYMPTOM=remote-timeout/LAYER1=name/LAYER2=bind/CAUSE_NAME=<원래 hosts 에 적혀 있던 잘못된 IP>/CAUSE_BIND=127.0.0.1/FIXED=yes
参考
- 再次启动服务时
pkill -f 'server.py 9101'先整理一下,nohup python3 /opt/fixtures/nt-http/server.py 9101 0.0.0.0 &上传到。 - 名字解释结果是
getent hosts,实际听力地址是ss -ltnp确认为。 - 常见的错误1:在第3次尝试回环测试时,如果两个端口都显示为open。一定要用接口IP。
- 常见的错误2:在7号中只修复hosts,保持绑定不变的话仍然失败。原因有两个。
再现障碍情况
bash /opt/fixtures/nt-triage/start-incident.sh再现障碍情况,/opt/fixtures/nt-triage/incident.md请阅读。/root/triage请创建目录。
执行图片的开始脚本就会产生情况。请一起阅读报告书。
确认L3到达性
用自己的接口IP进行3次ping的结果/root/triage/l3.txt请保存。损失率必须为0%。
不是名字,而是要用IP来确认,这样就不会和名字问题混淆。请使用自己的接口地址。
按端口判断结果
分别按自己的接口IP的9101和9102端口,查看结果/root/triage/l4.txt请用两行写下来。
9101=<open|refused|timeout>/9102=<open|refused|timeout>
两个端口的结果不同。请准确区分refused、timeout和open。
姓名解释问题特定
pay-api.labhub.local确认的名称解释结果,/root/triage/name.txt请用两行写下来。
RESOLVED=<getent 가 돌려준 IP>/SOURCE=<그 값이 적혀 있는 파일의 절대 경로>
请比较getent返回的IP和这个服务器实际的IP。还要找到那个值写在哪里。
特定绑定问题
确认9101服务的监听地址/root/triage/bind.txt请在一行中写下。BIND=<리슨 주소:포트>是形式。(例如:BIND=127.0.0.1:9101)
ss输出中的Local Address列是答案。请指出哪个服务有问题。
应用程序层次确认
到可接近的一边(9102)/ok请求状态代码/root/triage/http.txt在code=<코드>请写在一行。
请先确认可接近的方向,以证明服务本身正常。
修改和验证
请把两个都修好。
/etc/hosts的pay-api.labhub.local请将项目调整为本服务器的实际接口IP。- 9101服务
0.0.0.0请重新打开以听。(现有进程已结束) 还有curl -s http://pay-api.labhub.local:9101/ok确认成功后输出/root/triage/fixed.txt请保存为。
必须同时修改两个。修改后,请务必再次确认外部地址。
事后报告
/root/triage/report.txt请用以下6行组成。
SYMPTOM=remote-timeout/LAYER1=name/LAYER2=bind/CAUSE_NAME=<원래 hosts 에 적혀 있던 잘못된 IP>/CAUSE_BIND=127.0.0.1/FIXED=yes
格式已经确定。每个值都必须是在前一步实际确认的。