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

如何搭建ELK

搭建 ELK(Elasticsearch、Logstash、Kibana)栈是一个多步骤的过程,涉及多个组件的部署和配置。以下是详细的搭建步骤,适用于在 Linux 服务器(如 CentOS 7/8、Ubuntu 20.04/22.04)上部署生产或开发/测试环境。


🎯 一、架构概述

典型的 ELK 栈核心组件:

  1. Filebeat(可选但推荐)​​:轻量级日志收集器,部署在客户端节点。
  2. Logstash​:日志处理管道(接收、解析、过滤、输出)。
  3. Elasticsearch​:分布式搜索引擎,存储和索引数据。
  4. Kibana​:数据可视化 Dashboard。
  5. Kafka(可选,高并发场景)​​:作为日志缓冲队列。

⚠️ ​最小化部署​:可将 Logstash + ES + Kibana 装在同一台服务器(测试环境)。生产环境建议分离部署。


📦 二、环境准备

  1. 服务器要求​:

    • OS: Linux (CentOS 7+, Ubuntu 18.04+)。
    • Java:至少 OpenJDK 11(Elasticsearch 依赖)。
    # 安装 OpenJDK 11
    sudo apt update && sudo apt install openjdk-11-jdk  # Ubuntu
    sudo yum install java-11-openjdk-devel             # CentOS
  2. 资源规划​:

    • 内存​:ES 单独占用 ≥4GB(生产建议 ≥16GB),禁用 Swap。
    • 磁盘​:SSD 高性能磁盘,预留足够空间(日志量 x 副本数)。
    • 网络​:开放端口:
      • ES: 9200 (HTTP), 9300 (集群通信)
      • Kibana: 5601
      • Logstash: 5044 (Beats), 9600 (管理)

🔧 三、分步安装配置

🔹 步骤 1:安装 Elasticsearch
  1. 添加 Elastic 仓库​:

    # Ubuntu/Debian
    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    sudo apt-get install apt-transport-https
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list# CentOS/RHEL
    sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    sudo tee /etc/yum.repos.d/elastic.repo <<EOF
    [elasticsearch]
    name=Elasticsearch
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    EOF
  2. 安装并启动 ES​:

    sudo apt update && sudo apt install elasticsearch  # Ubuntu
    sudo yum install elasticsearch                    # CentOS# 修改配置文件 /etc/elasticsearch/elasticsearch.yml
    cluster.name: my-elk-cluster    # 集群名(所有节点一致)
    node.name: node-1               # 节点名
    network.host: 0.0.0.0           # 监听所有IP(生产环境建议绑定内网IP)
    discovery.type: single-node     # 单节点模式(集群需注释此项)
    # 集群配置示例(多节点):
    # discovery.seed_hosts: ["192.168.1.10", "192.168.1.11"]
    # cluster.initial_master_nodes: ["node-1", "node-2"]# 启动服务
    sudo systemctl daemon-reload
    sudo systemctl enable elasticsearch
    sudo systemctl start elasticsearch
  3. 验证 ES​:

    curl -X GET http://localhost:9200
    # 应返回JSON,包含"cluster_name"等信息

