EFK架构日志采集系统

发布于:2025-06-14 ⋅ 阅读:(21) ⋅ 点赞:(0)

以下是基于 ‌Filebeat + Elasticsearch + Kibana(EFK)‌ 构建日志采集系统的核心要点及部署指南,综合多来源最佳实践整理:

一、架构核心要点

‌组件角色‌

        ‌Filebeat‌:轻量级日志采集器,实时监控文件/目录变化,高效转发日志数据(资源占用仅为 Logstash 的 1/10)。

‌        Elasticsearch‌:分布式搜索引擎,存储日志并提供实时检索与分析能力。

        ‌Kibana‌:可视化平台,通过仪表盘展示日志分析结果。

‌EFK vs ELK‌:Filebeat 替代 Logstash 作为采集层,简化架构并降低资源消耗。

适用场景‌

        Nginx/Apache 访问日志分析、Kubernetes 容器日志采集、安全审计日志存储。

‌        中小规模日志处理‌(大规模场景需引入 Kafka 缓冲)。

二、部署步骤指南

‌环境准备‌

‌        版本兼容性‌:确保 Elasticsearch、Kibana、Filebeat ‌大版本一致‌(如 7.x)。

‌系统配置‌

# 调整内核参数

sysctl -w vm.max_map_count=262144

‌核心配置‌

‌Filebeat 采集配置‌ (filebeat.yml):

filebeat.inputs:

  - type: log

    paths: ["/var/log/nginx/*.log"]  # 监控日志路径

    fields: { log_type: "nginx" }    # 自定义日志标签

output.elasticsearch:

  hosts: ["es-host:9200"]            # ES 地址

  indices:

    - index: "nginx-%{+yyyy.MM.dd}"  # 按日期生成索引

‌多行日志处理‌:添加 multiline.pattern 合并 Java 堆栈等跨行日志。

‌Elasticsearch 配置‌ (elasticsearch.yml):

cluster.name: efk-prod

node.name: es-node-1

network.host: 0.0.0.0

discovery.type: single-node           # 生产集群需配置多节点

‌Kibana 对接 ES‌ (kibana.yml):

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://es-host:9200"]

‌Kubernetes 部署方案‌

‌DaemonSet 部署 Filebeat‌:每个节点部署一个 Filebeat Pod,采集节点所有容器日志。

‌ES/Kibana 部署‌:

使用 Helm Chart 或 StatefulSet 部署 Elasticsearch 集群。

Kibana 通过 Deployment 暴露 Service。

‌启动顺序‌:Elasticsearch → Kibana → Filebeat。

、典型应用示例

‌Nginx 日志分析流程‌:

Filebeat 采集并标注 fields.log_type: nginx。

ES 索引按日期分片存储(nginx-2025.06.13)。

Kibana 创建仪表盘统计:

        状态码分布饼图

        请求量时序曲线

        高频 IP 地址地图。

‌生产建议‌:日志量 > 10GB/天时,采用 Filebeat → Kafka → Logstash(过滤)→ ES 架构提升可靠性。


网站公告

今日签到

点亮在社区的每一天
去签到