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)
相关推荐
从零开始的ops生活4 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx
IT成长日记4 小时前
【Linux基础】Linux系统配置IP详解:从入门到精通
linux·运维·tcp/ip·ip地址配置
夜无霄4 小时前
安卓逆向(一)Ubuntu环境配置
linux·运维·爬虫·ubuntu
田野里的雨4 小时前
manticore离线安装(Ubuntu )
linux·运维·服务器·全文检索
Angletank4 小时前
虚拟机中centos简单配置
linux·经验分享·程序人生·centos
黑唐僧4 小时前
Linux 高阶命令-常用命令详解
linux
疾风铸境4 小时前
项目研发实录:电子称SDK封装dll给到QT和C#调用
linux·服务器·网络
怀旧,5 小时前
【C++】19. 封装红⿊树实现set和map
linux·c++·算法
敲上瘾5 小时前
Docker 存储卷(Volume)核心概念、类型与操作指南
linux·服务器·数据库·docker·容器·架构