跳到正文
Elaine Blog
返回

微服务日志采集与检索

Elasticsearch 与搜索架构

日志平台的目标是让工程师按服务、时间、级别和 Trace 快速定位问题,同时控制敏感数据、成本与访问权限。先统一结构化日志,再选择 Elastic Agent 直送或经 Logstash 转换。

Table of contents

Open Table of contents

一条可治理的链路

Java JSON 日志 → 文件/stdout → Elastic Agent → 可选 Logstash → 数据流 → Kibana

Elastic Agent 负责采集与集成管理;需要复杂解析、富化或多目标路由时加入 Logstash。每增加一层都要配置持久队列、背压、重试和监控。参考 Elastic Agent 到 Logstash 的官方链路核对当前配置。

字段尽量遵循 ECS(Elastic Common Schema,Elastic 通用字段规范),至少包含 @timestampservice.namelog.levelmessagetrace.id、环境和版本。时间使用 UTC 与明确精度,异常保留类型、消息和堆栈,但限制超大字段。

敏感信息在采集前处理

密码、令牌、Cookie、身份证和完整请求体不应进入日志。优先在应用日志封装层使用字段白名单,再在采集管道做第二层脱敏。运行实验:

mvn -Dtest=SearchArchitectureTest#logsKeepKnownFieldsAndRedactSecrets test

LogSanitizer.java下载只保留已知字段,并把 token/password 替换为 [REDACTED]。生产规则还要覆盖嵌套 JSON、URL 参数和多行异常,并用泄漏样本回归测试。

权限、保留与成本

按环境、团队和数据敏感级别拆分数据流与角色。开发者默认只能读本团队生产日志,安全审计日志使用更严格权限和更长保留。Kibana Saved Objects 的共享权限不能代替索引级授权。

ILM 按日志价值设置热、冷与删除阶段。监控采集延迟、丢弃量、解析失败、最老未发送事件、索引速率和磁盘水位。故障时应用不能因日志后端不可用而阻塞主业务,应在本地设置有界缓冲与丢弃策略,并对丢弃计数告警。

下一步

你已经完成“Elasticsearch 与搜索架构”章节。运行全部搜索架构实验室下载测试,再回到Java 架构师学习路线复盘搜索的索引、查询、同步和运维边界。下一章将进入 Spring Boot 与微服务。


分享这篇文章:

上一篇
MySQL 到 Elasticsearch 的一致性
下一篇
怎样把模型用进应用:能力、显存、速度、成本与可靠性