CentOS部署ELK Stack完整指南

发布于:2025-09-09 ⋅ 阅读:(21) ⋅ 点赞:(0)


以下是在 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 {
  # 可添加日志解析规则,如 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. 测试配置

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: 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

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
    • 确认是否有数据流入

📦 九、常用命令汇总

服务 命令
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)

网站公告

今日签到

点亮在社区的每一天
去签到