【Project】ELK 7.17.16 日志分析系统部署

ELK 日志分析系统集群部署

本文档基于 Rocky Linux 9.4 系统,部署 ELK 7.17.16(长期支持版)集群

案例准备

1. 节点规划
IP主机名部署组件角色说明
192.168.100.150kafka01Elasticsearch、Kibana主节点(master)+ 可视化
192.168.100.151kafka02Elasticsearch、Logstash数据节点 + 日志收集
192.168.100.152kafka03Elasticsearch数据节点(仅存储数据)
2. 基础环境要求
  • 系统:Rocky Linux 9.4(Blue Onyx)
  • 内存:每节点至少 2GB(Elasticsearch 建议 4GB 以上)
  • 网络:节点间互通,开放端口 9200(ES HTTP)、9300(ES 集群)、5601(Kibana)、9600(Logstash)

案例实施

1. 基础环境配置(所有节点执行)
(1)修改主机名
# kafka01 节点
hostnamectl set-hostname kafka01 && bash# kafka02 节点
hostnamectl set-hostname kafka02 && bash# kafka03 节点
hostnamectl set-hostname kafka03 && bash
(2)配置主机名映射
vi /etc/hosts

添加以下内容(三个节点均需配置):

127.0.0.1   localhost
::1         localhost
192.168.100.150 kafka01
192.168.100.151 kafka02
192.168.100.152 kafka03
(3)安装 JDK 环境

ELK 7.17.x 依赖 JDK 1.8 或 11,此处使用 OpenJDK 1.8:

# 安装 OpenJDK 1.8
dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel# 验证安装
java -version
# 预期输出:openjdk version "1.8.0_382" 或更高版本
2. 部署 Elasticsearch 集群(所有节点执行)
(1)下载并安装 Elasticsearch 7.17.16
# 下载 RPM 包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.16-x86_64.rpm# 安装
rpm -ivh elasticsearch-7.17.16-x86_64.rpm
(2)节点配置(核心差异:7.x 新增主节点初始化参数)

配置文件路径:/etc/elasticsearch/elasticsearch.yml

kafka01(主节点):
cluster.name: ELK-Cluster  # 集群名称(所有节点一致)
node.name: kafka01         # 节点名(与主机名一致)
node.master: true          # 允许作为主节点
node.data: false           # 不存储数据(仅主节点)
network.host: 192.168.100.150  # 绑定当前节点 IP
http.port: 9200            # HTTP 端口
# 集群节点发现(7.x 用 discovery.seed_hosts 替代旧参数)
discovery.seed_hosts: ["kafka01", "kafka02", "kafka03"]
# 初始主节点列表(首次启动时选举主节点)
cluster.initial_master_nodes: ["kafka01"]
# 关闭内存交换(提升性能)
bootstrap.memory_lock: true
kafka02(数据节点):
cluster.name: ELK-Cluster
node.name: kafka02
node.master: false         # 不参与主节点选举
node.data: true            # 存储数据
network.host: 192.168.100.151
http.port: 9200
discovery.seed_hosts: ["kafka01", "kafka02", "kafka03"]
cluster.initial_master_nodes: ["kafka01"]
bootstrap.memory_lock: true
kafka03(数据节点):
cluster.name: ELK-Cluster
node.name: kafka03
node.master: false
node.data: true
network.host: 192.168.100.152
http.port: 9200
discovery.seed_hosts: ["kafka01", "kafka02", "kafka03"]
cluster.initial_master_nodes: ["kafka01"]
bootstrap.memory_lock: true
(3)内存锁定配置(避免内存交换,提升性能)
  1. 修改系统限制:

    vi /etc/security/limits.conf
    

    添加以下内容:

    elasticsearch soft memlock unlimited
    elasticsearch hard memlock unlimited
    
  2. 修改服务配置:

    vi /usr/lib/systemd/system/elasticsearch.service
    

    确保包含以下行(默认已配置,验证即可):

    LimitMEMLOCK=infinity
    
