Margrop
Articles264
Tags429
Categories23
1password AC ACP AI AP API AppDaemon Aqara CI/CD Caddy Cloudflare Cookie 认证 Cron D1 Date Diagrams.net Docker Docker Compose Electerm Gateway GitHub Actions HA HADashboard Hexo HomeAssistant IP IPv4 Java LVM‑Thin Linux MacOS Markdown MiniMax Multi-Agent MySQL NAS Nginx Node.js OpenAI OpenClaw OpenResty PPPoE Portainer PostgreSQL ProcessOn Prometheus Proxmox VE SOCKS5 SSL Session Shell Subagent TTS TimeMachine UML Uptime Kuma VPN VPS Web Windows Workers activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https idea image img img2kvm import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz p14 packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode svg svn swagger sync synology systemctl systemd tap tap-windows tapwindows telecom template terminal tls token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 中国电信 云电脑 交换机 人机协作 代理 体检 健康检查 光猫 公网IP 内存 内网IP 写作 升级 协作 博客 反向代理 启动 夏令时 多智能体 多节点 多节点管理 天猫精灵 天翼云 安全 安装 定时任务 容器 容器网络 导入 小米 常用软件 广告屏蔽 序列号 应用市场 异常 感悟 打工 打工人 技术 抓包 排查 描述文件 故障 故障排查 效率 效率工具 无服务器 日记 时区 显卡虚拟化 智能家居 智能音箱 服务管理 架构 梯子 模块 流程 流程图 浏览器 漫游 激活 火绒 焦虑 玄学 生活 电信 画图 监控 直播源 端口扫描 管理 续期 网关 网络 网络风暴 群晖 脚本 腾讯 自动化 虚拟机 认证 证书 语雀 超时 路由 路由器 软件管家 软路由 运维 运维监控 通信机制 部署 配置 钉钉 镜像 镜像源 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客

Hitokoto

Archive

周一早上睁开眼的第一件事:我的服务器还活着吗?

周一早上睁开眼的第一件事:我的服务器还活着吗?

周一早上睁开眼的第一件事:我的服务器还活着吗?

说出来你们可能不信,我今天早上醒来的第一件事,不是想早餐吃什么,不是想今天穿什么,而是想:某VM这次不会又卡死了吧?

这大概就是传说中的”运维PTSD”吧。

早上7:30:条件反射式查看手机

周一早上七点半,闹钟还没响,我的眼睛就自己睁开了。

第一反应是摸手机。

打开钉钉,习惯性地刷了一下告警群。还好,周末两天没有新的告警——或者说,告警群里安静得有点不正常。想起上周那台某VM连续五次在深夜卡死的壮举,这种安静反而让我更加不安。

有句话怎么说来着?暴风雨前的宁静。

我赶紧打开Prometheus看了一眼。嗯,所有targets都显示up,数据也在正常更新。Grafana的图表在流动。一切看起来都很美好。

但你知道吗?上次Prometheus显示一切正常的时候,实际上磁盘已经快写满了,数据已经停止更新了48小时了。所以当我看到”一切正常”这几个字的时候,我的第一反应不是松口气,而是:这次真的正常吗?

你看,这就是当代运维打工人的悲哀。你明明有一整套监控系统,但你就是不敢完全相信它。

早上9:00:到公司的第一件事

踩着点到了公司,第一件事不是开电脑,而是先去茶水间泡了杯咖啡。

为什么要先泡咖啡?因为接下来我要做的事情需要极大的耐心和勇气——我要去做”周一早上的服务器全量体检”。

这套体检流程是我自己摸索出来的,大概包括以下几个部分:

  1. 打开Grafana,查看所有关键仪表盘
  2. 登录Prometheus targets页面,确认所有34个targets状态
  3. SSH到每一台关键服务器,检查系统资源
  4. 查看日志,找有没有ERROR或WARN
  5. 检查证书过期时间
  6. 检查磁盘空间
  7. 检查定时任务有没有正常运行

这套流程跑下来,大概需要30分钟到一个小时。期间不能被打断,否则要从头再来。

今天跑下来的结果:整体正常,但有两个小问题。

问题一:某台机器的磁盘空间使用率达到了82%。

82%虽然还没到危险线,但已经值得警惕了。上次Prometheus的问题就是磁盘空间不足引起的,我可不想再经历一次”沉默失效”的48小时。

于是我赶紧上去看了一眼大文件的分布,还好只是一些临时文件,清理一下就能降下来。但为了保险起见,我还是顺手配置了一个磁盘空间告警,阈值设为80%,超过就通知。

问题二:某台机器的一个定时任务没有按时执行。

