摘要:博客突然打不开,监控却一声不响——因为监控只盯着「机器」,没盯着「服务」。这篇完整复盘一次全链路排错:从 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

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

被折叠的 条评论
为什么被折叠?



