
Docker 的 Fluentd 日志驱动如何处理多行日志?
Docker fluentd 日志驱动本身按行切割堆栈等多行日志,需配 fluentd 的 concat 过滤器按模式合并(如 Java 堆栈以空白开头并入上行)。本文给出 fluentd 侧 concat 配置与容器标签方案。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

Docker fluentd 日志驱动本身按行切割堆栈等多行日志,需配 fluentd 的 concat 过滤器按模式合并(如 Java 堆栈以空白开头并入上行)。本文给出 fluentd 侧 concat 配置与容器标签方案。

日志结构化良好(JSON)或只需轻处理时 Filebeat 直连 ES 最简单;需要复杂解析、多路输出、聚合富化时加 Logstash 中间层。本文给出两种架构的适用场景与对比。

Filebeat 擅长文件日志采集(offset 跟踪、背压、ES 生态),rsyslog 擅长 syslog 协议与系统日志转发(性能极高、系统原生)。本文对比两者并给出选型建议。

list.index(x) 返回元素首次出现的索引,找不到抛 ValueError;找全部匹配用 enumerate 列表推导;NumPy 数组用 np.where。本文给出各场景写法与安全用法。

Fluent Bit 用 json parser 解析日志行,嵌套对象用 Nest 过滤器的 Operation lift 提升到顶层;输出到 ES 后字段即结构化可检索。本文给出 parser 与 nest 过滤器的完整配置。

该提示表示 Fluentd 读取日志文件失败,文件被暂时跳过。常见原因:权限不足、文件损坏、轮转冲突、路径通配符问题。本文给出逐项排查与修复方法。

Fluentd 的 out_file 通过 time slice 按时间切片输出(如 path /var/log/agg/app.%Y%m%d.log)自然实现按天轮转;配合 buffer timekey 控制粒度。

random.randint(x, y) 生成含两端点的随机整数;random.randrange(x, y+1) 等效;secrets.randbelow 用于安全场景。本文给出各写法与区间开闭差异。

Gunicorn 访问日志默认类似 Apache combined 格式,用 --access-logformat 自定义:%(h)s 客户端 IP、%(r)s 请求行、%(s)s 状态码、%(D)s 响应微秒等。

HAProxy 无日志通常是三处断点:HAProxy 配置的 log 指令、rsyslog 未启用 UDP 514 监听、或 chroot 导致 /dev/log 不可达。本文给出完整排查链路与配置示例。

容器化 Nginx 把日志输出到标准流:access_log /dev/stdout 与 error_log /dev/stderr;官方镜像用软链接 /var/log/nginx/access.log → /dev/stdout …

Graylog 按级别检索:搜索栏写 level:3(数值 severity)或 level:ERROR(视字段映射);数值越小越严重(0=emerg 到 7=debug)。本文给出查询语法与级别对照表。