news 2026/4/16 18:40:42

Rocky9 实战:ELK 堆栈的快速部署与日志分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Rocky9 实战:ELK 堆栈的快速部署与日志分析

1. 为什么选择Rocky9部署ELK堆栈?

如果你正在寻找一个稳定、高效的日志分析解决方案,ELK堆栈(Elasticsearch + Logstash + Kibana)绝对是首选。而Rocky Linux 9作为RHEL的完美替代品,提供了长期支持和企业级稳定性,两者结合简直是运维人员的黄金搭档。

我去年接手公司日志系统改造时,就选择了这个组合。当时我们面临几个痛点:日志分散在几十台服务器上,排查问题要一台台登录查看;日志格式不统一,分析起来特别费劲;历史日志保存困难,经常需要的时候找不到。ELK堆栈完美解决了这些问题,而Rocky9则让整个系统运行得异常稳定。

ELK堆栈的三个组件各司其职:

  • Elasticsearch:负责存储和检索日志数据,就像个超级图书馆
  • Logstash:负责收集、过滤和转发日志,相当于图书管理员
  • Kibana:提供可视化界面,让我们能直观地分析日志,好比是图书馆的查询终端

2. 环境准备与基础配置

2.1 系统要求检查

在开始之前,建议使用至少4GB内存的服务器。我刚开始用2GB内存的测试机,Elasticsearch直接罢工了。运行以下命令检查系统资源:

free -h df -h

如果内存不足,可以修改Elasticsearch的JVM参数,后面会讲到具体方法。另外确保服务器能正常访问外网,因为需要下载安装包。

2.2 Java环境安装

ELK全家桶都依赖Java,Rocky9默认仓库提供了OpenJDK。我测试过JDK 11和17都可以,这里选择安装11:

sudo dnf install java-11-openjdk-devel

安装完成后验证版本:

java -version

如果显示类似"openjdk 11.0.xx"就说明成功了。这里有个小技巧:设置JAVA_HOME环境变量,很多工具会用到:

echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> ~/.bashrc source ~/.bashrc

3. Elasticsearch安装与调优

3.1 安装Elasticsearch

首先导入Elasticsearch的GPG密钥:

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

创建仓库配置文件。注意我们这里选择7.x版本,因为8.x改动较大,7.x更稳定:

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

安装Elasticsearch:

sudo dnf install elasticsearch

3.2 关键配置调整

编辑配置文件前先备份是个好习惯:

sudo cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

然后修改主要配置:

sudo vi /etc/elasticsearch/elasticsearch.yml

找到并修改以下参数:

  • cluster.name: 给你的集群起个有意义的名字
  • node.name: 节点名称,可以用主机名
  • network.host: 0.0.0.0 (如果要远程访问)
  • discovery.type: single-node (单节点模式)

内存设置也很重要,编辑JVM选项:

sudo vi /etc/elasticsearch/jvm.options

根据服务器内存调整:

  • Xms和Xmx设置为相同值,建议不超过物理内存的50%
  • 比如4GB内存的服务器可以设置为1g

3.3 启动与验证

启动服务并设置开机自启:

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

检查状态:

sudo systemctl status elasticsearch

验证是否正常运行:

curl -X GET "localhost:9200"

如果看到包含"you Know, for Search"的JSON响应,说明安装成功。

4. Logstash配置实战

4.1 安装Logstash

同样先创建仓库文件:

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

安装Logstash:

sudo dnf install logstash

4.2 配置日志收集管道

Logstash的强大之处在于灵活的管道配置。我们先创建一个简单的测试配置:

