基于 Fluent-Bit 和 Fluentd 的分布式日志采集與處理方案

#作者:任少近

文章目錄

  • 需求描述
  • 系統目標
  • 系統組件
    • Fluent Bit
    • Fluentd
    • Kafka
  • 數據流與處理流程
    • 日志采集
    • 日志轉發到 Fluentd
    • 日志處理與轉發到 Kafka
    • Kafka 作為消息隊列
  • 具體配置
    • Fluent-Bit的CM配置
    • Fluent-Bit的DS配置
    • Fluentd的CM配置
    • Fluentd的DS配置
    • Kafka查詢結果

需求描述

Fluent Bit 將日志傳輸到 Fluentd,Fluentd 再將日志寫入 Kafka
背景: 隨著系統日志量的增加,尤其是在微服務架構下,日志的收集、處理和傳輸變得愈加復雜。為了實現高效的日志收集和處理,需要一個可靠且可擴展的日志管道。Fluent Bit、Fluentd 和 Kafka 的結合可以為這一需求提供強大的支持。

系統目標

Fluent Bit 作為日志收集器,從不同來源(如容器、應用程序、系統日志文件等)收集日志。
將收集到的日志實時轉發到 Fluentd,Fluentd 對日志進行進一步的處理(如解析、過濾、增強等)。
Fluentd 將處理后的日志通過 Kafka 傳輸,Kafka 作為消息隊列,提供日志的高吞吐量傳輸和存儲。

系統組件

Fluent Bit

功能:負責日志的采集和轉發,能夠高效地從各種日志源收集日志數據,并將其發送到 Fluentd。
特點:輕量級、高效、低資源消耗,適用于邊緣設備和容器環境。

Fluentd

功能:接收來自 Fluent Bit 的日志數據,對日志進行進一步的處理,如過濾、格式轉換、增強等。
特點:支持豐富的插件生態系統,能夠靈活地擴展和配置,適用于復雜的日志處理和存儲需求。

Kafka

功能:作為日志數據的消息隊列,提供高吞吐量、可靠的日志傳輸機制。Fluentd 將日志數據發送到 Kafka,Kafka 作為緩沖區存儲和傳遞日志數據,確保日志的可靠性和可擴展性。
特點:高吞吐量、可擴展、容錯能力強。

數據流與處理流程

日志采集

Fluent Bit 部署在日志源所在的節點或容器中,實時監控指定的日志文件(如 /var/log/test.log 等)。
Fluent Bit 使用 tail 插件采集日志,并將其轉換為指定的格式(如 JSON)。

日志轉發到 Fluentd

Fluent Bit 使用 forward 輸出插件將日志數據轉發到 Fluentd,通過指定 Fluentd 的 IP 地址和端口進行連接。

日志處理與轉發到 Kafka

Fluentd 接收到日志后,可以進行各種處理(如過濾、解析、增強、格式轉換等)。
處理后的日志通過 Kafka 輸出插件將日志發送到指定的 Kafka 集群。
Kafka 將日志存儲在其主題中,以便進行后續的分析、查詢和處理。

Kafka 作為消息隊列

Kafka 將日志數據持久化到其分區中,提供可靠的消息存儲和高吞吐量的數據傳輸。
消費者 可以從 Kafka 中讀取數據進行進一步處理或存儲到其他系統(如 Elasticsearch、OpenSearch、數據庫等)。

具體配置

Fluent-Bit的CM配置

 fluent-bit.conf: |[SERVICE]Flush 1Parsers_File parsers.confHTTP_Server  OnHTTP_Listen  0.0.0.0HTTP_PORT    3302[INPUT]Name         tailTag          regex-fluentDB           /var/log/regex-fluent.dbRead_from_Head truePath  /var/log/test.logPath_Key  pod_log_path[OUTPUT]Name        forwardMatch       *Host        fluentd-service.logging.svcPort        24224Retry_Limit 5

Fluent-Bit的DS配置

注意:日志目錄的掛載

apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluent-bitnamespace: logginglabels:k8s-app: fluent-bit-loggingversion: v1kubernetes.io/cluster-service: "true"
spec:selector:matchLabels:k8s-app: fluent-bit-loggingtemplate:metadata:labels:k8s-app: fluent-bit-loggingversion: v1kubernetes.io/cluster-service: "true"annotations:prometheus.io/scrape: "true"prometheus.io/port: "2020"prometheus.io/path: /api/v1/metrics/prometheusspec:nodeSelector:zk-app: appcontainers:- name: fluent-bitimage: registry.cn-hangzhou.aliyuncs.com/ali_cloud_images/fluent-bit:1.9imagePullPolicy: Neverports:- containerPort: 2020volumeMounts:- name: varlogmountPath: /var/log- name: varlibdockercontainersmountPath: /var/lib/docker/containersreadOnly: true- name: fluent-bit-configmountPath: /fluent-bit/etc/- name: dbmountPath: /tail-db/terminationGracePeriodSeconds: 10volumes:- name: varloghostPath:path: /var/log- name: varlibdockercontainershostPath:path: /var/lib/docker/containers- name: fluent-bit-configconfigMap:name: fluent-bit-config- name: dbhostPath:path: /home/chb/hundun/fluent-bittype: DirectoryserviceAccountName: fluent-bittolerations:- key: node-role.kubernetes.io/masteroperator: Existseffect: NoSchedule- operator: "Exists"effect: "NoExecute"- operator: "Exists"effect: "NoSchedule"

