日志规范 ELK 日志检索架构

📅 2026/8/9 18:52:39
日志规范  ELK 日志检索架构
分布式微服务日志架构业务价值与痛点ELK 日志架构适用业务场景多实例微服务集群日志分散无需逐台服务器登录检索日志分布式报错、接口超时、营销短信 / 优惠券业务异常快速定位大促海量日志统一存储、检索、指标监控与告警结合链路追踪 TraceId 实现一次查询完整请求全链路日志统一脱敏手机号、身份证、密钥满足数据安全合规要求自动统计接口 QPS、异常频次生成可视化监控大盘无标准化日志与集中日志架构的线上问题日志分散多服务器故障排查效率极低日志格式杂乱无统一字段缺少 TraceId跨服务调用链路无法串联日志未分级调试日志淹没核心错误日志故障难以发现敏感信息明文输出存在数据泄露合规风险无统一检索统计能力故障只能等待用户反馈本地日志无限膨胀磁盘占满引发服务宕机原始非结构化日志无法做流量、慢接口、异常聚合分析生产环境标准化日志打印技术规范日志级别分级设计Logback/Log4j2TRACE细粒度调试日志生产永久关闭DEBUG开发调试中间参数仅测试环境启用INFO正常业务流转日志线上核心日志级别WARN可自动恢复非阻断异常如限流、重复请求ERROR阻断性业务 / 系统异常必须配置监控告警生产标准配置全局默认 INFO 级别故障模块仅保留 ERROR 输出禁止全量打印 DEBUG 日志。日志结构化必填字段设计每条日志统一携带结构化字段支撑 ES 过滤检索serviceName服务名、traceId全链路 ID、spanId片段 ID、userId/phone脱敏用户标识、level日志级别、thread线程名、ip客户端 / 服务 IP、url请求接口、cost接口耗时 ms、msg业务描述、stack异常堆栈仅 ERROR 输出敏感数据脱敏实现规范手机号掩码隐藏中间 4 位身份证关键数字脱敏展示验证码、数据库账号密码、AK/SK 密钥禁止明文打印技术实现方案基于 Logback 自定义全局脱敏转换器自动替换敏感内容业务代码无侵入改造日志打印编码开发约束禁止System.out原始输出统一使用日志对象打印使用占位符输出日志避免字符串拼接造成性能损耗捕获异常必须打印完整堆栈log.error(描述, e)不能仅输出简短异常信息高并发循环减少冗余 INFO 日志避免产生日志风暴批量大报文日志做长度截断防止单条日志过大拖累 ES 检索与存储业务自定义日志与框架底层日志配置独立 appender分开存储ELK 整套分布式日志采集架构原理ELK 完整讲解ELK Elasticsearch Logstash Kibana三款开源工具组合而成的集中式日志管理平台企业线上会再加 FileBeat 采集器完整架构叫 ELKB。微服务有十几台、几十台服务器每台机器都单独存日志。以前查线上 bug要一台台登录服务器敲命令翻日志极其麻烦。 ELK 就是一套日志收纳 清洗 搜索 看监控的工具箱把所有机器的日志全部收在一起网页上一键搜索、看报错、看流量。专业知识点讲解每个组件定义与核心职责LogstashL日志清洗管道三层固定流程Input 输入 → Filter 过滤清洗 → Output 输出Input接收各类日志来源FileBeat、Redis、文件Filter 核心grok 正则拆分日志字段、脱敏手机号、丢弃 DEBUG 垃圾日志、统一时间格式Output把处理干净的结构化日志写入 Elasticsearch按天自动分索引log-2026.08.09ElasticsearchE/ES日志存储 检索引擎底层依靠倒排索引海量日志毫秒级模糊、精准、多条件查询分布式集群分片 副本机制保证日志不丢失按天分索引方便清理过期日志释放磁盘支持聚合统计统计 QPS、ERROR 报错量、慢接口 TOP 排行KibanaK可视化 Web 控制台对接 ES提供网页检索界面可按 traceId、手机号、接口关键词查日志绘制监控大盘请求量折线、错误率图表配置钉钉告警ERROR 突增、磁盘占满、日志断流自动推送通知FileBeat企业必备补充组件轻量级采集工具部署在每台业务服务器实时抓取本地日志文件断点续传防止日志丢失统一推送给 Logstash隔离业务服务与日志集群。四个组件生活化比喻FileBeat 小区楼下快递分拣员每栋楼服务器门口蹲守实时收业主业务服务产生的包裹日志文件轻量不占地方不漏收包裹统一送到加工厂。Logstash 快递加工厂收到一堆乱糟糟的包裹原始杂乱日志统一拆开分拣 扔掉废纸垃圾DEBUG 调试日志、遮住隐私电话脱敏手机号、给每个包裹贴标签提取 traceId、接口耗时整理成统一格式再送进仓库。Elasticsearch (ES) 超大智能仓库专门存放整理好的包裹结构化日志自带超级智能检索目录倒排索引你搜任何关键词几秒就能找出对应日志仓库分货架按天分索引7 天前旧包裹定期清理不占地方。Kibana 仓库前台查询大厅网页可视化前台不用进仓库翻找输入手机号 / 报错 ID 就能查到所有包裹还能画曲线图看每天包裹数量接口 QPS包裹突然暴增 / 破损多大量 ERROR会自动发短信提醒运维。Redis大促额外缓冲 临时快递驿站双十一快递爆单大促海量日志加工厂处理不过来先放驿站排队防止仓库被挤爆。两种标准使用架构专业流程普通流量标准链路 业务服务打印本地日志 → FileBeat 采集 → Logstash 清洗 → Elasticsearch 存储 → Kibana 查询查看大促高并发缓冲链路营销短信 / 优惠券系统 业务日志 → FileBeat → Redis 缓冲队列削峰 → Logstash → ES → Kibana Redis 作用高峰期海量日志不会瞬间压垮 ES 集群。线上标准使用步骤开发 / 运维实操流程业务项目配置标准化日志每条日志携带 traceId、服务名、脱敏手机号、耗时等字段所有业务服务器部署 FileBeat监听项目生成的日志文件搭建 Logstash 集群编写清洗规则拆分字段、脱敏敏感信息、过滤调试日志部署 ES 集群存储日志设置只保留 7 天日志定时自动删除旧索引启动 Kibana创建检索面板、监控图表、异常告警规则线上报错时通过用户手机号 / SkyWalking 的 traceId在 Kibana 一键检索整条跨服务日志定位故障短信收不到验证码案例【通熟易懂】用户在 APP 点获取验证码短信服务打印一行带手机号、traceId 的日志存在服务器本地文件FileBeat 实时把这条日志抓取出来送到 Logstash 加工厂Logstash 把手机号中间 4 位打码提取 traceId、接口耗时删掉没用的调试文字整理干净的日志存入 ES 智能仓库打上今天的日期标签用户反馈收不到验证码运维打开 Kibana 网页输入用户手机号1 秒查出这条请求所有跨服务日志看到运营商渠道接口调用失败报错直接定位问题。ELK 完整采集检索流程图方案 1常规流量标准链路流程图方案 2大促高并发缓冲链路带 Redis 削峰流程图方案 3线上故障排查使用流程用户报错检索日志流程业务层项目打印携带 traceId、脱敏手机号的标准化日志落地本地文件采集层 FileBeat逐行监听日志断点续传不丢日志统一推送清洗服务清洗层 Logstash统一格式化、脱敏隐私数据、过滤冗余调试日志存储层 ES倒排索引存储按天分索引支持海量日志快速检索聚合可视化 Kibana日志查询、流量监控图表、异常钉钉告警、联动链路 TraceId 排错高并发新增 Redis日志峰值缓冲避免瞬时海量日志打垮 ES 集群ELK 两种生产部署链路架构标准采集链路常规平稳流量 业务本地日志 → FileBeat 采集器 → Logstash 清洗管道 → Elasticsearch 存储 → Kibana 可视化缓冲削峰链路营销大促、秒杀高并发 业务本地日志 → FileBeat → Redis 缓冲队列 → Logstash → ES → Kibana Redis 核心作用日志流量峰值削峰避免瞬时海量日志形成日志风暴压垮 ES 集群。FileBeat 轻量日志采集组件原理部署方式每台业务服务器独立部署后台常驻守护进程核心特性资源占用极低、offset 偏移量断点续传、多行异常堆栈自动合并、前置过滤无用日志减少传输量核心作用统一采集所有服务实例日志并推送 Logstash隔离业务服务与 Logstash/ES不抢占业务服务器 CPU、内存资源。Logstash 日志清洗管道三层处理流程整体固定流程Input 日志输入 → Filter 清洗转换 → Output 输出存储1.Input 输入源接收 FileBeat 推送日志高并发架构接入 Redis 缓冲队列作为输入源2.Filter 核心清洗插件grok正则解析非结构化日志提取 traceId、耗时、手机号等关键字段mutate新增 / 删除 / 重命名字段、字段类型转换、gsub 全局脱敏敏感数据date统一格式化日志时间标准化 ES 索引时间戳 timestampdrop直接丢弃 DEBUG、框架冗余日志降低 ES 存储压力3.Output 输出规则清洗后的结构化日志按日期分索引写入 ES索引命名格式 log - 年月日Elasticsearch 日志存储检索核心能力底层存储结构基于倒排索引支持海量日志模糊、精确、多条件组合快速检索索引生命周期管理按天分索引支持定时清理过期索引释放磁盘空间集群高可用多节点部署搭配分片 副本机制防止单节点故障丢失日志数据聚合分析能力自动统计每分钟 QPS、ERROR 异常次数、慢接口 TOP 排行Kibana 可视化运维控制台功能日志检索基于 traceId、脱敏手机号、接口 url、异常关键词快速查询全量日志监控大盘绘制各服务请求量、错误率、接口平均耗时可视化图表告警推送支持配置规则通过钉钉推送各类线上异常告警链路联动复制 SkyWalking 的 traceId一键查询整条请求跨所有微服务日志ELK 与 SkyWalking 链路追踪联动技术实现TraceId 全链路日志串联实现流程日志注入阶段通过 Logback 的 MDC 机制在请求入口自动生成全局唯一 traceId、spanId存入当前线程上下文本次请求所有打印的日志都会自动带上这两个标识。OpenFeign 远程调用时自定义拦截器把 traceId、spanId 放入请求头传递给下游微服务保证整条链路 ID 统一。日志采集清洗阶段FileBeat 采集原始日志推送到 Logstash通过 grok 正则表达式解析日志文本单独提取出 traceId 字段存入结构化数据中。存储与检索阶段清洗完成的数据写入 EStraceId 作为独立检索字段运维排查问题时从 SkyWalking 链路页面复制对应请求的 traceId粘贴到 Kibana 即可一次性查出网关、所有上下游微服务的完整日志。排错价值快速区分故障发生位置网关鉴权、Feign 远程调用、MySQL 查询、第三方渠道接口。线上业务故障标准化日志排查流程短信收不到验证码案例用户反馈收不到验证码提供脱敏后的手机号进入 Kibana筛选服务sms-service输入手机号检索日志过滤日志级别为 ERROR查看完整异常堆栈初步定位运营商渠道调用异常复制日志中的 traceId检索网关、用户服务上游日志判断是否存在限流拦截根据日志中 cost 耗时字段区分慢接口根源渠道接口响应慢、数据库查询慢、网关过滤器阻塞聚合统计短时间同一手机号大量请求记录判断是否为爬虫触发限流。日志磁盘存储生命周期优化方案存储周期管控 线上日志仅保留 7 天通过定时任务自动删除 7 天前的 ES 索引释放磁盘空间。ES 磁盘保护机制 ES 磁盘占用达到 80% 会自动进入只读模式无法写入新日志需要提前扩容磁盘或清理旧索引。本地日志切割规则 项目 Logback 配置单日志文件最大 1G 自动切割服务器本地仅留存 3 天日志备份避免本地磁盘爆满。Kibana 线上生产告警配置规则错误告警任意服务 5 分钟内 ERROR 日志累计超过 20 条推送钉钉告警采集断流告警FileBeat 长时间无日志上报判定采集链路故障磁盘容量告警ES 集群磁盘使用率超过 80%慢接口告警接口平均耗时超过 1 秒慢请求突增触发通知。完整业务串联案例优惠券发放异常全链路流程用户发起领券请求网关生成全局 traceId存入 MDC 并透传给下游网关、用户服务、优惠券服务统一输出携带标准字段的结构化日志FileBeat 实时采集本地日志文件推送至 LogstashLogstash 完成字段拆分、手机号脱敏、过滤 DEBUG 调试日志结构化日志按日期写入 ES 对应索引用户反馈领券失败运维在 SkyWalking 复制 traceId进入 Kibana 检索全链路日志定位 activity-service 抛出库存不足异常查看完整堆栈、用户 ID、客户端 IP统计当日同类报错总量配置告警规则运营及时补充优惠券库存。ELK 与 SkyWalking 链路追踪联动的流程图流程分步文字说明请求到达网关生成全局唯一traceId、spanId存入 MDC 线程上下文通过 Feign 拦截器将 ID 透传所有下游微服务。网关、各个业务服务打印日志时MDC 自动携带 traceId输出到服务器本地日志文件。FileBeat 采集所有本地日志推送到 LogstashLogstash 使用 grok 正则把 traceId 单独提取为结构化字段写入 ES。同时所有服务将调用链路、耗时、异常信息上报 SkyWalking 存储。用户反馈业务报错运维打开 SkyWalking 找到对应请求复制 traceId。在 Kibana 输入该 traceIdES 会查出这条请求经过网关、所有微服务的全部日志快速定位故障点。ELK 集群线上故障分级应急处理技术方案故障场景 1日志采集断流Kibana 查不到最新日志排查步骤① 登录业务服务器查看 FileBeat 进程状态进程挂掉则重启 FileBeat② 检查 Logstash 管道配置若 grok 正则语法错误会直接阻塞日志过滤流程修正正则后重启 Logstash③ 查看 ES 集群健康状态出现 yellow/red 代表分片分配异常阻塞日志写入修复分片均衡问题。临时兜底方案临时直接查看服务器本地日志文件定位故障。故障场景 2ES 磁盘占满集群进入只读模式无法写入新日志紧急处置① 手动删除 7 天前过期 ES 索引快速释放磁盘空间② 扩容服务器磁盘临时调高 ES 磁盘水位阈值恢复写入权限长期优化调整 Logstash 过滤规则丢弃低优先级 INFO 日志减少日志存储体量。故障场景 3日志检索缓慢、查询超时根因与处理① 单日索引数据量过大增加索引分片数量分摊查询压力② 查询范围过大规范检索操作禁止一次性查询整月日志限定 1~3 天时间区间③ 集群算力不足扩容 ES 数据节点关闭无用的聚合统计语句减轻查询负载。故障场景 4大促日志风暴ES 写入延迟、丢失日志应急方案① 启用 Redis 缓冲队列FileBeat 日志先存入 Redis 削峰缓解瞬时流量压力② 临时过滤普通 INFO 日志仅保留 WARN、ERROR 核心日志降低写入量③ 扩容 Logstash 消费线程、新增 ES 分片节点提升集群吞吐。故障场景 5日志缺失 traceId无法串联全链路请求排查修复流程① 校验项目 Logback MDC 全局过滤器配置是否生效② 检查 OpenFeign 自定义拦截器逻辑必须透传 traceId 请求头不能清空 Header③ 重启微服务重新加载日志配置文件验证日志是否正常携带 traceId。ELK 集群线上故障应急处理总结表故障场景故障现象排查步骤紧急处置方案长期优化方案日志采集断流Kibana 查不到最新日志日志量骤降为 0① 检查 FileBeat 进程是否存活② 检查 Logstash 管道 grok 正则语法③ 查看 ES 集群健康状态yellow/red① 重启挂掉的 FileBeat 进程② 修正 Logstash 正则并重启③ 修复 ES 分片分配异常④ 临时直查服务器本地日志兜底FileBeat 配置守护进程自启Logstash 配置上线前语法校验ES 集群监控分片状态ES 磁盘占满只读无法写入新日志ES 进入只读模式报错 cluster_block_exception① 查看 ES 磁盘使用率② 检查索引生命周期清理策略是否生效③ 查看是否有异常大体积索引① 手动删除 7 天前过期索引释放空间② 扩容服务器磁盘③ 临时调高磁盘水位阈值恢复写入优化 Logstash 过滤规则丢弃低价值 INFO 日志完善索引自动清理策略日志检索缓慢超时Kibana 查询卡顿大范围查询超时报错① 查看单索引数据量与分片数② 检查查询时间范围是否过大③ 查看 ES 节点 CPU、内存负载① 增加索引分片数量分摊压力② 限定检索时间区间1~3 天③ 扩容 ES 数据节点规范检索操作禁止全量大范围查询关闭无用聚合统计冷热数据分离存储大促日志风暴ES 写入延迟飙升大量日志丢失集群响应变慢① 查看 FileBeat 发送速率与 ES 写入速率差距② 查看 Logstash 消费堆积量③ 查看 ES 节点 IO、CPU 负载① 启用 Redis 缓冲队列削峰② 临时过滤 INFO 日志仅保留 WARN/ERROR③ 扩容 Logstash 消费线程与 ES 分片节点营销高并发系统标配 Redis 缓冲提前扩容 ES 集群大促前压测日志吞吐日志缺失 TraceId日志中无 traceId 字段无法串联全链路请求① 校验 Logback MDC 全局过滤器配置② 检查 Feign 拦截器是否透传 traceId 请求头③ 查看日志格式模板是否包含 traceId 变量① 修复 MDC 过滤器配置② 修正 Feign 拦截器 Header 透传逻辑③ 重启微服务加载新配置traceId 强制纳入代码 CR 审核上线前验证日志字段完整性ELK 日志集群长期生产运维优化规范日志规范管控日志结构化模板、敏感信息脱敏、强制携带 traceId 字段全部纳入代码 CR 审核标准上线前校验日志输出格式。采集层统一部署规范所有业务服务器统一部署 FileBeat 采集器禁止业务服务直连 Logstash 或 ES避免抢占业务服务 CPU、IO 资源。高并发流量缓冲方案营销、秒杀等高并发业务架构强制增加 Redis 缓冲队列抵御大促日志风暴保护 ES 集群稳定。ES 索引磁盘管控规范ES 严格按天分索引配置定时任务自动清理 7 天前过期索引持续控制磁盘占用日志集群与业务数据库 ES 物理隔离资源互不争抢。Logstash 清洗优化统一配置过滤规则自动丢弃 DEBUG、框架冗余日志减少 ES 存储压力与检索耗时全局开启手机号、证件、密钥脱敏。线上告警体系搭建配置多维度钉钉告警ERROR 日志突增、ES 磁盘水位过高、FileBeat 采集断流、慢接口数量上涨异常主动推送通知运维。日志报文大小管控Logback 配置大报文截断规则限制单条日志最大长度防止超大日志条目拖垮 ES 存储与查询性能。ES 集群高可用标准日志 ES 集群最少部署 3 个节点合理分配分片与副本防止单节点磁盘损坏导致日志数据丢失。故障排查工具联动机制线上故障排查双工具配合使用ELK 负责日志细节检索SkyWalking 负责全链路调用流程梳理快速定位分布式问题。日志与 ELK 架构线上高频技术踩坑点日志无统一结构化字段缺失 traceId分布式故障无法串联整条调用链路手机号、验证码、数据库密钥、AK/SK 密钥明文打印违反数据安全合规规范使用 System.out 打印业务日志无法被 FileBeat 采集线上无日志留存捕获异常仅打印简短 message 信息未输出完整异常堆栈无法定位报错代码行生产环境开启 DEBUG 日志产生日志风暴短时间占满服务器磁盘与 ES 存储架构未引入 FileBeat 中间层业务服务直连 ES高并发场景消耗大量 CPU、IO 资源Logstash grok 正则编写错误traceId 等关键字段提取失败Kibana 无法按链路检索ES 未按天分索引单索引数据体量巨大查询卡顿、磁盘持续膨胀无法管控未配置自动清理过期索引策略长期运行磁盘打满ES 集群进入只读不可写状态Feign 自定义拦截器清空请求头MDC 存储的 traceId 丢失全链路日志断裂知识点总结日志规范微服务采用结构化标准化日志区分多级别日志每条日志携带 traceId、脱敏用户信息全局脱敏敏感数据依靠 MDC 透传 TraceId打通 SkyWalking 实现全链路日志串联。ELK 架构生产采用 FileBeat 轻量采集、Logstash 清洗、ES 存储、Kibana 可视化FileBeat 断点续传保证日志不丢失Logstash 完成日志结构化、脱敏、过滤ES 依靠倒排索引实现海量日志快速检索大促场景搭配 Redis 缓冲队列削峰防止日志风暴压垮集群。业务落地营销短信、优惠券故障通过手机号或 traceId 一键查询全链路日志快速定位远程调用、数据库、网关异常配置多维度监控告警提前发现线上隐患。故障处理日志断流排查 FileBeat、Logstash磁盘爆满清理过期索引日志峰值启用 Redis 缓冲无 traceId 检查 MDC 配置与 Feign 请求头透传逻辑。速记小口诀日志口诀日志分五级线上关 DEBUG 字段要齐全脱敏藏隐私 打印不用 out异常堆栈必留。ELK 架构口诀Beat 采、Log 洗、ES 存、Kibana 看 大促高峰 Redis 拦日志风暴不用慌。链路追踪口诀MDC 存 TraceIdFeign 透传不丢失 链路复制 ID一键查全服务日志。故障应急口诀断流查采集、正则、分片 满盘删旧索引、精简日志 查询卡顿缩时间、加分片 峰值爆仓 Redis 缓冲 无链路 ID检查 MDC 与请求头。运维规范口诀统一部署 FileBeat业务不直连存储 日志集群单独分七日索引自动清 告警监控全配齐日志规范 CR 审。