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://www.pswp.cn/news/921708.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 拦截器(Interceptor)与过滤器(Filter)有什么区别?

在 Spring Boot 项目中&#xff0c;我们经常会遇到需要在请求处理前后执行一些通用逻辑的场景&#xff0c;比如记录日志、权限校验、全局异常处理等。此时&#xff0c;我们通常会面临两种选择&#xff1a;过滤器&#xff08;Filter&#xff09; 和 拦截器&#xff08;Intercept…

【技术教程】如何将文档编辑器集成至基于Java的Web应用程序

在如今的企业协作场景中&#xff0c;“文档” 早已不是简单的文字载体&#xff01;从项目需求文档的多人实时修改&#xff0c;到财务报表的在线批注&#xff0c;再到合同草案的版本追溯&#xff0c;用户越来越需要在 Web 应用内直接完成 “编辑 - 协作 - 存储” 全流程。 但很…

多模态大模型Keye-VL-1.5发布!视频理解能力更强!

近日&#xff0c;快手正式发布了多模态大语言模型Keye-VL-1.5-8B。 与之前的版本相比&#xff0c;Keye-VL-1.5的综合性能实现显著提升&#xff0c;尤其在基础视觉理解能力方面&#xff0c;包括视觉元素识别、推理能力以及对时序信息的理—表现尤为突出。Keye-VL-1.5在同等规模…

洗完头后根据个人需求选择合适的自然风干 | 电吹风 (在保护发质的同时,也能兼顾到生活的便利和舒适。)

文章目录 引言 I 选合适的方式让头发变干 时间充裕,不需要做造型,选择自然风干 使用电吹风,比较推荐的做法 II 自然风干 天冷可能刺激头皮 III 电吹风吹干 容易造型 影响头皮健康 损伤发质 科普 头皮的微观结构 头发丝 引言 吹风吹干:容易造型,但损伤发质、影响头皮健康 …

GPS汽车限速器有哪些功能?主要运用在哪里?

GPS 汽车限速器是一种结合全球卫星定位&#xff08;GPS&#xff09;技术、车速采集技术与车辆控制 / 预警逻辑的设备&#xff0c;核心目标是通过技术手段限制车辆行驶速度&#xff0c;减少超速引发的交通事故&#xff0c;并辅助车辆管理。其功能与应用场景高度匹配不同用户的 “…

Python从入门到精通_01_python基础

1 源代码格式在python文件的第一行&#xff0c;输入以下语句&#xff0c;可以将python文件的编码格式设置为utf-8#-*- coding:utf-8 -*-2 输入输出input():输入&#xff0c;无论输入的是什么类型数据&#xff0c;最后都是字符串类型print(*args, sep , end\n, fileNone, flushF…

使用CI/CD部署项目(前端Nextjs)

写在前面&#xff1a;在github上使用CI/CD部署Nextjs项目&#xff0c;具体配置可以按照自己的实际的修改 这是我的项目配置&#xff0c;仅供参考 后端项目可以参考&#xff1a;使用CI/CD部署后端项目 正文开始 项目名&#xff08;PROJECT_NAME&#xff09;- CI/CD 部署指南…

Java全栈工程师面试实录:从基础到实战的全面解析

Java全栈工程师面试实录&#xff1a;从基础到实战的全面解析 面试官&#xff1a;李明&#xff08;资深技术负责人&#xff09; 应聘者&#xff1a;张宇&#xff08;28岁&#xff0c;硕士学历&#xff0c;5年开发经验&#xff09; 第一轮&#xff1a;Java语言与JVM基础 李明&…

C#中解析XML时遇到注释节点报错

在C#中解析XML时遇到注释节点报错的问题&#xff0c;这是因为XML注释节点&#xff08;<!-- -->&#xff09;是特殊的节点类型。当遍历XML节点时&#xff0c;注释节点也会被包含在内&#xff0c;但它们不能像普通元素节点那样处理。 解决方案 方法1&#xff1a;跳过注释节…

9.3深度循环神经网络