(4)启动 Elasticsearch
# 刷新配置并启动
systemctl daemon-reload
systemctl enable --now elasticsearch# 验证服务状态(确保 9200/9300 端口监听)
ss -ntpl | grep 9200
# 预期输出:LISTEN  0  128  192.168.100.150:9200  ...
(5)验证集群健康状态(在 kafka01 执行)
curl -XGET 'http://192.168.100.150:9200/_cluster/health?pretty'

健康状态输出(status: green 表示正常):

{"cluster_name" : "ELK-Cluster","status" : "green","number_of_nodes" : 3,"number_of_data_nodes" : 2,"active_primary_shards" : 0,"active_shards" : 0,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0
}

在这里插入图片描述

3. 部署 Kibana(仅 kafka01 节点)
(1)下载并安装 Kibana 7.17.16
# 下载 RPM 包
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.16-x86_64.rpm# 安装
rpm -ivh kibana-7.17.16-x86_64.rpm
(2)配置 Kibana

配置文件路径:/etc/kibana/kibana.yml

server.port: 5601                  # 端口
server.host: "192.168.100.150"     # 绑定 kafka01 IP
elasticsearch.hosts: ["http://192.168.100.150:9200"]  # 关联 Elasticsearch
kibana.index: ".kibana"            # Kibana 存储索引(默认)
(3)启动 Kibana
systemctl enable --now kibana# 验证端口
ss -ntpl | grep 5601
# 预期输出:LISTEN  0  128  192.168.100.150:5601  ...

通过浏览器访问 http://192.168.100.150:5601,出现 Kibana 界面即部署成功。

