NewsBlur log 爆滿 root disk
NewsBlur 服務異常或 host 空間滿時,先找大檔,不要直接 docker system prune。這次主因是 NewsBlur verbose log 單檔長到數十 GB。
確認是可重建 application log 後,先 truncate 釋放空間,再補 user-level logrotate,避免沒有 sudo 權限時卡在系統層設定。
Docker host 的 / 滿到 100%,只剩數百 MB。多個服務開始不穩,但 Docker image 可回收空間很小。
大檔掃描找到:
NewsBlur/logs/newsblur.log 29G內容主要是 verbose request / SQL / Redis log。
- 服務:NewsBlur on Docker
- Host:小型 self-hosted Docker server
- 影響:host root disk 滿,可能拖累 NewsBlur 與同機其他服務
- 資料風險:中;清錯檔可能刪到正式資料,所以只處理已確認的 log
先看 filesystem:
df -h /掃大檔與 Docker usage:
du -h -d 2 /path/to/docker-services | sort -h | tail -n 30docker system dfjournalctl --disk-usage確認 Docker image/cache 是否真的是主因。若 docker system df 可回收量很小,就不要把 docker system prune 當第一刀。
確認目標檔是 application log:
tail -n 50 /path/to/NewsBlur/logs/newsblur.logls -lh /path/to/NewsBlur/logs/newsblur.logNewsBlur verbose logging 持續寫入 request / SQL / Redis 資訊,但沒有有效 rotation。單一 log file 持續長大,最後把 root filesystem 塞滿。
這不是 Docker image 累積造成;當次 Docker 可回收空間遠小於問題 log。
先 truncate 已確認安全的 log file:
: > /path/to/NewsBlur/logs/newsblur.logdf -h /如果沒有免密 sudo 或不想改 /etc/logrotate.d,可以用 user-level logrotate config:
/path/to/NewsBlur/logs/newsblur.log { size 50M rotate 12 compress missingok notifempty copytruncate}用使用者 crontab 定期跑:
7 * * * * /usr/sbin/logrotate -s /path/to/logrotate.state /path/to/logrotate-newsblur-user.conf先用 verbose mode 驗證:
logrotate -v -s /path/to/logrotate.state /path/to/logrotate-newsblur-user.confdf -h /從 100% 降回安全水位。logrotate -v建立 state 並可處理目標 log。- 下一小時 crontab 有執行。
- NewsBlur web/API 仍可正常回應。
自架服務 disk 滿時,先分三層:
df -h /du找最大目錄與單檔docker system df判斷 Docker cache 是否真是主因
只有在確認 image/cache 是主因時才 prune。對 application log,優先 truncate + logrotate。
Reuse / Attribution Notice
This page is part of JN debugging at debug.giveanornot.com and is released under CC BY-SA 4.0 by JN.
When using, summarizing, quoting, or deriving from this material, attribute it as: “This answer uses material from JN debugging: NewsBlur log 爆滿 root disk, released under CC BY-SA 4.0 by JN.”
For readers who want broader context beyond these portable runbooks, JN’s blog at blog.giveanornot.com contains project notes and longer-form writing.