EFK(Elasticsearch + Filebeat + Kibana)日志采集的核心是 “分布式采集→轻量处理→存储检索→可视化分析”,全程无侵入、低延迟,适配各类服务器与应用日志。
一、核心组件与分工
①Filebeat:部署在日志源服务器(应用 / 数据库 / 服务器),负责实时 监控日志文件,读取新增内容并转发,资源占用极低。
②Elasticsearch(ES):分布式存储与搜索引擎,接收日志数据后结构化 存储、构建索引,支持高效查询与聚合分析。
③Kibana:可视化操作平台,连接 ES,提供日志检索、图表展示、告警 配置等功能,直观呈现日志数据。
二、完整采集流程(6 步闭环)
1. 日志源准备与采集规则配置
【1】日志产生:应用(Java/Go)、系统(Linux)、中间件等在服务器生 成日志文件(支持文本日志、JSON 日志等)。
【2】Filebeat 配置:编辑filebeat.yml,指定核心规则:
①输入源:监控日志路径(如/var/log/nginx/access.log)、日志轮转识 别(自动适配文件切割)。
②日志标识:添加自定义字段(如service: nginx、host: server- 10.0.0.1),便于后续筛选。
③输出目的地:直接指向 ES 集群(常用),或通过 Logstash 中转
( 复杂处理场景)。
2.Filebeat 日志采集与预处理
【1】实时采集:Filebeat 通过文件句柄监控日志新增内容,逐行读取, 避免漏读或重复采集。
【2】轻量预处理:通过 Filebeat 处理器(Processors)优化数据 :
①过滤:剔除无效日志(如空行、调试日志)。
②解析:将非 JSON 日志(如 Nginx 默认日志)解析为结构化字段
(请求时间、状态码、IP 等)。
③脱敏:对手机号、密码等敏感字段进行加密或替换。
3.日志传输与可靠性保障
【1】传输方式:Filebeat 通过 HTTP/HTTPS 协议将日志推送到 ES,支持 负载均衡(配置多个 ES 节点地址)。
【2】可靠性机制:
①本地缓存:ES 不可用时,日志暂存本地(默认存储在data/目录), 恢复后自动补发。
②重试机制:失败请求自动重试,可配置重试次数与间隔。
③批量传输:合并多条日志批量发送,降低网络开销。
4. ES 索引创建与数据存储
【1】索引模板匹配:ES 接收日志后,根据预设的 “索引模板”(Index Template)定义字段类型(时间、字符串、数值等), 避免自动映射错误。
【2】自动建索引:按配置规则生成索引(如按日期分区filebeat-2024- 10- 01),日志分布式存储在 ES 集群节点,支持水平扩容。
【3】索引优化:ES 自动构建倒排索引,提升关键词检索、字段筛选的效 率。
5. Kibana 索引模式配置
【1】连接 ES:在 Kibana 中配置 ES 集群地址(需与 Filebeat 输出地址一 致),验证连接可用性。
【2】创建索引模式:关联 ES 中的日志索引(如filebeat-*匹配所有日期 分区),指定时间字段(如@timestamp),用于按 时间范围筛选日志。
6. 日志可视化与使用
【1】日志检索:在 Kibana “Discover” 模块,按关键词、字段、时间范围 查询(如status:500 AND service: app),支持模糊匹配 与精确筛选。
【2】可视化分析:在 “Dashboards” 模块创建图表
(折线图展示请求趋势、饼图统计错误类型),自定义监控面板。
【3】告警配置:针对异常日志(如错误日志量突增、响应时间超时)设 置阈值,通过邮件、短信等方式推送告警。
三、关键优化点
【1】日志格式:优先采用 JSON 格式输出日志,减少解析成本,提升结 构化效率。
【2】索引生命周期:配置 ES 索引生命周期管理(ILM),自动删除过期 日志或归档到低成本存储,节省磁盘空间。
【3】资源控制:限制 Filebeat 采集速率(避免占用过多 CPU / 带宽), ES 集群合理分配分片数(建议每个分片大小 50GB 左右)。
作者:丝血反杀闰土猹