内容提要
EFK是Elasticsearch、FileBeat和Kibana的缩写,用于日志分析、收集和展示。相比ELK,FileBeat替代Logstash,侵入低、性能高,但格式化能力较弱。部署步骤包括安装Docker、拉取镜像、创建网络、启动服务、配置日志解析规则(通过Grok正则),最后安装FileBeat并配置日志收集路径和输出到Elasticsearch。
延伸解读
EFK与ELK的取舍
EFK用FileBeat替代Logstash,主要优势是侵入低、性能高,IO占用率远小于Logstash。但FileBeat的日志格式化能力较弱,仅适合收集本身已有一定格式的日志。若日志格式复杂或需深度处理,Logstash仍是更优选择。因此,选型时应根据日志的复杂度和性能要求权衡。
日志解析的配置要点
日志解析规则通过Grok正则定义,存放在Elasticsearch的Ingest Pipeline中。配置时需注意:正则中的反斜杠必须转义;可用Kibana自带的Grok调试工具测试;通过date处理器将日志时间映射到@timestamp,便于排序;最后删除原始message字段,减少存储量。这些细节直接影响解析的准确性和效率。
部署中的网络与路径配置
EFK组件通过Docker自定义网络(如elk_net)互联,容器间使用容器名通信。若FileBeat与Elasticsearch、Kibana不在同一主机,需将配置中的容器名改为对应IP。FileBeat挂载宿主机日志目录时,需确保路径映射正确,否则无法收集日志。这些配置错误是部署失败的常见原因。
Q&A
EFK日志分析系统由哪些组件组成?
EFK由Elasticsearch、FileBeat和Kibana三个开源软件组成,其中Elasticsearch负责日志分析和存储,FileBeat负责日志收集,Kibana负责界面展示。
EFK和ELK有什么区别?为什么用FileBeat替代Logstash?
EFK与ELK的区别在于日志收集组件由Logstash替换为FileBeat。FileBeat相对于Logstash有两个好处:侵入低,无需修改Elasticsearch和Kibana的配置;性能高,IO占用率比Logstash小很多。但Logstash在日志格式化处理能力上更强。
如何部署EFK日志分析系统?
部署步骤包括:1.安装Docker;2.拉取Elasticsearch、Kibana和FileBeat的镜像;3.创建自定义网络;4.启动Elasticsearch和Kibana容器;5.配置日志解析规则(通过Grok正则);6.安装FileBeat并配置日志收集路径和输出到Elasticsearch。
在EFK中如何配置日志解析规则?
日志解析规则存放在Elasticsearch中,可以通过curl命令向ES插入管道配置。配置内容包括grok正则表达式、日期解析和字段删除。也可以登录Kibana界面,通过Stack Management->Ingest Node Pipelines可视化配置。
FileBeat的配置文件主要包含哪些关键配置项?
FileBeat配置文件主要包含:filebeat.inputs(定义日志输入,如type、enabled、paths)、setup.kibana(设置Kibana地址)、output.elasticsearch(设置ES输出,包括hosts和pipeline)、setup.template(设置索引模板)等。
如何将Kibana界面设置为中文?
进入Kibana容器,修改配置文件,在现有配置中添加一行:i18n.locale: "zh-CN"。但中文化不完全,不推荐使用。
在EFK中,如何测试日志解析规则是否正确?
可以使用Kibana自带的Grok测试工具,或者在Ingest Node Pipelines界面中添加测试文档进行测试。测试数据格式为JSON数组,包含_index、_id和_source字段。