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

CentOS部署ELK Stack完整指南

文章目录

  • 🚀 ELK Stack 部署详解(CentOS 7/8)
    • 📦 一、环境准备
      • 1. 关闭防火墙(或开放端口)
      • 2. 关闭 SELinux
      • 3. 安装基础依赖
      • 4. 验证 Java
    • 🔽 二、下载并安装 ELK 组件
      • 1. 导入 Elastic GPG 密钥
      • 2. 创建 YUM 源文件
    • 🟦 三、安装 Elasticsearch
      • 1. 安装
      • 2. 修改配置文件
      • 3. 启动并设置开机自启
      • 4. 验证 Elasticsearch
    • 🟨 四、安装 Kibana
      • 1. 安装
      • 2. 修改配置文件
      • 3. 启动 Kibana
      • 4. 访问 Kibana
    • 🟥 五、安装 Logstash(可选,用于日志处理)
      • 1. 安装
      • 2. 创建配置文件
      • 3. 测试配置
      • 4. 启动 Logstash
    • 🧩 六、安装 Filebeat(日志采集器)
      • 1. 安装
      • 2. 配置(示例:收集 Nginx 日志)
      • 3. 启动 Filebeat
    • 🔐 七、安全建议(生产环境必看)
    • 🧪 八、验证 ELK 是否正常工作
    • 📦 九、常用命令汇总
    • 🎯 十、常见问题排查
    • ✅ 总结

以下是在 CentOS 系统上部署 ELK Stack(Elasticsearch + Logstash + Kibana)详细完整教程,适用于 CentOS 7/8,采用官方 RPM 包安装,稳定可靠。


🚀 ELK Stack 部署详解(CentOS 7/8)

ELK 版本建议:8.11.3(本文以该版本为例,兼容性好)

目标:搭建一个可运行的 ELK 平台,用于收集、分析、可视化日志

服务器配置建议:2核4G以上,磁盘 ≥50GB


📦 一、环境准备

1. 关闭防火墙(或开放端口)

# 停止并禁用防火墙(生产环境建议只开放所需端口)
sudo systemctl stop firewalld
sudo systemctl disable firewalld# 或者开放 ELK 所需端口
sudo firewall-cmd --permanent --add-port=9200/tcp  # Elasticsearch
sudo firewall-cmd --permanent --add-port=5601/tcp  # Kibana
sudo firewall-cmd --permanent --add-port=5044/tcp  # Logstash Beats 输入
sudo firewall-cmd --reload

2. 关闭 SELinux

# 临时关闭
sudo setenforce 0# 永久关闭
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

3. 安装基础依赖

sudo yum update -y
sudo yum install -y wget vim net-tools epel-release java-17-openjdk

✅ ELK 要求 Java 17+,OpenJDK 即可

4. 验证 Java

java -version
# 输出应包含:openjdk version "17.0.xx"

🔽 二、下载并安装 ELK 组件

我们使用 Elastic 官方 YUM 源进行安装。

1. 导入 Elastic GPG 密钥

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2. 创建 YUM 源文件

sudo tee /etc/yum.repos.d/elastic.repo << EOF
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

🟦 三、安装 Elasticsearch

1. 安装

sudo yum install -y elasticsearch

2. 修改配置文件

sudo vim /etc/elasticsearch/elasticsearch.yml

修改以下关键项:

# 节点名称
node.name: elk-node-1# 集群名称(多个节点需一致)
cluster.name: elk-cluster# 监听所有 IP(允许远程访问)
network.host: 0.0.0.0# 设置初始主节点(单节点时填自己)
cluster.initial_master_nodes: ["elk-node-1"]# 取消注释并设置
http.port: 9200
transport.port: 9300

⚠️ 生产环境建议限制 network.host 为内网 IP

3. 启动并设置开机自启

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

4. 验证 Elasticsearch

curl -X GET "localhost:9200"

预期输出:

