企業級日志分析平臺: ELK 集群搭建指南

前言:在當今數字化時代,數據已經成為企業決策的核心驅動力。無論是日志分析、用戶行為追蹤,還是實時監控和異常檢測,高效的數據處理和可視化能力都至關重要。ELK(Elasticsearch、Logstash、Kibana)作為全球最流行的開源日志分析和可視化解決方案之一,為企業提供了強大的工具,幫助其實現數據驅動的運營和管理。

ELK 簡介(含 FileBeat)

ELK(Elasticsearch、Logstash、Kibana)是一個強大的開源工具集,廣泛應用于日志分析、數據可視化和實時監控等領域。FileBeat 作為 ELK 堆棧的重要組成部分,提供了輕量級、高效且靈活的日志收集方式。

Elasticsearch

Elasticsearch 是一個基于 Lucene 構建的分布式、高性能、高擴展性的搜索引擎。它能夠快速存儲、搜索和分析大規模數據,支持全文搜索、結構化搜索、地理空間數據搜索等多種查詢方式。Elasticsearch 的核心特性包括:

  • 分布式架構:數據被分片存儲在多個節點上,支持水平擴展。
  • 實時搜索:數據一旦寫入即可被搜索。
  • 強大的聚合功能:支持復雜的統計和分析操作。
  • 高可用性:通過副本機制確保數據的可靠性和系統的高可用性。
Logstash

Logstash 是一個用于數據收集、轉換和傳輸的工具。它可以從多種數據源(如日志文件、數據庫、消息隊列等)收集數據,并通過靈活的過濾器對數據進行清洗、轉換和富化,最后將處理后的數據輸出到指定的目標(如 Elasticsearch、數據庫等)。Logstash 的主要功能包括:

  • 數據收集:支持多種輸入插件,如文件、Syslog、JDBC 等。
  • 數據處理:通過過濾器插件對數據進行解析、轉換和富化。
  • 數據輸出:支持多種輸出插件,如 Elasticsearch、Kafka、MongoDB 等。
Kibana

Kibana 是一個用于數據可視化的工具,它與 Elasticsearch 緊密集成,能夠實時展示存儲在 Elasticsearch 中的數據。Kibana 提供了直觀的界面,用戶可以通過拖拽和配置輕松創建各種圖表和儀表板。Kibana 的主要功能包括:

  • 數據可視化:支持多種圖表類型(如柱狀圖、折線圖、地圖等)。
  • 儀表板:可以將多個可視化組件組合成一個儀表板,方便綜合分析。
  • 探索功能:允許用戶直接查詢和分析 Elasticsearch 中的數據。
  • 警報和通知:支持基于數據的變化觸發警報。
FileBeat

FileBeat 是一個輕量級的日志收集工具,設計目標是優化日志收集流程的性能,同時保證數據的完整性和可靠性。它能夠實時地收集各類日志文件,并將其可靠地發送至指定的目標系統(如 Logstash、Elasticsearch 或 Kafka 等)。FileBeat 的主要功能和優勢包括:

  • 輕量級與高效:資源占用低,適合在資源有限的環境中運行。
  • 實時日志收集:能夠實時讀取新增日志,并通過內建的緩沖機制確保日志的及時傳輸。
  • 可靠的數據傳輸:內置數據緩沖機制,即使在網絡不穩定時也能確保日志數據的可靠傳輸。
  • 靈活的配置:支持多種輸入源(如文件、系統日志等)和輸出目標(如 Elasticsearch、Logstash 等)。
  • 支持日志輪轉:自動處理日志文件的切割和歸檔。
  • 支持 SSL/TLS 加密:確保日志數據在傳輸過程中的安全性。
應用場景

