当前位置: 首页 > news >正文

ELKB日志分析平台 部署

ElasticSearch ELKB 日志分析 介绍
docker-compose一键部署ELK(elasticsearch+logstash+kibana)

以下是使用 Docker Compose 部署 Elasticsearch、Logstash、Kibana 和 Beats(以 Filebeat 为例) 的完整方案,涵盖配置文件、关键参数说明及部署步骤,适用于日志采集、存储与分析场景:

一、核心组件与架构

  • Elasticsearch:日志存储与搜索引擎,支持分布式扩展。
  • Logstash:日志采集、解析与转发工具,支持多数据源输入。
  • Kibana:数据可视化与仪表板工具,与 Elasticsearch 集成。
  • Filebeat:轻量级日志采集器,用于从文件或系统日志中收集数据并发送至 Logstash/Elasticsearch。

架构流程
Filebeat → Logstash → Elasticsearch → Kibana

二、Docker Compose 配置文件

创建 docker-compose.yml 文件,内容如下:

version: '3.8'services:# Elasticsearch 服务elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0container_name: elasticsearchenvironment:- discovery.type=single-node  # 单节点模式(生产环境需改为集群配置)- ES_JAVA_OPTS=-Xms1g -Xmx1g  # JVM 堆内存设置(根据主机内存调整)- xpack.security.enabled=false  # 禁用安全认证(生产环境需开启)ulimits:memlock:soft: -1hard: -1volumes:- es_data:/usr/share/elasticsearch/data  # 数据持久化ports:- "9200:9200"  # REST API 端口- "9300:9300"  # 节点间通信端口networks:- elk_network# Logstash 服务logstash:image: docker.elastic.co/logstash/logstash:8.15.0container_name: logstashvolumes:- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml  # Logstash 配置文件- ./logstash/pipeline:/usr/share/logstash/pipeline  # 管道配置目录depends_on:- elasticsearchports:- "5044:5044"  # Beats 输入端口- "9600:9600"  # 监控端口networks:- elk_network# Kibana 服务kibana:image: docker.elastic.co/kibana/kibana:8.15.0container_name: kibanaenvironment:- ELASTICSEARCH_HOSTS=http://elasticsearch:9200  # 指定 Elasticsearch 地址depends_on:- elasticsearchports:- "5601:5601"  # Kibana 访问端口networks:- elk_network# Filebeat 服务filebeat:image: docker.elastic.co/beats/filebeat:8.15.0container_name: filebeatuser: root  # 需要 root 权限访问主机日志文件volumes:- ./filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml  # Filebeat 配置文件- /var/log:/var/log:ro  # 挂载主机日志目录(只读)depends_on:- logstashnetworks:- elk_networkvolumes:es_data:  # Elasticsearch 数据卷networks:elk_network:  # 自定义网络,确保容器间通信driver: bridge

三、关键配置文件说明

1. Logstash 管道配置 (logstash/pipeline/logstash.conf)
input {beats {port => 5044  # 监听 Filebeat 发送的数据}
}filter {# 示例:解析 JSON 格式日志if [message] =~ "^{" {json {source => "message"}}
}output {elasticsearch {hosts => ["elasticsearch:9200"]  # 输出到 Elasticsearchindex => "logstash-%{+YYYY.MM.dd}"  # 按日期生成索引}stdout { codec => rubydebug }  # 调试用,输出到控制台
}
2. Filebeat 配置 (filebeat/config/filebeat.yml)
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/*.log  # 采集主机日志目录下的所有 .log 文件fields:app: "my_application"  # 自定义字段,用于标识日志来源output.logstash:hosts: ["logstash:5044"]  # 发送到 Logstash

四、部署步骤

  1. 创建目录结构

    mkdir -p elk/{logstash/config,logstash/pipeline,filebeat/config}
    chmod -R 777 elk  # 确保容器有权限访问目录
    
  2. 放置配置文件

    • 将上述 logstash.conffilebeat.yml 分别放入对应目录。
  3. 启动服务

    docker-compose up -d
    
  4. 验证部署

    • Elasticsearch:访问 http://localhost:9200,返回 JSON 信息表示成功。
    • Kibana:访问 http://localhost:5601,登录后创建索引模式(如 logstash-*)查看日志。
    • Logstash:检查日志输出(docker logs logstash)确认数据接收。
    • Filebeat:检查日志输出(docker logs filebeat)确认日志采集。

五、生产环境优化建议

  1. 集群配置

    • Elasticsearch 改为多节点部署,修改 discovery.typecluster.initial_master_nodes
    • 增加 vm.max_map_count 系统参数(通过 sysctl -w vm.max_map_count=262144)。
  2. 安全认证

    • 启用 Elasticsearch 的 X-Pack 安全功能,生成证书并配置 Kibana/Logstash 使用 HTTPS。
  3. 资源限制

    • 为每个容器设置 CPU/内存限制(如 resources.limits.memory: 2G)。
  4. 日志轮转

    • 配置 Filebeat 的 close_inactiveclean_inactive 参数避免日志文件过多。

六、常见问题排查

  • 容器无法通信:检查是否加入同一自定义网络(elk_network)。
  • Elasticsearch 启动失败:检查 vm.max_map_countmemlock 配置。
  • Logstash 无数据输入:确认 Filebeat 的 output.logstash.hosts 地址正确。
  • Kibana 无法连接 Elasticsearch:检查 ELASTICSEARCH_HOSTS 环境变量是否指向正确的容器名称。
http://www.dtcms.com/a/349372.html

相关文章:

  • 完美世界招数据仓库工程师咯
  • ArcGIS JSAPI 高级教程 - 创建渐变色材质的自定义几何体
  • three.js+WebGL踩坑经验合集(8.3):合理设置camera.near和camera.far缓解实际场景中的z-fighting叠面问题
  • 大数据平台ETL任务导入分库分表数据
  • Jenkins+docker 微服务实现自动化部署安装和部署过程
  • TDengine IDMP 应用场景:电动汽车
  • AI测试工具midsence和browse_use的使用场景和差异
  • react+taro打包到不同小程序
  • Flutter旧版本升级-> Android 配置、iOS配置
  • 机器视觉的3C玻璃盖板丝印应用
  • KeepAlived+Haproxy实现负载均衡(SLB)
  • window显示驱动开发—混合系统 DDI 和 dList DLL 支持
  • Shell 循环编程:for 与 select 轻松入门
  • HTTP 与 HTTPS 深度解析:从原理到实际应用
  • Kubernetes (K8s)入门指南:Docker之后,为什么需要容器编排?
  • 安全合规:AC(上网行为安全)--下
  • LeetCode热题100--102. 二叉树的层序遍历--中等
  • 什么是JSON-RPC 2.0,在项目中应该怎么使用
  • 09-数据存储与服务开发
  • GPIO子系统自主实现(简单版)
  • C++ static 关键字面试深度解析
  • 匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
  • 【每天一个知识点】大模型训推一体机
  • RK3128 Android 7.1 进入深度休眠流程分析
  • Apache Maven 3.1.1 (eclipse luna)
  • Portswigger靶场之 Blind SQL injection with time delays通关秘籍
  • 维度建模 —— 雪花模型 和 星型模型的优缺点
  • 异常记录-神通数据库-已解决
  • go-redis库使用总结
  • jasperreports 使用