🔹 步骤 2:安装 Logstash
  1. 安装 Logstash​:

    sudo apt install logstash    # Ubuntu
    sudo yum install logstash    # CentOS
  2. 配置 Pipeline​:
    创建配置文件 /etc/logstash/conf.d/my-pipeline.conf

    input {beats {port => 5044   # 接收 Filebeat 数据}# 可选:直接监听文件# file {#   path => "/var/log/*.log"#   start_position => "beginning"# }
    }filter {grok {match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:msg}" } # 示例:解析日志格式}date {match => [ "timestamp", "ISO8601" ]}
    }output {elasticsearch {hosts => ["http://localhost:9200"]  # ES地址index => "app-logs-%{+YYYY.MM.dd}"   # 索引命名规则}
    }
  3. 启动 Logstash​:

    sudo systemctl enable logstash
    sudo systemctl start logstash

🔹 步骤 3:安装 Kibana
  1. 安装并配置 Kibana​:

    sudo apt install kibana    # Ubuntu
    sudo yum install kibana    # CentOS# 编辑配置 /etc/kibana/kibana.yml
    server.port: 5601
    server.host: "0.0.0.0"       # 允许外部访问
    elasticsearch.hosts: ["http://localhost:9200"] # ES地址
  2. 启动 Kibana​:

    sudo systemctl enable kibana
    sudo systemctl start kibana

    访问 http://<your-server-ip>:5601,进入Kibana界面。


🔹 步骤 4:安装 Filebeat(在客户端服务器)
  1. 安装 Filebeat​:

    # Ubuntu
    sudo apt install filebeat
    # CentOS
    sudo yum install filebeat
  2. 配置 Filebeat​:
    修改 /etc/filebeat/filebeat.yml

    filebeat.inputs:- type: filestreamenabled: truepaths:- /var/log/*.log        # 收集的日志路径output.logstash:hosts: ["logstash-server-ip:5044"]  # Logstash地址
  3. 启动并验证​:

    sudo systemctl enable filebeat
    sudo systemctl start filebeat
    # 检查状态:sudo filebeat test output

🛡 四、重要优化与安全设置

  1. Elasticsearch 安全​(免费版基础安全):

    • 启用 TLS 加密传输(xpack.security.enabled: true)。
    • 设置内置用户密码:
      sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
    • 在 Kibana 和 Logstash 配置中使用用户名密码连接 ES。
  2. 性能调优​:

    • ES 内存​:调整 -Xms-Xmx(不超过物理内存50%):
      # /etc/elasticsearch/jvm.options
      -Xms4g
      -Xmx4g
    • Logstash Worker 线程​(根据 CPU 核心数):
      # /etc/logstash/logstash.yml
      pipeline.workers: 4
  3. 索引生命周期管理 (ILM)​​:

    • 通过 Kibana > Stack Management 创建策略:
      • 自动删除旧数据(如保留7天)。
      • 优化分片数量(推荐单分片大小20-50GB)。

🔍 五、验证日志流程

  1. 在客户端生成日志:echo "Test log entry" >> /var/log/test.log
  2. 在 Kibana 中操作:
    • Management > Stack Management > Data Views​:创建 app-logs-* 数据视图。
    • Analytics > Discover​:选择数据视图查看日志。

⚙️ 六、可选:集群化部署(生产推荐)

组件集群化方案
Elasticsearch部署 ≥3 节点(奇数),配置 discovery.seed_hostscluster.initial_master_nodes
Logstash多实例部署,通过负载均衡器分发数据(如 Nginx、HAProxy)
Kibana无状态服务,可多实例 + Nginx 反向代理

🚨 避坑指南

  • 防火墙未开放端口​:检查 firewall-cmdufw
  • Java 版本不兼容​:必须使用 JDK 11(ES 7.x/8.x)。
  • 磁盘空间不足​:监控 ES 磁盘使用率,避免只读状态。
  • 日志未解析​:在 Kibana 的 Discover 中检查字段是否被正确解析(Grok 调试器好用!)。

通过以上步骤,您可搭建一个功能完备的 ELK 栈。建议初次使用从单节点测试开始,熟悉后再扩展集群。如需容器化部署(Docker/K8s),可参考 Elastic 官方 Helm Charts 或 Docker Compose 模板。

http://www.lryc.cn/news/615557.html

相关文章:

  • 【Spring Boot 快速入门】八、登录认证(二)统一拦截
  • 环路补偿知识
  • 算法_python_学习记录_01
  • 比较useCallback、useMemo 和 React.memo
  • leetcode 11. 盛最多水的容器 -java
  • 欢迎走进《励曼旋耕》
  • HarvardX TinyML小笔记1(番外2:神经网络)
  • 物联网之常见网络配置
  • UE破碎Chaos分配模型内部面材质
  • 编程速递:2025 年巴西 Embarcadero 会议,期待您的到来
  • 【unitrix数间混合计算】2.10 小数部分特征(bin_frac.rs)
  • 【QT】QMainWindow:打造专业级桌面应用的基石
  • pdf预览Vue-PDF-Embed
  • Linux下管道的实现
  • js获取当前时间
  • 基于dynamic的Druid 与 HikariCP 连接池集成配置区别
  • Web自动化技术选择
  • [Oracle] TRUNC()函数
  • 11. 为什么要用static关键字
  • Qt Graphics View框架概述
  • SpringBoot日志关系
  • 分治-快排-面试题 17.14.最小k个数-力扣(LeetCode)
  • 【Datawhale AI夏令营】让AI读懂财报PDF(多模态RAG)(Task 2)
  • 【无标题】六边形结构在二维拓扑量子色动力学模型中确实具有独特优势,并构建完整的二维拓扑量子色动力学模型。
  • QToolBar 的 addPermanentWidget() 详解与实战场景
  • Python如何将图片转换为PDF格式
  • [SC]SystemC 常见的编译/语法错误与解法(三)
  • PowerShell 入门系列(五):运行命令与命令剖析详解
  • Effective C++ 条款32:确定你的public继承塑模出 is-a 关系
  • pytorch+tensorboard+可视化CNN