ELK 堆棧結合 FileBeat 廣泛應用于以下場景:

  • 日志分析:收集、處理和分析系統日志、應用日志等,幫助快速定位問題。
  • 實時監控:實時監控系統性能、業務指標等,及時發現異常。
  • 用戶行為分析:分析用戶行為數據,優化產品設計和用戶體驗。
  • 安全分析:檢測和分析安全事件,防范潛在威脅。
  • 日志收集流水線:FileBeat 作為輕量級日志收集代理,負責從各個日志源中讀取日志數據,并將其傳輸到下游的日志處理系統。

通過 ELK 堆棧和 FileBeat,企業可以高效地處理和分析海量數據,實現數據驅動的決策和運營。

一、環境準備

1. 服務器配置要求

  • 操作系統:CentOS 7.9+ / Ubuntu 20.04+
  • 硬件:建議3臺以上服務器,每臺配置8核CPU、16GB內存、500GB SSD
  • 網絡:集群節點間需互通9200(HTTP)和9300(Transport)端口

2. 系統優化

# 關閉防火墻(生產環境需配置安全組)
systemctl stop firewalld && systemctl disable firewalld
setenforce 0# 調整系統參數
cat <<EOF >> /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65535
EOF
sysctl -p# 調整用戶資源限制
cat <<EOF >> /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
EOF

二、JDK 17安裝(替代原JDK 8)

# 下載JDK 17(根據系統選擇對應版本)
wget https://download.java.net/java/GA/jdk17/0d483333a00540d886896bac774ff48b/35/GPL/openjdk-17_linux-x64_bin.rpm# 安裝JDK
rpm -ivh openjdk-17_linux-x64_bin.rpm# 配置環境變量
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.8.0.7-2.el7_9.x86_64" >> /etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
source /etc/profile# 驗證安裝
java -version

三、Elasticsearch 8.13.4集群部署

1. 下載與安裝

# 下載Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.4-linux-x86_64.tar.gz# 解壓與配置
tar -zxvf elasticsearch-8.13.4-linux-x86_64.tar.gz
mv elasticsearch-8.13.4 /opt/elasticsearch# 創建專用用戶
useradd esuser
chown -R esuser:esuser /opt/elasticsearch

2. 配置文件調整(elasticsearch.yml)

cluster.name: "prod-elk"
node.name: "es-node-1"
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300# 集群發現配置
discovery.seed_hosts: ["192.168.1.100", "192.168.1.101", "192.168.1.102"]
cluster.initial_master_nodes: ["es-node-1", "es-node-2", "es-node-3"]# 安全配置(生產環境必填)
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /opt/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /opt/elasticsearch/config/elastic-certificates.p12

3. 生成證書

# 生成證書(在任一節點執行)
cd /opt/elasticsearch/bin
./elasticsearch-certutil ca
./elasticsearch-certutil cert --ca elastic-stack-ca.p12

4. 啟動服務

# 切換用戶啟動
su - esuser
/opt/elasticsearch/bin/elasticsearch -d# 驗證集群狀態
curl -u elastic:changeme -k https://localhost:9200/_cat/nodes

四、Logstash 8.13.4部署

1. 下載與安裝

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.13.4.tar.gz
tar -zxvf logstash-8.13.4.tar.gz
mv logstash-8.13.4 /opt/logstash

2. 配置文件(logstash.conf)

input {beats {port => 5044ssl => truessl_certificate => "/opt/logstash/config/elastic-certificates.p12"ssl_key => "/opt/logstash/config/elastic-certificates.p12"}
}output {elasticsearch {hosts => ["https://192.168.1.100:9200", "https://192.168.1.101:9200", "https://192.168.1.102:9200"]user => "elastic"password => "changeme"ssl => truecacert => "/opt/logstash/config/elastic-certificates.p12"index => "logstash-%{+YYYY.MM.dd}"}stdout {codec => rubydebug}
}

3. 啟動服務

/opt/logstash/bin/logstash -f /opt/logstash/config/logstash.conf

五、Kibana 8.13.4部署

1. 下載與安裝

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.13.4-linux-x86_64.tar.gz
tar -zxvf kibana-8.13.4-linux-x86_64.tar.gz
mv kibana-8.13.4 /opt/kibana

