0

0

Linux 容器日志收集与监控实践

舞姬之光

舞姬之光

发布时间:2026-02-22 17:05:03

|

286人浏览过

|

来源于php中文网

原创

容器日志默认输出到/var/lib/docker/containers//-json.log;docker logs查不到新日志主因是应用重定向日志、json日志轮转或容器重启导致文件丢失。

linux 容器日志收集与监控实践

容器日志默认输出到哪里?docker logs 为什么查不到新日志?

Docker 容器默认把 stdoutstderr 直接写入本地 JSON 文件(路径类似 /var/lib/docker/containers/<container-id>/<container-id>-json.log</container-id></container-id>),docker logs 就是读这个文件。但问题常出在:

  • 应用自己重定向了日志(比如写了 /var/log/app.log),那 docker logs 根本看不到
  • 日志轮转后旧文件被删,而 docker logs --since 只能查 JSON 日志的元数据时间,不保证文件还存在
  • 容器重启过,旧日志文件被清理(取决于 log-driver 配置)

实操建议:

  • 先确认应用是否真的往 stdout 输出:进容器执行 ls -l /proc/1/fd/{1,2},看是否指向 pipe:socket:,而不是文件
  • 查看当前日志驱动:docker inspect <container-id> | jq '.HostConfig.LogConfig.Type'</container-id>,默认是 json-file,但生产环境建议切到 syslogfluentd
  • 不要依赖 docker logs 做长期归档——它没压缩、没索引、不支持按字段过滤

怎么让容器日志自动发到 ELK 或 Loki?fluentdfilebeat 选哪个?

直接挂载宿主机日志目录再用 filebeat 采集,看似简单,但容易漏日志(容器启动/销毁瞬间)、权限错乱、路径硬编码。更稳的做法是让 Docker 自己把日志转发出去。

fluentd 适合已有 Ruby 生态或需要复杂过滤(比如动态提取 level 字段、改写 message);filebeat 更轻量、资源占用低、原生支持 docker 模块自动识别容器元数据(container.id, image 等)。

实操建议:

  • 给 Docker daemon 配 log-driver: "fluentd""filebeat"(需先启对应服务)
  • fluentd 配置里必须设 @id docker-logs 并启用 buffer,否则容器高频打日志时会丢
  • filebeat 的 docker.input 模块默认只读 json-file,如果用了 journald 驱动,得换用 journald 输入类型
  • 所有转发链路都要加 TLS 和重试:filebeat 到 Logstash、Logstash 到 ES/Loki,任何一环断开都可能丢日志

docker logs --tail 100 很慢?JSON 日志文件太大怎么优化?

docker logs --tail N 是从 JSON 日志文件末尾往前逐行扫描,不是随机读。文件超 1GB 后,哪怕只 tail 10 行也可能卡几秒——因为 Docker 要解析每行 JSON 的 timestamp 字段来倒序定位。

畅图
畅图

AI可视化工具

下载

根本原因有两个:

  • 日志没分级(所有 info/warn/error 混在一起),导致体积膨胀
  • JSON 日志没压缩,且 Docker 默认不轮转(max-sizemax-file 都是 10M/3 个,远不够)

实操建议:

  • 启动容器时强制限制日志大小:--log-opt max-size=50m --log-opt max-file=5
  • 如果用 json-file 驱动,加 --log-opt labels=env,service 把标签写进日志,方便后续过滤
  • 禁用日志时间戳(--log-opt tag="{{.ImageName}}/{{.Name}}"),避免重复记录时间——应用自己打的时间更准
  • 不要用 docker logs -f 在生产环境实时盯屏,它会持续 hold 文件句柄,影响 logrotate

Loki 查询慢、rate() 计算不准?容器日志的 label 设计很关键

Loki 不存日志内容,只存 label + 时间戳 + 流(stream)。查询性能和聚合准确度,几乎全靠 label 是否合理。常见坑是:

  • 所有容器共用一个 job="docker",导致 {job="docker"} 匹配几百万流,查 rate({job="docker"}[5m]) 直接 OOM
  • 用容器 ID 当 container label,每次重建就变,无法关联历史
  • 忘记加 namespacepod(K8s 场景),导致跨环境日志混在一起

实操建议:

  • Docker 场景下,label 至少包含:job(按业务域分,如 api, worker)、envprod/staging)、service(来自 --label service=auth-api
  • K8s 场景下,用 Promtail 的 kubernetes 插件自动注入 namespace, pod_name, container_name,别手动写死
  • 避免用高基数 label:比如 request_iduser_id,Loki 会为每个唯一值建索引,吃光内存

日志监控不是“通了就行”,label 结构、日志源头控制、转发链路容错——这三块没对齐,后面查问题永远慢半拍。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

443

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

322

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

371

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.10.25

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

194

2023.11.24

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

265

2023.07.24

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1030

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.5万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号