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
英文地址,請注明出處:http://en.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;物理上…