日志平台的目标是让工程师按服务、时间、级别和 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 通用字段规范),至少包含 @timestamp、service.name、log.level、message、trace.id、环境和版本。时间使用 UTC 与明确精度,异常保留类型、消息和堆栈,但限制超大字段。
敏感信息在采集前处理
密码、令牌、Cookie、身份证和完整请求体不应进入日志。优先在应用日志封装层使用字段白名单,再在采集管道做第二层脱敏。运行实验:
mvn -Dtest=SearchArchitectureTest#logsKeepKnownFieldsAndRedactSecrets test
LogSanitizer.java下载只保留已知字段,并把 token/password 替换为 [REDACTED]。生产规则还要覆盖嵌套 JSON、URL 参数和多行异常,并用泄漏样本回归测试。
权限、保留与成本
按环境、团队和数据敏感级别拆分数据流与角色。开发者默认只能读本团队生产日志,安全审计日志使用更严格权限和更长保留。Kibana Saved Objects 的共享权限不能代替索引级授权。
ILM 按日志价值设置热、冷与删除阶段。监控采集延迟、丢弃量、解析失败、最老未发送事件、索引速率和磁盘水位。故障时应用不能因日志后端不可用而阻塞主业务,应在本地设置有界缓冲与丢弃策略,并对丢弃计数告警。
下一步
你已经完成“Elasticsearch 与搜索架构”章节。运行全部搜索架构实验室下载测试,再回到Java 架构师学习路线复盘搜索的索引、查询、同步和运维边界。下一章将进入 Spring Boot 与微服务。