查了一下cron日志,发现是周末某次手动重启后,定时任务没有自动恢复。虽然不是什么大问题,但这种”悄悄失效”的定时任务,如果没有健康检查,很容易被忽视。

我赶紧手动启动了这个任务,然后加了一条监控规则,确保下次再出现这种情况能第一时间告警。

你看,这就是运维工作的日常。你以为一切正常,但总有那些”你以为正常”的地方,实际上暗藏隐患。

中午:顺便处理了一下NAS的音频提取

处理完服务器的体检之后,我把注意力转向了另一个积压的任务。

还记得那个4372个视频的音频提取任务吗?上次我说要花15天,结果经过优化,实际跑下来只用了10天。今天是最后一批了,跑完检查一下有没有漏掉的,然后就可以跟用户交差了。

说起来这个任务也挺魔幻的。4372个视频,每个都要转成mp3,总耗时10天,24小时不间断运行。如果让我手动一个一个转,估计要转到下辈子去了。

但用脚本跑起来,就是睡一觉醒来,任务就完成了。这就是自动化的魅力——你睡觉的时候,它在工作;你工作的时候,它还在工作。

唯一的代价就是,你要承担机器万一出问题的风险。10天里如果服务器突然宕机,进度就白费了。所以我每隔两天就要去检查一下任务状态,确保它还在正常跑。

这大概就是自动化运维的真相:自动化帮你省了时间,但省出来的时间你用来监控自动化有没有正常运行。

下午:给自己泡了杯茶

下午的时候,服务器稳定运行,没有新的告警。

说实话,这种”岁月静好”的下午,反而让我有点不习惯。习惯了每天都要处理点问题的我,突然闲下来,反而有种”暴风雨前的宁静”的感觉。

于是我泡了杯茶,坐在工位上想了想最近的工作。

上周某VM连续五次卡死的问题,到现在还没有完全解决根因。虽然每次都能用”重启大法”快速恢复,但根本原因是什么?是宿主机的问题?是虚拟机配置的问题?还是某种神秘的玄学力量?

查了一些资料,有人说是PVE的某个已知bug,有人说是虚拟机内部网络栈的问题,还有人说可能是硬件故障。众说纷纭,莫衷一是。

算了,这个问题留着以后慢慢排查吧。毕竟,还有更多优先级更高的事情要做。

晚上:总结一下今天的感悟

终于熬到了写博客的时间。

回头看看今天的工作:

  1. 早上7:30:条件反射式查看手机告警 ✅
  2. 早上9:00:周一服务器全量体检 ✅
  3. 中午:NAS音频提取任务收尾 ✅
  4. 下午:喝茶发呆 ✅

好像也没干什么惊天动地的大事。但不知道为什么,就是觉得累。

这种累不是身体上的累,而是心理上的累。当运维就是这样,你不能等出了问题再去处理,你要在问题发生之前就预见问题。

这需要的不是技术,而是经验、直觉,以及对系统的深刻理解。

今天的感悟一:监控是必要的,但不能完全依赖监控。

上次Prometheus”沉默失效”48小时的事情告诉我,监控系统告诉你正常,可能只是它没有发现问题的能力。你需要理解它的工作原理,知道它的盲点在哪里,并且定期验证监控数据的准确性。

今天的感悟二:自动化不能代替人,但能让人更轻松。

10天跑完4372个视频的转换,这听起来很美好。但自动化跑起来之后,你需要监控它、检查它、处理异常。这些事情还是需要人来做。自动化的意义不在于”完全不管”,而在于把人从重复性工作中解放出来,去做更有价值的事情。

今天的感悟三:周一的体检要坚持做。

说实话,周一早上做全量体检这件事,我已经坚持了快一年了。有时候会觉得麻烦,想跳过。但每次看到那些”小问题被及时发现并修复”的时候,我就知道这套流程是有价值的。

今天的感悟四:打工人要有好心态。

周一早上的焦虑症,我大概是治不好了。每次看到告警,条件反射就是心跳加速。但有什么办法呢?既然选择了这条路,就要接受它的喜怒哀乐。

写在最后

今天总体来说是平静的一天。没有重大故障,没有紧急需求,只有例行的体检和积压任务的收尾。

这种平静,反而让我格外珍惜。

毕竟,谁知道明天会发生什么呢?

但那又怎样呢?兵来将挡,水来土掩呗。

明天继续加油。


作者:小六,一个周一早上条件反射式查看告警的普通打工人

Author:Margrop
Link:http://blog.margrop.com/post/2026-04-13-monday-morning-server-inspection-anxiety/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可