目前为止&#xff0c;只讨论了具有一个单向隐藏层的循环神经网络&#xff0c;其中隐变量和观测值域具体的函数形式的交互方式是相当随意的。只要交互类型建模具有足够的灵活性&#xff0c;不是一个单问题。然而&#xff0c;对一个单层来说&#xff0c;可能具有相当的挑战性。之…

CSS in JS 的演进:Styled Components, Emotion 等的深度对比与技术选型指引

CSS in JS 的演进&#xff1a;Styled Components, Emotion 等的深度对比与技术选型指引在现代前端开发中&#xff0c;组件化思维已成为主流&#xff0c;而如何科学、高效地管理组件的样式&#xff0c;也随之成为了一个重要议题。CSS in JS&#xff08;JS中的CSS&#xff09;应运…

【正则表达式】 正则表达式的分组和引用

🌈 个人主页:(时光煮雨) 🔥 高质量专栏:vulnhub靶机渗透测试 👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~) 🌵目录🌵 前言 🍱一、基本语法 🍘二、分组类型 🍙2.1.…

Grafana 导入仪表盘失败:从日志排查到解决 max\_allowed\_packet 问题

问题背景 近期在为项目搭建一套基于 Prometheus 和 Grafana 的可观测性体系。在完成基础部署后&#xff0c;我准备导入一个功能相对复杂的官方仪表盘模板&#xff0c;以便快速监控各项指标。然而&#xff0c;当上传仪表盘的 JSON 文件并点击保存时&#xff0c;Grafana 界面却反…

java对接物联网设备(一)——使用okhttp网络工具框架对接标准API接口

当前无论是在互联网领域&#xff0c;还是物联网项目下&#xff0c;亦或者各类应用类软件&#xff0c;基于http标准接口的对接是目前市面上最常见也是最简单的数据交互方式之一&#xff0c;甚至可以说是最流行的&#xff0c;因为它不依赖的各种插件或者服务。 开发者或者提供服…

版本管理系统与平台(权威资料核对、深入解析、行业选型与国产平台补充)

本文是一篇基于公开权威资料&#xff08;官方文档、产品页、厂商技术文章与技术社区讨论&#xff09;重新检索、核对后撰写的详尽博文。内容覆盖&#xff1a;版本控制基础、主流 VCS 工具深度比较、常见托管/协作平台&#xff08;含中国本土平台&#xff1a;Gitee / GitCode / …

计算机毕设选题:基于Python+Django的B站数据分析系统的设计与实现【源码+文档+调试】

精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、项目介绍二…

Easy ES技术详解

从Java代码示例到高级特性 框架介绍 Easy-Es 是一款以 “简化 Elasticsearch 操作的 ORM 框架” 为核心定位的开源工具&#xff0c;旨在通过低代码设计降低 Elasticsearch 的使用门槛。作为国内 Top1 Elasticsearch 搜索引擎框架&#xff0c;其最显著的优势在于大幅缩减代码量…

【51单片机】【protues仿真】基于51单片机停车场的车位管理系统

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 一、主要功能 1、LCD1602液晶显示 2、统计并显示停车场现有车辆数和已停放过车辆数 3、按键设置总车位数以及剩余车位数 4、统计并显示累计驶入和累计驶出车辆数 5、用16个LED灯模拟停车位 6、车…

【Python】S1 基础篇 P4 if 语句指南

目录简单示例条件测试检查是否相等与不等检查多个条件检查特定的值是否在/不在列表中布尔表达式if语句简单的if语句if-else语句if-elif-else语句使用if语句处理列表检查特殊元素确定列表非空使用多个列表总结if 语句是Python编程中最基本也是最重要的控制结构之一。它允许程序根…

【实战中提升自己】内网安全部署之STP的安全技术部署

1 1拓扑 「模拟器、工具合集」复制整段内容 链接&#xff1a;https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil1 STP的安全技术部署 说明&#xff1a;为什么需要注意STP的安全呢&#xff0c;在二层中其实存在很多不安全的因素&#xff0c;物理上…