当前位置: 首页 > 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.dtcms.com/a/322775.html

相关文章:

  • C# DataGridView 添加进度条
  • 五、RuoYi-Cloud-Plus 前端项目部署以及如何改后端请求地址。
  • 《从零实现哈希表:详解设计、冲突解决与优化》
  • 09 【C++ 初阶】C/C++内存管理
  • 容器技术基础与实践:从镜像管理到自动运行配置全攻略
  • 【机器学习深度学习】模型选型:如何根据模型的参数算出合适的设备匹配?
  • Java 字符流与字节流详解
  • bms部分
  • 系统调用性能剖析在云服务器应用优化中的火焰图生成方法
  • 比亚迪第五代DM技术:AI能耗管理的深度解析与实测验证
  • Klipper-G3圆弧路径算法
  • Android MediaCodec 音视频编解码技术详解
  • 排序概念以及插入排序
  • Docker部署whisper转写模型
  • AI鉴伪技术:守护数字时代的真实性防线
  • 软件工程总体设计:从抽象到具体的系统构建之道
  • Python爬虫实战:研究PSpider框架,构建电商数据采集和分析系统
  • (LeetCode 每日一题) 231. 2 的幂 (位运算)
  • Python NumPy入门指南:数据处理科学计算的瑞士军刀
  • Redis缓存详解:内存淘汰和缓存的预热、击穿、雪崩、穿透的原理与策略
  • 深入理解C++多态:从概念到实现
  • AudioLLM
  • 人工智能-python-特征选择-皮尔逊相关系数
  • 第15届蓝桥杯Scratch选拔赛初级及中级(STEMA)2023年12月17日真题
  • Python爬虫实战:构建国际营养数据采集系统
  • 非常简单!从零学习如何免费制作一个lofi视频
  • 【GitHub小娱乐】GitHub个人主页ProFile美化
  • 怎么选择和怎么填写域名解析到 阿里云ECS
  • 【Redis】Redis-plus-plus的安装与使用
  • 【pyqt5】SP_(Standard Pixmap)的标准图标常量及其对应的图标