CentOS部署ELK Stack完整指南

文章目录

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

bash 复制代码
# 停止并禁用防火墙(生产环境建议只开放所需端口)
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

bash 复制代码
# 临时关闭
sudo setenforce 0

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

3. 安装基础依赖

bash 复制代码
sudo yum update -y
sudo yum install -y wget vim net-tools epel-release java-17-openjdk

✅ ELK 要求 Java 17+,OpenJDK 即可

4. 验证 Java

bash 复制代码
java -version
# 输出应包含:openjdk version "17.0.xx"

🔽 二、下载并安装 ELK 组件

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

1. 导入 Elastic GPG 密钥

bash 复制代码
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2. 创建 YUM 源文件

bash 复制代码
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. 安装

bash 复制代码
sudo yum install -y elasticsearch

2. 修改配置文件

bash 复制代码
sudo vim /etc/elasticsearch/elasticsearch.yml

修改以下关键项:

yaml 复制代码
# 节点名称
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. 启动并设置开机自启

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

4. 验证 Elasticsearch

bash 复制代码
curl -X GET "localhost:9200"

预期输出:

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

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


🟨 四、安装 Kibana

1. 安装

bash 复制代码
sudo yum install -y kibana

2. 修改配置文件

bash 复制代码
sudo vim /etc/kibana/kibana.yml

修改以下内容:

yaml 复制代码
# 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

bash 复制代码
sudo systemctl enable kibana
sudo systemctl start kibana

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

4. 访问 Kibana

浏览器打开:

复制代码
http://你的服务器IP:5601

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


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

1. 安装

bash 复制代码
sudo yum install -y logstash

2. 创建配置文件

bash 复制代码
sudo vim /etc/logstash/conf.d/beats-input.conf

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

conf 复制代码
input {
  beats {
    port => 5044
  }
}

filter {
  # 可添加日志解析规则,如 grok
  if [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. 测试配置

bash 复制代码
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/beats-input.conf --config.test_and_exit

4. 启动 Logstash

bash 复制代码
sudo systemctl enable logstash
sudo systemctl start logstash

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

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

1. 安装

bash 复制代码
sudo yum install -y filebeat

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

bash 复制代码
sudo vim /etc/filebeat/filebeat.yml
yaml 复制代码
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log
  fields:
    log_topic: nginx-access

output.logstash:
  hosts: ["localhost:5044"]

# 或直接输出到 Elasticsearch
# output.elasticsearch:
#   hosts: ["http://localhost:9200"]

3. 启动 Filebeat

bash 复制代码
sudo systemctl enable filebeat
sudo systemctl start filebeat

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

  1. 启用 HTTPS 和用户认证

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

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

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

    • Elasticsearch 对磁盘 IO 敏感

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

  1. Elasticsearch

    bash 复制代码
    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
    • 确认是否有数据流入

📦 九、常用命令汇总

服务 命令
Elasticsearch systemctl start/stop/status elasticsearch
Kibana systemctl start/stop/status kibana
Logstash systemctl start/stop/status logstash
Filebeat systemctl 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 low sudo sysctl -w vm.max_map_count=262144
Kibana 显示"No data" 检查 Filebeat 是否运行,索引是否存在

✅ 总结

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

下一步你可以:

  • 配置 Filebeat 采集你的应用日志(如 Spring Boot、Nginx)
  • 在 Kibana 中创建 Dashboard 可视化日志
  • 设置告警(通过 ElastAlert 或 Kibana Alerting)
相关推荐
雨笋情缘6 分钟前
在 CentOS 7 系统中通过定时任务自动执行 Shell 脚本
centos·crontab
Konwledging6 分钟前
kernel-devel_kernel-headers_libmodules
linux
Web极客码8 分钟前
CentOS 7.x如何快速升级到CentOS 7.9
linux·运维·centos
一位赵28 分钟前
小练2 选择题
linux·运维·windows
代码游侠1 小时前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
Lw老王要学习1 小时前
CentOS 7.9达梦数据库安装全流程解析
linux·运维·数据库·centos·达梦
CRUD酱2 小时前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
zly35002 小时前
VMware vCenter Converter Standalone 转换Linux系统,出现两个磁盘的处理
linux·运维·服务器
Albert Edison3 小时前
【Python】函数
java·linux·python·pip
General_G3 小时前
Linux中的信号
linux·运维·服务器