日志ELK、ELFK、EFK

一.ELK架構

Elasticsearch + Logstash + Kibana
數據庫+日志處理+日志顯示

1.logstash的使用

(1)input:輸入

(2)filter:處理

(3)output:輸出

2.ELFK架構

Filebeat-->Elasticsearch-->Logstash-->Kibana

Filebeat 部署在節點上輕量采集日志,Logstash 集中處理。

ELK 的弊端:

  • NFS數據共享會成為流量瓶頸,不適合大規模集群

  • 是否可以在每臺 Web 服務器上安裝 Logstash

    • Logstash占用資源多,在節點部署會爭搶應用的資源

ELFK 優勢:

  • Filebeat占用資源非常小,可以在所有節點部署

  • 在每臺Web服務器上安裝客戶端,通過網絡發送日志,沒有單點故障,沒有流量瓶頸

filebeat的配置文件

test可以設置為業務名

filebeat直接區分不同服務的日志

示例filebeat:

filebeat.inputs:- type: filestreamid: oss-logspaths:- /var/oss/*.logfields:log_source: "oss"fields_under_root: true- type: filestreamid: dps-logspaths:- /var/dps/*.logfields:log_source: "dps"fields_under_root: trueoutput.logstash: # 輸出到 Logstashhosts: ["your-logstash-host:5044"] # 替換為 Logstash 地址# 示例2
# ============================== Filebeat inputs ===============================
filebeat.inputs:# 收集 OSS 服務日志- type: filestreamenabled: trueid: oss-servicepaths:- /var/log/oss/*.log- /var/log/oss/*.log.gzfields:log_source: "oss"  # 關鍵字段,用于標識日志來源environment: "production" # 可選:添加環境標識fields_under_root: true # 將 fields 提升到事件頂級# 可選:為OSS日志添加特定標簽tags: ["oss", "application"]# 收集 DPS 服務日志- type: filestreamenabled: trueid: dps-servicepaths:- /var/log/dps/*.log- /var/log/dps/*.log.gzfields:log_source: "dps"  # 關鍵字段,用于標識日志來源environment: "production"fields_under_root: truetags: ["dps", "application"]# ======================== Filebeat 模塊(禁用避免干擾) ========================
filebeat.config.modules:path: ${path.config}/modules.d/*.ymlreload.enabled: false# ================================= Outputs ====================================
output.logstash:hosts: ["logstash-server-ip:5044"]  # 替換為你的 Logstash 服務器 IP# 可選:開啟負載均衡,如果有多個 Logstash 節點# loadbalance: true# ================================== Logging ===================================
logging.level: info
logging.to_files: true
logging.files:path: /var/log/filebeatname: filebeatkeepfiles: 7permissions: 0644

示例logstash:

# 例如在 /etc/logstash/conf.d/ 下創建 log_processing.conf
input {beats {port => 5044}
}# 這里也可以不過濾
filter {# 此處可添加任意過濾解析規則,如Grok解析消息體:cite[10]# 所有日志都會經過這里
}output {# 根據 log_source 字段值判斷輸出到哪個索引if [log_source] == "oss" {elasticsearch {hosts => ["http://your-es-host:9200"] #Elasticsearchindex => "oss-logs-%{+YYYY.MM.dd}" # 定義OSS索引格式}} else if [log_source] == "dps" {elasticsearch {hosts => ["http://your-es-host:9200"]index => "dps-logs-%{+YYYY.MM.dd}" # 定義DPS索引格式}}# 可選: stdout { codec => rubydebug } # 調試時可在終端輸出結果
}# 示例2
input {beats {port => 5044host => "0.0.0.0"# 可選:增加并發處理能力# threads => 4}
}filter {# 通用處理:添加主機信息mutate {add_field => {"host_ip" => "%{[host][ip]}""host_name" => "%{[host][name]}"}}# 根據 log_source 字段進行路由和特定處理,log_source是filebeat里面設置的if [log_source] == "oss" {# OSS 服務日志的特定處理grok {match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }overwrite => [ "message" ]}# 解析OSS特定字段(示例)grok {match => { "message" => "Bucket: %{NOTSPACE:bucket_name}, Object: %{NOTSPACE:object_key}, Action: %{WORD:action}" }}date {match => [ "timestamp", "ISO8601" ]remove_field => [ "timestamp" ]}# 為OSS日志添加特定標簽mutate {add_tag => [ "processed_oss" ]}} else if [log_source] == "dps" {# DPS 服務日志的特定處理grok {match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} \[%{NOTSPACE:thread}\] %{JAVACLASS:class} - %{GREEDYDATA:message}" }overwrite => [ "message" ]}# 解析DPS特定字段(示例)grok {match => { "message" => "TransactionID: %{NOTSPACE:transaction_id}, Duration: %{NUMBER:duration}ms" }}date {match => [ "timestamp", "ISO8601" ]remove_field => [ "timestamp" ]}# 轉換持續時間字段為數字mutate {convert => { "duration" => "integer" }add_tag => [ "processed_dps" ]}}# 通用后處理:移除不必要的字段mutate {remove_field => [ "ecs", "agent", "input", "log" ]}
}output {# 根據 log_source 路由到不同的 Elasticsearch 索引if [log_source] == "oss" {elasticsearch {hosts => ["http://elasticsearch-host:9200"]index => "oss-logs-%{+YYYY.MM.dd}"  # OSS 索引格式# 可選:為OSS索引指定不同的身份驗證或配置# user => "oss_writer"# password => "${OSS_ES_PASSWORD}"}} else if [log_source] == "dps" {elasticsearch {hosts => ["http://elasticsearch-host:9200"]index => "dps-logs-%{+YYYY.MM.dd}"  # DPS 索引格式# 可選:為DPS索引指定不同的配置# document_type => "dps_log"}}# 調試輸出(生產環境可注釋掉)stdout {codec => rubydebug# 可選:只在調試時開啟特定標簽的日志# if "debug" in [tags]}# 可選:對于解析失敗的日志,發送到死信隊列if "_grokparsefailure" in [tags] or "_dateparsefailure" in [tags] {elasticsearch {hosts => ["http://elasticsearch-host:9200"]index => "failed-logs-%{+YYYY.MM.dd}"}}
}

kibana查看索引日志


(1)查看filebeat采集過來的日志

可以查看到索引日志說明成功采集過來了

(2)創建數據視圖,查看日志

(3)選擇創建了哪些數據視圖(不同業務日志)

(4)日志檢索

3.EFK架構


FluentdFluent-bit 替代 Logstash,資源占用極低(<10MB),支持插件擴展。

Fluent-bit 更適合容器環境,如 Kubernetes 中的 DaemonSet 部署

ELFK 的弊端:

  • ELFK 組件較多,需要配置 Logstash 處理數據

  • Logstash 體積大,占用資源多,不適用放在容器內運行

EFK 優勢:

  • Fluent 整合了 Filebeat 和 Logstash 的功能

  • Fluent 組件更少,占用資源更小,非常適合容器部署

  • 容器部署的優選方案

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

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

相關文章

【CUDA進階】MMA分析Bank Conflict與Swizzle(下)

目錄前言1. bank conflict 分析2. 通過 padding 解決 bank conflict3. mma 搭配 wmma 實現矩陣乘法計算3.1 代碼實現3.2 補充&#xff1a;stmatrix_sync 函數分析3.3 補充&#xff1a;__shfl_sync 函數詳解4. swizzle 原理講解5. swizzle 實現思路講解結語下載鏈接參考前言 學習…

天氣查詢系統

項目要求 項目知識點 問題與解決 代碼分部 結果展示 項目要求 1.顯示天氣預報系統界面 2.系統可以通過選擇城市配置獲取不同城市天氣信息 3.查看實時的天氣信息 &#xff08;當前溫度、最高溫度、最低溫度、當前濕度、最高濕度、最低濕度、風向、風力、風級等信息&#x…

三重積分的對稱性

文章目錄前言柱面球面前言 規律作息 柱面 太牛了。我完全看不懂。實際上就類似于極坐標系。 球面 看到這么多東西&#xff0c;我真害怕。今天是 8.30 &#xff0c;不管 9.10 有沒有復習完概率的強化&#xff0c;我都一定要開始套卷&#xff0c;還有專業課的復習。?\phi?…

深入理解 RabbitMQ:從底層原理到實戰落地的全維度指南

引言&#xff1a; 本文總字數&#xff1a;約 18500 字預計閱讀時間&#xff1a;45 分鐘 為什么我們需要 RabbitMQ&#xff1f; 在當今分布式系統架構中&#xff0c;消息隊列已成為不可或缺的核心組件。想象一下&#xff0c;當你在電商平臺下單時&#xff0c;系統需要處理庫存…

寬帶有丟包,重傳高的情況怎么優化

寬帶丟包和重傳率高是一個非常影響網絡體驗的常見問題。它會導致游戲卡頓、視頻通話模糊、網頁加載慢等。別擔心&#xff0c;我們可以按照從易到難的順序&#xff0c;系統地排查和優化。請遵循以下步驟&#xff1a;第一步&#xff1a;基礎排查&#xff08;自己動手&#xff0c;…

Kotlin 協程之Channel 的高階應用

前言 了解了 Channel 的基礎概念和基本使用 后&#xff0c;我們再來看一看 Channel 的特性以及高階應用。 Channel 是"熱流" 熱流概念 Channel 是熱流&#xff08;Hot Stream&#xff09;&#xff0c;具備以下特性&#xff1a; 數據的生產和消費是兩套獨立的流程 …

PostgreSQL表空間(Tablespace)作用(管理數據庫對象的存儲位置)(pg_default、pg_global)

文章目錄**1. 靈活的數據存儲管理**- **邏輯與物理分離**&#xff1a;表空間為數據庫對象&#xff08;如表、索引&#xff09;提供了一個邏輯名稱與物理存儲路徑的映射。用戶無需直接操作底層文件路徑&#xff0c;只需通過表空間名稱管理數據。- **多數據庫共享表空間**&#x…

Ansible 核心運維場景落地:YUM 倉庫、SSH 公鑰、固定 IP 配置技巧

1&#xff1a;如何一次性驗證所有主機能否被 Ansible 訪問&#xff1f; 答&#xff1a;使用臨時命令&#xff1a;ansible all -m ansible.builtin.ping或驗證 sudo 是否正常&#xff1a;ansible all -m ansible.builtin.ping --become -K2&#xff1a;如何用 Ansible 統一配置…

rman導致的報錯ORA-27037: unable to obtain file status

有套3節點的11204集群環境&#xff0c;在db2上配置了rman備份&#xff0c;今天例行檢查時發現db1和db3上不定期有報錯&#xff0c;報錯如下&#xff1a;Control file backup creation failed:failure to open backup target file /u01/app/oracle/product/11.2.0/db_1/dbs/snap…

Kubernetes 與 GitOps 的深度融合實踐指南

前言&#xff1a;在云原生技術飛速發展的今天&#xff0c;Kubernetes&#xff08;簡稱 K8s&#xff09;已成為容器編排領域的事實標準&#xff0c;而 GitOps 作為一種基于 Git 的云原生運維理念&#xff0c;正與 K8s 深度融合&#xff0c;為企業實現自動化、可追溯、可審計的應…

REST-assured 接口測試編寫指南

REST-assured 簡介 REST-assured 是一個基于 Java 的 DSL&#xff08;領域特定語言&#xff09;庫&#xff0c;專門用于簡化 RESTful API 測試的編寫。它提供了流暢的 API 接口&#xff0c;使得測試代碼更加易讀易寫&#xff0c;支持 JSON 和 XML 等多種響應格式的驗證。 基本環…

內網應用如何實現外網訪問?外地通過公網地址訪問內網服務器的設置方法

一、內網應用程序在外網需要連接訪問遇到的問題我們經常需要在內網中部署服務&#xff0c;比如一個 Web 服務器或者數據庫&#xff0c;但由于本地沒有公網IP&#xff0c;這些服務無法直接從外地公網訪問。如自己家里的監控系統&#xff0c;在家時能查看&#xff0c;但出門在外就…

ubuntu24.04 QT中配置opencv4.12

假如生成的opencv路徑是&#xff1a;/usr/local/opencv4.12QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINE…

客戶端是否都需要主動發送`FindService`報文來尋找服務

<摘要> 在AUTOSAR SOME/IP-SD的服務發現流程中&#xff0c;客戶端是否需要主動發送FindService報文來尋找服務&#xff0c;是理解服務訂閱邏輯的一個關鍵。這將直接影響到事件組訂閱的觸發時機和網絡行為。下文將結合規范&#xff0c;對這一問題進行深入剖析。 <解析&…

Go語言流式輸出實戰:構建高性能實時應用

什么是流式輸出&#xff1f; 流式輸出&#xff08;Streaming Output&#xff09;是一種服務器推送技術&#xff0c;允許數據在生成過程中逐步發送到客戶端&#xff0c;而不是等待所有數據準備就緒后一次性發送。這種技術顯著改善了用戶體驗&#xff0c;特別是在處理大量數據或長…

操作系統上的Docker安裝指南:解鎖容器化新世界

摘要&#xff1a;本文詳細介紹了Docker在不同操作系統上的安裝方法。主要內容包括&#xff1a;Windows系統通過Docker Desktop安裝&#xff0c;需啟用Hyper-V和WSL2&#xff1b;Mac系統同樣使用Docker Desktop&#xff0c;根據芯片類型選擇版本&#xff1b;Linux系統以Ubuntu為…

【微信小程序】分別解決H5的跨域代理問題 和小程序正常不需要代理問題

——總問&#xff1a;何為跨域和代理&#xff1f; &#x1f539;什么叫跨域&#xff1f; 前端在瀏覽器里發請求時&#xff0c;如果 域名 / 協議 / 端口 三個中有一個不一樣&#xff0c;就會觸發 跨域問題。 例子&#xff1a; 頁面跑在 http://localhost:5173你要請求接口 http:…

數字簽名 digital signature

文章目錄1、嚴謹的定義2、技術原理&#xff1a;如何工作&#xff1f;第一步&#xff1a;發送者 - 簽名過程第二步&#xff1a;接收者 - 簽名驗證過程3、C語言實現示例4、關鍵技術要點5、安全注意事項6、最重要的應用&#xff1a;TLS/SSL 與網站安全1、嚴謹的定義 數字簽名是一…

對于STM32工程模板

工程模板文件下載鏈接 https://download.csdn.net/download/qq_58631644/91809234 重命名 打開這個文件夾 重命名保持一致 雙擊打開

使用 SmartIDE 開發長安鏈 Go 語言智能合約

文章目錄官方文檔Chrome 插件登錄 SmartIDE合約調試合約編譯官方文檔 使用SmartIDE編寫Go智能合約 Chrome 插件 https://git.chainmaker.org.cn/chainmaker/chainmaker-smartplugin/-/releases 登錄 SmartIDE https://ide.chainmaker.org.cn/ 合約調試 合約編譯