{"name" : "elk-node-1","cluster_name" : "elk-cluster","version" : { "number" : "8.11.3", ... },"tagline" : "You Know, for Search"
}

⏱️ 首次启动可能需要 1-2 分钟,请耐心等待


🟨 四、安装 Kibana

1. 安装

sudo yum install -y kibana

2. 修改配置文件

sudo vim /etc/kibana/kibana.yml

修改以下内容:

# Kibana 服务监听地址
server.host: "0.0.0.0"# 允许所有来源访问(生产环境建议限制)
server.shutdownTimeout: "5s"
server.name: "kibana-server"# Elasticsearch 地址
elasticsearch.hosts: ["http://localhost:9200"]# 中文界面(可选)
i18n.locale: "zh-CN"

3. 启动 Kibana

sudo systemctl enable kibana
sudo systemctl start kibana

⚠️ Kibana 启动较慢(约 1-3 分钟),可通过 journalctl -u kibana -f 查看日志

4. 访问 Kibana

浏览器打开:

http://你的服务器IP:5601

首次访问会提示你设置用户名和密码(默认用户 elastic),按页面引导完成即可。


🟥 五、安装 Logstash(可选,用于日志处理)

1. 安装

sudo yum install -y logstash

2. 创建配置文件

sudo vim /etc/logstash/conf.d/beats-input.conf

写入以下内容(接收 Filebeat 发送的日志):

input {beats {port => 5044}
}filter {# 可添加日志解析规则,如 grokif [path] =~ "access" {mutate { add_field => { "log_type" => "access_log" } }}
}output {elasticsearch {hosts => ["http://localhost:9200"]index => "%{[@metadata][beat]}-%{[agent.version]}-%{+YYYY.MM.dd}"}stdout { codec => rubydebug }
}

3. 测试配置

sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/beats-input.conf --config.test_and_exit

4. 启动 Logstash

sudo systemctl enable logstash
sudo systemctl start logstash

🧩 六、安装 Filebeat(日志采集器)

Filebeat 用于从其他服务器或本机采集日志并发送给 Logstash 或 Elasticsearch。

1. 安装

sudo yum install -y filebeat

2. 配置(示例:收集 Nginx 日志)

