【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
英文地址,請注明出處:http://en.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;而簡單的異步隊列實現又可能出現積壓…