2. 配置文件(kibana.yml)

server.host: "0.0.0.0"
elasticsearch.hosts: ["https://192.168.1.100:9200", "https://192.168.1.101:9200", "https://192.168.1.102:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "changeme"
elasticsearch.ssl.certificateAuthorities: ["/opt/kibana/config/elastic-certificates.p12"]

3. 啟動服務

/opt/kibana/bin/kibana

六、Filebeat 8.13.4部署

1. 下載與安裝

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.13.4-linux-x86_64.tar.gz
tar -zxvf filebeat-8.13.4-linux-x86_64.tar.gz
mv filebeat-8.13.4 /opt/filebeat

2. 配置文件(filebeat.yml)

filebeat.inputs:
- type: logpaths:- /var/log/*.logfields:app: web-servicefields_under_root: trueoutput.logstash:hosts: ["192.168.1.103:5044"]ssl.certificate_authorities: ["/opt/filebeat/config/elastic-certificates.p12"]

3. 啟動服務

/opt/filebeat/bin/filebeat -e -c /opt/filebeat/filebeat.yml

七、集群驗證與優化

1. 驗證Kibana界面

訪問 https://your-kibana-server:5601,使用elastic用戶登錄,驗證索引模式是否自動創建。

2. 性能優化建議

  • Elasticsearch JVM配置
    -Xms8g
    -Xmx8g
    -XX:+UseG1GC
    
  • 分片與副本策略
    # 設置索引分片與副本
    PUT /logstash-*/_settings
    {"index": {"number_of_shards": 3,"number_of_replicas": 1}
    }
    

3. 安全加固

  • 定期更新Elastic Stack版本
  • 啟用審計日志:
    xpack.security.audit.enabled: true
    xpack.security.audit.logfile.path: /opt/elasticsearch/logs/audit.log
    

八、常見問題處理

  1. 證書驗證失敗

    # 確保所有節點使用相同的證書文件
    scp /opt/elasticsearch/config/elastic-certificates.p12 other-node:/opt/elasticsearch/config/
    
  2. 內存不足導致節點宕機

    # 調整JVM內存
    vim /opt/elasticsearch/config/jvm.options
    -Xms8g
    -Xmx8g
    
  3. Logstash管道阻塞

    # 增加工作線程數
    pipeline.workers: 8
    

九、版本升級建議

  1. 定期檢查Elastic官方發布的安全公告
  2. 采用滾動升級策略:
    # 暫停分片分配
    PUT _cluster/settings
    {"persistent": {"cluster.routing.allocation.enable": "none"}
    }# 升級單個節點
    systemctl stop elasticsearch
    # 替換二進制文件
    systemctl start elasticsearch# 恢復分片分配
    PUT _cluster/settings
    {"persistent": {"cluster.routing.allocation.enable": "all"}
    }
    

通過以上步驟,您可以搭建一個基于最新ELK Stack 8.x的高可用日志分析集群。在生產環境中,建議結合負載均衡、監控系統(如Elastic APM)和自動化部署工具(如Ansible)來提升運維效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899748.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899748.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899748.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1.2-WAF\CDN\OSS\反向代理\負載均衡

WAF&#xff1a;就是網站應用防火墻&#xff0c;有硬件類、軟件類、云WAF&#xff1b; 還有網站內置的WAF&#xff0c;內置的WAF就是直接嵌在代碼中的安全防護代碼 硬件類&#xff1a;Imperva、天清WAG 軟件&#xff1a;安全狗、D盾、云鎖 云&#xff1a;阿里云盾、騰訊云WA…

MybatisPlus(SpringBoot版)學習第四講:常用注解

目錄 1.TableName 1.1 問題 1.2 通過TableName解決問題 1.3 通過全局配置解決問題 2.TableId 2.1 問題 2.2 通過TableId解決問題 2.3 TableId的value屬性 2.4 TableId的type屬性 2.5 雪花算法 1.背景 2.數據庫分表 ①垂直分表 ②水平分表 1>主鍵自增 2>取…

第二屆計算機網絡和云計算國際會議(CNCC 2025)

重要信息 官網&#xff1a;www.iccncc.org 時間&#xff1a;2025年4月11-13日 地點&#xff1a;中國南昌 簡介 第二屆計算機網絡和云計算國際會議&#xff08;CNCC 2025&#xff09;將于2025年4月11-13日在中國南昌召開。圍繞“計算機網絡”與“云計算”展開研討&#xff…

【大模型基礎_毛玉仁】5.4 定位編輯法:ROME

目錄 5.4 定位編輯法&#xff1a;ROME5.4.1 知識存儲位置1&#xff09;因果跟蹤實驗2&#xff09;阻斷實驗 5.4.2 知識存儲機制5.4.3 精準知識編輯1&#xff09;確定鍵向量2&#xff09;優化值向量3&#xff09;插入知識 5.4 定位編輯法&#xff1a;ROME 定位編輯&#xff1a;…

橫掃SQL面試——連續性登錄問題

橫掃SQL面試 &#x1f4cc; 連續性登錄問題 在互聯網公司的SQL面試中&#xff0c;連續性問題堪稱“必考之王”。&#x1f4bb;&#x1f50d; 用戶連續登錄7天送優惠券&#x1f31f;&#xff0c;服務器連續報警3次觸發熔斷??&#xff0c;圖書館連續3天人流破百開啟限流?” …

Spring AI Alibaba 對話記憶使用

一、對話記憶 (ChatMemory)簡介 1、對話記憶介紹 ”大模型的對話記憶”這一概念&#xff0c;根植于人工智能與自然語言處理領域&#xff0c;特別是針對具有深度學習能力的大型語言模型而言&#xff0c;它指的是模型在與用戶進行交互式對話過程中&#xff0c;能夠追蹤、理解并利…

vdi模式是什么

?VDI模式&#xff08;Virtual Desktop Infrastructure&#xff09;是一種基于服務器的計算模型&#xff0c;其核心思想是將所有計算和存儲資源集中在服務器上&#xff0c;用戶通過前端設備&#xff08;如瘦客戶機&#xff09;訪問服務器上的虛擬桌面?? VDI模式的工作原理 在…

【分布式】深入剖析 Sentinel 限流:原理、實現

在當今分布式系統盛行的時代&#xff0c;流量的劇增給系統穩定性帶來了巨大挑戰。Sentinel 作為一款強大的流量控制組件&#xff0c;在保障系統平穩運行方面發揮著關鍵作用。本文將深入探討 Sentinel 限流的原理、實現方案以及其優缺點&#xff0c;助力開發者更好地運用這一工具…

c#winform,倒鴨子字幕效果,typemonkey字幕效果,抖音瀑布流字幕效果

不廢話 直接上效果圖 C# winform 開發抖音的瀑布流字幕。 也是typemonkey插件字幕效果 或者咱再網上常說的倒鴨子字幕效果 主要功能 1&#xff0c;軟件可以自定義添加字幕內容 2&#xff0c;軟件可以添加字幕顯示的時間區間 3&#xff0c;可以自定義字幕顏色&#xff0c;可以隨…

Pycharm(八):字符串切片

一、字符串分片介紹 對操作的對象截取其中一部分的操作&#xff0c;比如想要獲取字符串“888666qq.com前面的qq號的時候就可以用切片。 字符串、列表、元組都支持切片操作。 語法&#xff1a;字符串變量名 [起始:結束:步長] 口訣&#xff1a;切片其實很簡單&#xff0c;只顧頭來…

圖片解釋git的底層工作原理

&#xff08;圖片來源&#xff1a;自己畫的&#xff09; 基于同一個commit創建新分支 &#xff08;圖片來源&#xff1a;書籍《Linux運維之道》 ISBN 9787121461811&#xff09; 在新分支上修改然后commit一次 &#xff08;圖片來源&#xff1a;書籍《Linux運維之道》 ISBN 978…

leetcode994.腐爛的橘子

思路源自 【力扣hot100】【LeetCode 994】腐爛的橘子&#xff5c;多源BFS 這里圖中的腐爛的的橘子是同時對周圍進行腐化&#xff0c;所以采用多源bfs就能解決 多源bfs與單源bfs的區別就在于隊列取出時一輪是取出隊列當中的全部元素 class Solution {public int orangesRotti…

【華為OD技術面試真題 - 技術面】- Java面試題(15)

華為OD面試真題精選 專欄:華為OD面試真題精選 目錄: 2024華為OD面試手撕代碼真題目錄以及八股文真題目錄 介紹下TCP/UDP TCP(傳輸控制協議)和 UDP(用戶數據報協議) TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是兩種常見的傳輸層協議,主要…

?在 Fedora 系統下備份遠程 Windows SQL Server 數據庫的完整方案

?一、環境準備與工具安裝? ?1. 安裝 Microsoft SQL Server 命令行工具? Fedora 需安裝 mssql-tools 和 ODBC 驅動&#xff1a; # 添加 Microsoft 倉庫 sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo# 安裝工具包 …

DeepSeek:巧用前沿AI技術,開啟智能未來新篇章

引言 近年來&#xff0c;人工智能&#xff08;AI&#xff09;技術迅猛發展&#xff0c;大模型成為全球科技競爭的核心賽道。在這場AI革命中&#xff0c;DeepSeek作為中國領先的大模型研發團隊&#xff0c;憑借其創新的技術架構、高效的訓練方法和廣泛的應用場景&#xff0c;迅…

R語言實現軌跡分析--traj和lcmm包體會

R語言實現軌跡分析–traj和lcmm包體會 軌跡分析是對重復測量數據的一種歸納&#xff0c;轉化為一種分類變量&#xff0c;比如手術后1&#xff5e;7天內的疼痛評分&#xff0c;可以形成術后急性痛軌跡。形成的軌跡作為一個分類變量&#xff0c;可以用于預測疾病的預后&#xff…

Vue 3 事件總線詳解:構建組件間高效通信的橋梁

Vue 3 事件總線詳解&#xff1a;構建組件間高效通信的橋梁 為什么需要事件總線&#xff1f;使用 mitt 實現事件總線1. 安裝 mitt2. 創建事件總線3. 在組件中使用事件總線發送端組件&#xff08;例如 ComponentA.vue&#xff09;接收端組件&#xff08;例如 ComponentB.vue&…

MySQL的基礎語法1(增刪改查、DDL、DML、DQL和DCL)

目錄 一、基本介紹 二、SQL通用語法 三、SQL分類(DDL、DML、DQL、DCL) 1.DDL 1.1數據庫操作 1.2表操作 1.2.1表操作-查詢創建 1.2.2表操作-數據類型 1&#xff09;數值類型 2&#xff09;字符串類型 3&#xff09;日期時間類型?編輯 4&#xff09;表操作-案例 1.2.3…

【NLP】15. NLP推理方法詳解 --- 動態規劃:序列標注,語法解析,共同指代

動態規劃 (Dynamic Programming) 動態規劃&#xff08;Dynamic Programming&#xff0c;簡稱 DP&#xff09;是一種通過將問題分解為較小子問題來優化計算效率的技術。它特別適用于優化最優解問題&#xff0c;比如序列標注&#xff08;sequence tagging&#xff09;這類任務。…

JavaScript中的NaN、undefined和null 的區別

NaN代表"Not a Number",它是一種特殊的數值,用于表示非數字值。當一個操作無法返回有效的數值時,通常會得到NaN作為結果。 let result = 10 / abc; console.log(result); // 輸出 NaN需要注意的是,NaN與自身不相等,我們無法通過簡單的比較操作符(如==或===)來…