sudo vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/*.logfields:log_topic: nginx-accessoutput.logstash:hosts: ["localhost:5044"]# 或直接输出到 Elasticsearch
# output.elasticsearch:
#   hosts: ["http://localhost:9200"]

3. 启动 Filebeat

sudo systemctl enable filebeat
sudo systemctl start filebeat

🔐 七、安全建议(生产环境必看)

  1. 启用 HTTPS 和用户认证

    • Kibana 支持 SSL/TLS
    • 使用 bin/elasticsearch-setup-passwords auto 自动生成密码
  2. 限制访问 IP

    # kibana.yml
    server.host: "192.168.1.100"  # 只允许内网访问
    
  3. 定期备份数据

    • 使用 Elasticsearch Snapshot 功能
  4. 监控磁盘空间

    • Elasticsearch 对磁盘 IO 敏感

🧪 八、验证 ELK 是否正常工作

  1. Elasticsearch

    curl localhost:9200/_cat/indices?v
    
  2. Kibana

    • 登录 http://IP:5601
    • 进入 Stack Management > Index Patterns 创建索引模式
    • 进入 Discover 查看日志
  3. Logstash/Filebeat

    • 查看日志:tail -f /var/log/logstash/logstash-plain.log
    • 确认是否有数据流入

📦 九、常用命令汇总

服务命令
Elasticsearchsystemctl start/stop/status elasticsearch
Kibanasystemctl start/stop/status kibana
Logstashsystemctl start/stop/status logstash
Filebeatsystemctl start/stop/status filebeat
查看日志journalctl -u elasticsearch -f

🎯 十、常见问题排查

问题解决方案
Elasticsearch 启动失败检查 journald -u elasticsearch,常见于内存不足或权限问题
Kibana 无法连接 ES检查 elasticsearch.hosts 是否正确,ES 是否已启动
max virtual memory areas vm.max_map_count [65530] too lowsudo sysctl -w vm.max_map_count=262144
Kibana 显示“No data”检查 Filebeat 是否运行,索引是否存在

✅ 总结

你现在已经成功部署了一套完整的 ELK Stack!

下一步你可以:

  • 配置 Filebeat 采集你的应用日志(如 Spring Boot、Nginx)
  • 在 Kibana 中创建 Dashboard 可视化日志
  • 设置告警(通过 ElastAlert 或 Kibana Alerting)

文章转载自:

http://jG7jgMkN.Lyhry.cn
http://rVEDfAHj.Lyhry.cn
http://sgIL2iIW.Lyhry.cn
http://IIKvLnqj.Lyhry.cn
http://Z1r60A5J.Lyhry.cn
http://GyrR4QuF.Lyhry.cn
http://uFEcxndH.Lyhry.cn
http://IJsPCffI.Lyhry.cn
http://YKOXkxod.Lyhry.cn
http://d1WykCgO.Lyhry.cn
http://yoFteruU.Lyhry.cn
http://b9x7EXTV.Lyhry.cn
http://RREELcmw.Lyhry.cn
http://efthZVsb.Lyhry.cn
http://TyLJiWp8.Lyhry.cn
http://M0K7tZr6.Lyhry.cn
http://JSBT2oYH.Lyhry.cn
http://eeSC45Q3.Lyhry.cn
http://Iz3v75sh.Lyhry.cn
http://QY63zzGN.Lyhry.cn
http://K6QpvlXj.Lyhry.cn
http://xooOQrZS.Lyhry.cn
http://jeyRBwIp.Lyhry.cn
http://cXzayPVc.Lyhry.cn
http://SmRTdXwA.Lyhry.cn
http://P9XVOCJT.Lyhry.cn
http://hZvm8GQF.Lyhry.cn
http://4e02IecP.Lyhry.cn
http://MrVLkbdJ.Lyhry.cn
http://ejIVL4VD.Lyhry.cn
http://www.dtcms.com/a/374122.html

相关文章:

  • 多模态大模型Keye-VL-1.5发布!视频理解能力更强!
  • JAK/STAT信号通路全解析:核心分子、激活与负调控
  • 人工智能知识图谱应用平台国家标准发布实施
  • Chiplet封装革命:路登多芯片同步固晶治具支持异构集成
  • 语法分析:编译器中的“语法警察”
  • python数据分析工具特点分析
  • 高并发场景下的“命令执行”注入绕道记
  • Java创建对象的5种方式
  • Redis+Envoy实现智能流量治理:动态读写分离方案
  • ros2中qos的调优配置
  • 【GPT入门】第65课 vllm指定其他卡运行的方法,解决单卡CUDA不足的问题
  • 网络地址转换(NAT)详解
  • 综合体项目 3D 数字孪生可视化运维管理平台解决方案
  • 平衡车 -- MPU6050
  • 【PyTorch】图像二分类
  • 自动驾驶中的传感器技术39——Radar(0)
  • 【进阶版两种方法 | 题解】洛谷 P4285 [SHOI2008] 汉诺塔 [数学分析递推]
  • DFT学习--文献
  • 多轻量算轻量
  • GITHUB 项目推荐:DAIR.AI 提示词工程指南
  • DAMA数据管理|4数据管理的挑战-价值要度量
  • 【LLM微调2】
  • springboot minio 存储入门与实战
  • RabbitMQ 幂等性, 顺序性 和 消息积压
  • 单片机按键示例功能
  • Enable FIPS in ubuntu (by quqi99)
  • OpenAI的开源王牌:gpt-oss上手指南与深度解析
  • 使用nvidia-ml-py监控与管理GPU资源
  • 鹧鸪云光储流程系统全新升级:视频指引与分阶段模块使用指南
  • qx-13 开发数据服务总线