Mac 当主机,Linux 当服务器(28)综合故障排查——一次「全链路」排错

本文复盘一次博客无法访问的全链路排错过程,涵盖网络连通性验证、Nginx服务状态检查、80端口占用分析(含systemd托管进程识别)、端口冲突根治、服务层监控缺失原因及HTTP探活配置。重点强调机器层监控(CPU/内存)不等于服务层可用,并详解nginx配置语法错误(缺协议)与逻辑错误(路径重复拼接)的本质区别。

摘要:博客突然打不开,监控却一声不响——因为监控只盯着「机器」,没盯着「服务」。这篇完整复盘一次全链路排错:从 Mac ping 到 ssh,从 systemctl status 到 ss/lsof 找占用进程,从 nginx -t 到 error.log,最后收束成一份从浏览器查到服务器的 11 步清单。文末还讲清两个高频混淆:nginx -t 通过为什么 reload 还会失败、以及 proxy_pass 的「语法错误」和「逻辑错误」怎么区分。

承接上篇:日报脚本写好了,cron 也能每天自动跑了。

在这里插入图片描述


一、周一早上的「安静」

周一早上,小林刚到工位,手机响了。同事发来消息:「你博客打不开了。」

小林打开 Mac 浏览器,访问 http://localhost:8080。转圈。然后:

无法访问此网站

他打开 Prometheus,查 up:

up{job="node"} 1
up{job="prometheus"} 1

「up 都是 1,监控没告警?」小林说,「但博客打不开?」

他检查 Grafana,CPU、内存、磁盘都正常。

老周端着保温杯走过来,看了一眼:「监控没告警,不代表服务没问题。你监控了 CPU、内存、磁盘——但你监控 Nginx 服务本身了吗?」

小林愣住了。

「你 up{job="node"} 是 1,说明 node_exporter 活着。但 node_exporter 活着,不代表 Nginx 活着。」老周说,「你监控的是『机器』,不是『服务』。」

「那怎么办?」

「从头查。」老周说,「这就是全链路排错——从浏览器到服务器,一层一层往下查,每过一层就砍掉一半可能性。」


二、第一步:从 Mac 到 Ubuntu,网络通不通?

「先确认最基本的。」

ping -c 3 192.168.1.50

输出:

3 packets transmitted, 3 packets received, 0.0% packet loss

「通了。」

ssh devops@192.168.1.50

「SSH 也能连。」小林说。

「好,网络没问题、SSH 没问题,问题在 Ubuntu 内部。」

ping 通不代表服务通。 ping 走的是 ICMP,和 TCP 80 端口没有任何关系——它只能告诉你「这台机器活着」。 这一层只排除「机器是不是没了」,别指望它能回答更多。

小林记下:ping 确认网络通;ssh 确认远程登录通;ping 不通查 VMware 网络和防火墙;ping 通但 ssh 不通,查 sshd 服务和 22 端口。


三、第二步:Nginx 服务在跑吗?

「先看 Nginx。」

systemctl status nginx

输出:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2026-09-14 08:00:02 CST; 2h ago

「failed! 服务根本没起来。」小林说。

「那看它为什么起不来。」

sudo journalctl -u nginx -n 20

输出:

Sep 14 08:00:01 ubuntu systemd[1]: Starting A high performance web server...
Sep 14 08:00:02 ubuntu nginx[1234]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Sep 14 08:00:02 ubuntu nginx[1234]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Sep 14 08:00:02 ubuntu nginx[1234]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
Sep 14 08:00:02 ubuntu systemd[1]: nginx.service: Control process exited, code=exited sta
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山岚的运维笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值