Fluentd的CM配置

 fluent.conf: |-<source>@type forwardport 24224bind 0.0.0.0tag test</source><match test>@type kafka2brokers 192.168.123.100:9092  # Kafka broker 地址topic fluentd_topic<format>@type json</format></match>

Fluentd的DS配置

注意:端口的暴露

apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluentd-kafkanamespace: logginglabels:k8s-app: fluentd-kafkakubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcile
spec:selector:matchLabels:k8s-app: fluentd-kafkatemplate:metadata:labels:k8s-app: fluentd-kafkakubernetes.io/cluster-service: "true"# 此注釋確保如果節點被驅逐,fluentd不會被驅逐,支持關鍵的基于 pod 注釋的優先級方案。annotations:scheduler.alpha.kubernetes.io/critical-pod: ''spec:initContainers:- name: init-permissionimage: busyboximagePullPolicy: Nevercommand: ["sh", "-c", "mkdir -p /var/log/td-agent && chown -R 1000:1000 /var/log/td-agent"]nodeSelector:zk-app: appserviceAccountName: fluentd-kafkacontainers:- name: fluentd-kafkaimage: fluentd-kafka:latestimagePullPolicy: NeversecurityContext:runAsUser: 0ports: - containerPort: 24224name: forward-portvolumeMounts:- name: fluentd-config-volumemountPath: /opt/bitnami/fluentd/conf/fluentd.confsubPath: fluent.conf- name: varlogmountPath: /var/log- name: posmountPath: /var/log/td-agentvolumes:- name: fluentd-config-volumeconfigMap:name: fluentd-config- name: varloghostPath:path: /home/chb/test- name: poshostPath:path: /var/log/td-agentimagePullSecrets:- name: default-secrettolerations:- operator: ExiststerminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:name: fluentd-servicenamespace: logging
spec:selector:k8s-app: fluentd-kafkaports:- protocol: TCPport: 24224targetPort: 24224clusterIP: None

Kafka查詢結果

在這里插入圖片描述

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

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

相關文章

正則表達式(Regular Expression,簡稱 Regex)

一、5w2h&#xff08;七問法&#xff09;分析正則表達式 是的&#xff0c;5W2H 完全可以應用于研究 正則表達式&#xff08;Regular Expressions&#xff09;。通過回答 5W2H 的七個問題&#xff0c;我們可以全面理解正則表達式的定義、用途、使用方法、適用場景等&#xff0c…

爬蟲獲取1688關鍵字搜索接口的實戰指南

在當今電商行業競爭激烈的環境下&#xff0c;數據的重要性不言而喻。1688作為國內領先的B2B電商平臺&#xff0c;擁有海量的商品信息&#xff0c;這些數據對于商家的市場分析、選品決策、價格策略制定等都有著重要的價值。本文將詳細介紹如何通過爬蟲技術獲取1688關鍵字搜索接口…

如何快速解決django存儲session變量時出現的django.db.utils.DatabaseError錯誤

我們在學習django進行web編程的時候&#xff0c;有時需要將一些全局變量信息存儲在session中&#xff0c;但使用過程中&#xff0c;卻發現會引起數據庫的報錯。通過查看django源碼信息&#xff0c;發現其對session信息進行了ORM映射&#xff0c;如果數據庫中不存在對應的表信息…

C語言復習--assert斷言

assert.h 頭?件定義了宏 assert() &#xff0c;?于在運?時確保程序符合指定條件&#xff0c;如果不符合&#xff0c;就報錯終止運行。這個宏常常被稱為“斷?”。 assert(p ! NULL); 代碼在程序運?到這??語句時&#xff0c;驗證變量 p 是否等于 NULL 。如果確實不等于 NU…

STL新增內容

文章目錄 C11 中的 STL 新增內容容器算法 C14 中的 STL 新增內容容器算法 C17 中的 STL 新增內容容器算法 C20 中的 STL 新增內容容器算法 C11 中的 STL 新增內容 容器 std::array&#xff1a;這是一個固定大小的數組容器&#xff0c;和原生數組類似&#xff0c;但具備更好的…

C#測試Excel開源組件ExcelDataReader

使用微軟的com組件Microsoft.office.Interop.Excel讀寫Excel文件雖然可用&#xff0c;但是列多、行多的時候速度很慢&#xff0c;之前測試過Sylvan.Data.Excel包的用法&#xff0c;如果只是讀取Excel文件內容的話&#xff0c;還可以使用ExcelDataReader包&#xff0c;后者是C#開…

位置編碼匯總 # 持續更新

看了那么多還沒有講特別好的&#xff0c;GPT老師講的不錯關于三角函數編碼。 一、 手撕transformer常用三角位置編碼 GPT說&#xff1a;“低維度的編碼&#xff08;例如&#xff0c;第一個維度&#xff09;可以捕捉到大的位置差異&#xff0c;而高維度的編碼則可以捕捉到小的細…