4. 部署 Logstash(仅 kafka02 节点)
(1)下载并安装 Logstash 7.17.16
# 下载 RPM 包
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.16-x86_64.rpm# 安装
rpm -ivh ./logstash-7.17.16-x86_64.rpm
(2)配置 Logstash
基础配置(/etc/logstash/logstash.yml):
http.host: "192.168.100.151"  # 绑定 kafka02 IP
path.config: /etc/logstash/conf.d/*.conf  # 配置文件路径
日志收集规则(收集系统日志):

创建配置文件 vi /etc/logstash/conf.d/syslog.conf

input {file {path => "/var/log/messages"  # Rocky Linux 系统日志路径type => "systemlog"start_position => "beginning"  # 从日志开头收集stat_interval => "3"  # 每 3 秒检查日志更新}
}
output {if [type] == "systemlog" {elasticsearch {hosts => ["http://192.168.100.150:9200"]  # 输出到 kafka01 的 ESindex => "system-log-%{+YYYY.MM.dd}"  # 按日期拆分索引}}
}
(3)验证配置并启动

修改日志目录权限

# 确保日志目录存在并修改所有者
sudo mkdir -p /var/log/logstash
sudo chown -R logstash:logstash /var/log/logstash
sudo chmod -R 755 /var/log/logstash  # 目录权限:所有者可读写执行,其他用户可读执行

修改数据目录权限

# 确保队列目录及父目录存在并修改所有者
sudo mkdir -p /var/lib/logstash/queue
sudo chown -R logstash:logstash /var/lib/logstash
sudo chmod -R 755 /var/lib/logstash  # 同上,确保可写

验证配置文件目录权限
额外检查配置文件目录权限:

sudo chown -R logstash:logstash /etc/logstash
sudo chmod -R 755 /etc/logstash
# 授权 Logstash 读取日志文件
chmod 644 /var/log/messages# 验证配置文件(7.x 命令调整)
/usr/share/logstash/bin/logstash --path.settings /etc/logstash -t# 启动并设置开机自启
systemctl enable --now logstash# 验证 9600 端口(Logstash 监控端口)
ss -ntpl | grep 9600
# 预期输出:LISTEN  0  128  192.168.100.151:9600  ...
5. Kibana 日志可视化(在浏览器操作)
(1)查看日志索引(在 kafka01 执行)
curl 'http://192.168.100.150:9200/_cat/indices?v'
# 预期输出包含:system-log-2025.07.21(按实际日期)

在这里插入图片描述

(2)配置 Kibana 索引模式
  1. 访问 Kibana 页面 http://192.168.100.150:5601,进入 Management → Stack Management → Index Patterns
  2. 点击 Create index pattern,输入索引匹配规则 system-log-*,点击 Next step
  3. 时间字段选择 @timestamp,点击 Create index pattern
    在这里插入图片描述
(3)查看日志

点击左侧 Discover,即可看到收集到的系统日志。若提示无数据,通过右上角时间选择器切换为“Today”(当天)。
在这里插入图片描述

常见问题处理

  1. Elasticsearch 启动失败
    查看日志:journalctl -u elasticsearch -f,常见原因是内存不足(调整 jvm.options 中的 -Xms-Xmx)。

  2. Logstash 无输出
    检查日志权限:ls -l /var/log/messages,确保 logstash 用户有读取权限。

  3. Kibana 无法连接 ES
    验证 elasticsearch.hosts 配置是否正确,执行 curl http://192.168.100.150:9200 确认 ES 可访问。

通过以上步骤,可在 Rocky Linux 9 上部署兼容且稳定的 ELK 7.17.16 集群,实现系统日志的收集、存储与可视化分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89779.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89779.shtml

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

相关文章

分布式定时任务系列13:死循环是任务触发的银弹?

传送门 分布式定时任务系列1:XXL-job安装 分布式定时任务系列2:XXL-job使用 分布式定时任务系列3:任务执行引擎设计 分布式定时任务系列4:任务执行引擎设计续 分布式定时任务系列5:XXL-job中blockingQueue的应用 …

Flutter基础(前端教程①③-单例)

现实类比:公司打印机假设你们公司有一台共享打印机:非单例(重复创建):每个员工都自己买一台打印机放在工位上结果:浪费钱,占空间,难维护单例(唯一实例)&#…

力扣刷题 -- 965.单值二叉树

题目示例: 思路分析代码实现 bool isUnivalTree(struct TreeNode* root) {if(rootNULL){return true;}if(root->left && root->val ! root->left->val){return false;}if(root->right && root->val ! root->right->val){re…

uni-api交互反馈组件(showToast)的用法

欢迎来到我的UniApp技术专栏!🎉 在这里,我将与大家分享关于UniApp开发的实用技巧、最佳实践和项目经验。 专栏特色: 📱 跨平台开发一站式解决方案 🚀 从入门到精通的完整学习路径 💡 实战项目经…

借助它,在Web3投资赛道抢占先机

随着互联网技术的飞速发展,Web3的概念逐渐成为科技圈和投资界的热门话题。Web3代表着下一代互联网的发展方向,它强调去中心化、用户主权和数据隐私保护。在这一新兴领域,如何借助Web3技术抢占投资先机,成为许多投资者关注的焦点。…

验证大语言模型不会算数但可以编写算数的程序

摘要:本文通过几个实例测试了大语言模型在数学计算、排序、统计等方面的能力。结果显示,对于简单字符统计、排序等任务,大模型能正确生成实现代码,但当数据区分度降低时容易出错。在计算学生分数排名任务中,大模型生成…

概率论与数理统计(八)

参数估计 通过取样本,并用样本构造函数,达成估计分布函数参数的目的 矩估计法 本质:用样本的各阶矩代替总体的各阶矩,即取: E(X)X‾1n∑iXiE(X2)1n∑iXi2E(X)\overline{X}\dfrac{1}{n}\sum_i X_i\\ E(X^2)\dfrac{1}…

服务器后台崩溃的原因

当我们双十一活动零点拼命刷新却卡在支付完页面,游戏页面等不进去,公司系统瘫痪全体员工干瞪眼,服务器崩溃绝对是数字时代中的酷刑!那服务器为什么会说崩就崩,用户对于这种情况该如何进行避雷呢?服务器主要…

线程池与ThreadPoolExecutor源码解析(上)

一、线程池线程池(ThreadPool)是一种线程复用的机制。它维护着若干个线程,任务来了就复用这些线程去执行,任务做完线程不会销毁,而是回到池中等待下一个任务。为什么要用线程池?降低资源消耗:避…

Linux内核IP分片重组机制剖析:高效与安全的艺术

在IP网络通信中,当数据包超过MTU限制时,路由器会将其拆分为多个分片。这些分片到达目标主机后,内核必须高效、安全地重组原始数据包。Linux内核的net/ipv4/inet_fragment.c实现了一套精妙的分片管理框架,完美平衡了性能和安全性需求。本文将深入剖析其设计哲学与关键技术。…

相机模型和对极几何

一、相机模型 1.针孔相机模型-外参矩阵 1.世界坐标系到相机坐标系 世界坐标系:可以定义空间中任意一个位置,原点位置三个坐标轴方向坐标系姿态(X,Y,Z)相机坐标系:定义在相机上,原点是相机中心,z…

Git 常用命令与操作步骤

以下是 Git 常用命令与操作步骤 的整理&#xff0c;涵盖日常开发中最核心的场景&#xff0c;适合快速查阅和上手&#xff1a;1. 初始化与克隆仓库操作命令本地初始化仓库git init克隆远程仓库git clone <仓库URL> &#xff08;如 git clone https://gitlab.com/user/repo…

Leetcode-.283移动零

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""pos0for i in range(len(nums)):if nums[i]!0:nums[pos],nums[i]nums[i],nums[pos]pos1本题运用双指针来写&…

在React中做过哪些性能优化?

1. 使用 React.memo 进行组件优化 问题:当父组件重新渲染时,子组件也会重新渲染,即使它的 props 没有变化。 解决方案:使用 React.memo 包裹子组件,让其只在 props 变化时才重新渲染。 const MyComponent = React.memo((props) => {// 子组件代码 }); 2. 使用 useCa…

安装docker可视化工具 Portainer中文版(ubuntu上演示,所有docker通用) 支持控制各种容器,容器操作简单化 降低容器门槛

以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作 地址&#xff1a;星宇科技 | GPU服务器 高性能云主机 云服务器-登录 相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客 兑换码要是过期了&#xff0c;可以私信我获取最新兑换码&#xff01;&a…

ansible批量部署zabbix客户端

✅ansible编写剧本步骤 1️⃣创建roles目录结构2️⃣在group_vars/all/main.yml中定义变量列表3️⃣在tasks目录下编写tasks任务4️⃣在files目录下准备部署文件5️⃣在templates目录下创建j2模板文件6️⃣在handlers目录下编写handlers7️⃣在roles目录下编写主playbook8️⃣运…

蚂蚁数科AI数据产业基地正式投产,携手苏州推进AI产业落地

近日&#xff0c;蚂蚁数科AI数据产业基地在太仓智汇谷科技创新园正式投产。该基地作为苏州市首个AI数据产业基地&#xff0c;旨在通过跨行业人才与前沿技术&#xff0c;为长三角制造业、金融、医疗等领域的大模型落地提供场景化、高质量的训练数据支撑。数据被视为AI学习的核心…

计算机的网络体系及协议模型介绍

目录 1、网络协议介绍 1.1、定义 1.2、基本作用 1.3、协议的主要内容 2、网络协议分层 2.1、协议分层原因 2.2、网络协议分层的缺点 2.3、OSI协议和TCP/IP协议的联系 3、TCP/IP 协议族 3.1、定义介绍 3.2、组成 1、应用层 2、运输层 3、网络层 3.3、底层流程 4、…

密码管理安全防御

密码管理是信息安全的核心环节,其目标是通过规范密码的生成、存储、传输、验证和生命周期管理,防止未授权访问,保护用户账号和系统资源的安全。以下从核心原则、技术实践、常见问题及解决方案等方面详细说明: 一、密码管理的核心原则 密码管理需遵循“安全性”与“可用性…

Java异步日志系统性能优化实践指南:基于Log4j2异步Appender与Disruptor

Java异步日志系统性能优化实践指南&#xff1a;基于Log4j2异步Appender与Disruptor 一、技术背景与应用场景 在高并发的后端应用中&#xff0c;日志记录往往成为性能瓶颈之一。同步写日志会阻塞业务线程&#xff0c;导致响应延迟&#xff1b;而简单的异步队列实现又可能出现积压…