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

张开发
2026/6/7 17:11:02 15 分钟阅读
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全家桶都依赖JavaRocky9默认仓库提供了OpenJDK。我测试过JDK 11和17都可以这里选择安装11sudo 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 ~/.bashrc3. 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] nameElasticsearch repository for 7.x packages baseurlhttps://artifacts.elastic.co/packages/7.x/yum gpgcheck1 gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch enabled1 autorefresh1 typerpm-md EOF安装Elasticsearchsudo dnf install elasticsearch3.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内存的服务器可以设置为1g3.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] nameElastic repository for 7.x packages baseurlhttps://artifacts.elastic.co/packages/7.x/yum gpgcheck1 gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch enabled1 autorefresh1 typerpm-md EOF安装Logstashsudo dnf install logstash4.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这个配置会监控/var/log/messages文件使用grok解析标准的系统日志格式将日志发送到Elasticsearch并创建按日期划分的索引4.3 启动与测试启动Logstash服务sudo systemctl enable logstash sudo systemctl start logstash查看日志确认是否正常运行journalctl -u logstash -f如果看到成功解析的日志输出说明管道配置正确。5. Kibana可视化配置5.1 安装Kibana安装过程类似sudo dnf install kibana5.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后需要创建索引模式进入Management Stack Management选择Index Patterns Create index pattern输入syslog-*作为模式名称选择timestamp作为时间字段6.2 简单查询示例在Discover页面可以尝试以下查询搜索特定程序日志program:sshd查找错误日志message:error时间范围筛选右上角时间选择器6.3 可视化仪表板创建可视化图表的基本步骤进入Visualize Create visualization选择图表类型如柱状图、饼图等选择syslog-*索引模式配置指标和桶如按program字段分组统计7. 性能优化与问题排查7.1 常见性能问题我在生产环境中遇到过几个典型问题Elasticsearch内存不足表现为频繁GC或节点离线Logstash管道阻塞输入速度大于处理能力磁盘IO瓶颈日志量太大导致写入延迟7.2 优化建议针对这些问题可以采取以下措施给Elasticsearch分配更多内存但不超过物理内存的50%增加Logstash工作线程数sudo vi /etc/logstash/jvm.options增加-Xms和-Xmx值使用SSD存储Elasticsearch数据合理设置索引生命周期管理ILM7.3 监控方案建议部署Elasticsearch自带的监控功能在Kibana中进入Stack Monitoring启用监控数据收集设置告警规则如节点离线、磁盘空间不足等8. 安全加固措施8.1 基础安全配置生产环境必须考虑安全性为Elasticsearch和Kibana配置密码sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto启用HTTPS为Kibana配置SSL证书在elasticsearch.yml中启用安全选项8.2 网络访问控制建议采取以下措施使用防火墙限制访问IP配置Nginx反向代理增加安全层定期审计用户权限我在实际部署中发现合理的安全配置虽然增加了初始复杂度但能避免很多潜在风险。特别是当系统暴露在公网时基础的安全措施绝对不能省略。

更多文章