Java 模塊系統深度解析

Java 模塊系統深度解析 Java 模塊系統&#xff08;Java Platform Module System, JPMS&#xff09;是 Java 9 引入的一項重要特性&#xff0c;它從根本上改變了 Java 應用程序的打包和依賴管理方式。本文將全面介紹 Java 模塊系統的核心概念、優勢及實際應用。 一、為什么需要…

藍橋杯杯賽-日期模擬

知識點 處理日期 1. 按天枚舉日期&#xff1a;逐天遍歷起始日期到結束日期范圍內的每個日期。 2. 處理閏年&#xff1a;正確判斷閏年條件。閏年定義為&#xff1a;年份 滿足以下任意一個條件&#xff1a;(閏年的2月只有29天) 滿足下面一個條件就是閏年 1> 是 400 的倍數…

.Net中對稱加密的實現

常見對稱加密算法及優缺點 1. DES&#xff08;Data Encryption Standard&#xff09; 優點&#xff1a;是最早被廣泛應用的加密算法&#xff0c;算法公開&#xff0c;實現簡單&#xff0c;效率較高。缺點&#xff1a;密鑰長度較短&#xff08;56 位&#xff09;&#xff0c;在…

SQLMesh調度系統深度解析:內置調度與Airflow集成實踐

本文系統解析SQLMesh的兩種核心調度方案&#xff1a;內置調度器與Apache Airflow集成。通過對比兩者的適用場景、架構設計和操作流程&#xff0c;為企業構建可靠的數據分析流水線提供技術參考。重點內容包括&#xff1a; 內置調度器的輕量級部署與性能優化策略Airflow集成的端到…

centos線程數查看

查看當前最大支持的線程數 cat /proc/sys/kernel/threads-max當前用戶進程可以創建的最大線程數&#xff08;包括子進程&#xff09; [rootlocalhost tmp]# ulimit -u得到當前實際的線程數 [rootlocalhost tmp]# ps -eLf | wc -l統計每個進程的總線程數前20的數據 [rootloc…

【大模型】視覺語言模型:Qwen2.5-VL的使用

官方github地址&#xff1a;https://github.com/QwenLM/Qwen2.5-VL 目錄 Qwen家族的最新成員&#xff1a;Qwen2.5-VL 主要增強功能 模型架構更新 快速開始 使用Transformers聊天 Docker Qwen家族的最新成員&#xff1a;Qwen2.5-VL 主要增強功能 強大的文檔解析功能&am…

HDMI接口設計

1. HDMI簡介 HDMI(High Definition Multimedia Interface)高清多媒體接口,是首個支持在單線纜上傳輸,不經過壓縮的全數字高清晰度、多聲道音頻和智能格式與控制命令數據的數字接口。這個接口可以同時傳輸視頻信號、音頻信號和控制信號。 從上圖里面可以看到HDMI有3組數據信號…

C/C++ JSON 庫綜合對比及應用案例(六)

第六部分&#xff1a;C/C JSON 庫綜合對比及應用案例 &#x1f4e2; 快速掌握 JSON&#xff01;文章 視頻雙管齊下 &#x1f680; 如果你覺得閱讀文章太慢&#xff0c;或者更喜歡 邊看邊學 的方式&#xff0c;不妨直接觀看我錄制的 JSON 課程視頻&#xff01;&#x1f3ac; …

LXC 導入(Rockylinux,almalinux,oraclelunx,debian,ubuntu,openEuler,kail,opensuse)

前提要求 ubuntu下安裝lxd 參考Rockylinux下安裝lxd 參考LXC 源替換參考LXC 容器端口發布參考LXC webui 管理<

Spring MVC 頁面跳轉方案與區別

SpringMVC 的頁面跳轉方案主要分為 ?轉發&#xff08;Forward&#xff09;? 和 ?重定向&#xff08;Redirect&#xff09;? 兩類&#xff0c;具體實現方式和區別如下&#xff1a; 一、頁面跳轉方案 1. ?轉發&#xff08;Forward&#xff09;? 默認方式?&#xff1a;直…

基于Spring Boot的輕型卡車零部件銷售平臺的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

高性能計算面經

高性能計算面經 C八股文真景一面涼經自我介紹&#xff0c;介紹一下你做過的加速的模塊(疊噪&#xff0c;噪聲跟原圖有什么關系&#xff1f;)OpenGL和OpenCL有什么區別&#xff1f;**1. 核心用途****2. 編程模型****3. 硬件抽象****4. API設計****5. 典型應用場景****6. 互操作性…

青少年編程與數學 02-014 高中數學知識點 07課題、專業相關性分析

青少年編程與數學 02-014 高中數學知識點 07課題、專業相關性分析 一、函數與微積分1. 函數與初等函數2. 導數與優化 二、概率與統計1. 概率基礎2. 統計推斷3. 隨機變量與分布 三、幾何與代數1. 向量與矩陣運算2. 復數與坐標變換 四、數學建模與算法思維1. 數學建模2. 算法邏輯…