sudo tee /etc/logstash/conf.d/test.conf <<EOF input { file { path => "/var/log/messages" start_position => "beginning" } } filter { grok { match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:message}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "syslog-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } } EOF

这个配置会:

  1. 监控/var/log/messages文件
  2. 使用grok解析标准的系统日志格式
  3. 将日志发送到Elasticsearch并创建按日期划分的索引

4.3 启动与测试

启动Logstash服务:

sudo systemctl enable logstash sudo systemctl start logstash

查看日志确认是否正常运行:

journalctl -u logstash -f

如果看到成功解析的日志输出,说明管道配置正确。

5. Kibana可视化配置

5.1 安装Kibana

安装过程类似:

sudo dnf install kibana

5.2 基础配置

编辑Kibana配置文件:

sudo vi /etc/kibana/kibana.yml

修改以下参数:

  • server.host: "0.0.0.0" (允许远程访问)
  • server.name: 设置一个有意义的名称
  • elasticsearch.hosts: ["http://localhost:9200"]

5.3 启动与访问

启动服务:

sudo systemctl enable kibana sudo systemctl start kibana

检查状态:

sudo systemctl status kibana

默认端口是5601,访问http://服务器IP:5601 就能看到Kibana界面。

6. 日志分析实战技巧

6.1 创建索引模式

首次登录Kibana后,需要创建索引模式:

  1. 进入Management > Stack Management
  2. 选择Index Patterns > Create index pattern
  3. 输入"syslog-*"作为模式名称
  4. 选择@timestamp作为时间字段

6.2 简单查询示例

在Discover页面可以尝试以下查询:

  • 搜索特定程序日志:program:"sshd"
  • 查找错误日志:message:error
  • 时间范围筛选:右上角时间选择器

6.3 可视化仪表板

创建可视化图表的基本步骤:

  1. 进入Visualize > Create visualization
  2. 选择图表类型(如柱状图、饼图等)
  3. 选择"syslog-*"索引模式
  4. 配置指标和桶(如按program字段分组统计)

7. 性能优化与问题排查

7.1 常见性能问题

我在生产环境中遇到过几个典型问题:

  1. Elasticsearch内存不足:表现为频繁GC或节点离线
  2. Logstash管道阻塞:输入速度大于处理能力
  3. 磁盘IO瓶颈:日志量太大导致写入延迟

7.2 优化建议

针对这些问题可以采取以下措施:

  • 给Elasticsearch分配更多内存(但不超过物理内存的50%)
  • 增加Logstash工作线程数:
    sudo vi /etc/logstash/jvm.options
    增加-Xms和-Xmx值
  • 使用SSD存储Elasticsearch数据
  • 合理设置索引生命周期管理(ILM)

7.3 监控方案

建议部署Elasticsearch自带的监控功能:

  1. 在Kibana中进入Stack Monitoring
  2. 启用监控数据收集
  3. 设置告警规则(如节点离线、磁盘空间不足等)

8. 安全加固措施

8.1 基础安全配置

生产环境必须考虑安全性:

  1. 为Elasticsearch和Kibana配置密码:
    sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
  2. 启用HTTPS:
    • 为Kibana配置SSL证书
    • 在elasticsearch.yml中启用安全选项

8.2 网络访问控制

建议采取以下措施:

  • 使用防火墙限制访问IP
  • 配置Nginx反向代理增加安全层
  • 定期审计用户权限

我在实际部署中发现,合理的安全配置虽然增加了初始复杂度,但能避免很多潜在风险。特别是当系统暴露在公网时,基础的安全措施绝对不能省略。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 18:36:23

改进DH建模实战指南:从串联机械臂到复杂结构

1. 改进DH法为何成为机械臂建模新宠 第一次接触改进DH法是在五年前的一个工业机器人项目上。当时我们需要为一个六轴串联机械臂建立精确的运动学模型&#xff0c;但用标准DH法处理第三个关节时遇到了坐标系对齐的麻烦——那个特殊结构的连杆让参数表变得异常复杂。直到团队里的…

作者头像 李华
网站建设 2026/4/16 18:32:17

告别抓瞎!手把手教你用Canoe CAPL脚本玩转TCP通信(附完整工程源码)

从零构建Canoe CAPL的TCP通信实战&#xff1a;代码级解析与工程化改造 在汽车电子和嵌入式系统开发中&#xff0c;CANoe的CAPL脚本是实现网络协议栈仿真的利器。当我们需要验证ECU之间的TCP通信逻辑时&#xff0c;一个可立即运行的参考工程往往比理论手册更有价值。本文将带您深…

作者头像 李华
网站建设 2026/4/16 18:27:08

MusePublic保姆级教程:从环境准备到生成第一张图,全程避坑指南

MusePublic保姆级教程&#xff1a;从环境准备到生成第一张图&#xff0c;全程避坑指南 1. 前言&#xff1a;为什么选择MusePublic 如果你正在寻找一个能快速生成高质量艺术人像的AI工具&#xff0c;MusePublic可能是目前最值得尝试的选择之一。作为一个专为艺术感时尚人像优化…

作者头像 李华
网站建设 2026/4/16 18:26:34

智能会议管理系统EasyDSS一站式视频云平台重构企业数字化协作底座

在数字化办公全面普及的今天&#xff0c;企业协作场景早已不再局限于简单的视频会议&#xff0c;而是延伸至内部培训、对外宣讲、应急指挥、远程巡检、内容沉淀等多元业务。然而&#xff0c;多数企业仍在使用会议、直播、点播相互独立的碎片化工具&#xff0c;不仅造成账号混乱…

作者头像 李华