瞭解代理程式組態檔案

記載代理程式使用基於 Fluent Bit 的設定檔來確定傳入資料在路由之前如何處理。

配置代理程式的設定檔時,請考慮以下資訊:

  • 此架構分為多個部分。
  • 您可以使用 Fluent Bit 命令來簡化設定檔並使其更具可讀性。
  • 您可以透過設定 shell 環境變數或使用 @SET 命令來公開配置變數。

區段

Fluent Bit 配置的架構分為多個部分。

  • 節由括號內的名稱定義。
  • 您可以配置四種類型的部分:ServiceInputFilterOutput
  • 一個部分可以包含 1 個或多個條目。
  • 條目由包含鍵和值的一行文字定義。 鍵必須縮排並且必須包含以斷線結尾的值。 考慮使用四個空格的縮排。

下圖顯示了各部分的應用順序:

Fluent Bit 各節的處理順序
Fluent Bit 各節的處理順序

服務部分

您可以配置 SERVICE 部分來定義服務的全域屬性。

下表列出了您可以在 SERVICE 部分中定義的一些鍵:

服務凱斯
索引鍵 說明 預設值
flush 設定以seconds.nanoseconds為單位的時間,以刷新輸入插件透過輸出插件攝取的記錄。 5
log_file 其他日誌檔案的絕對路徑。 預設情況下,日誌會重新導向到標準錯誤介面 (stderr)。
log_level 設定日誌記錄詳細等級。 有效值為:offerrorwarninfodebugtrace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 errorwarninginfodebug info
parsers_file 解析器設定檔的路徑。 一個節內可以定義多個 Parsers_File 條目。

有關支援的附加鍵的更多信息,請參閱 服務部分屬性

例如,範例 SERVICE 部分可以如下所示:

[SERVICE]
      Flush                   1
      Log_Level               info
      Daemon                  off
      Parsers_File            parsers.conf
      plug-ins_File           plug-ins.conf
      HTTP_Server             On
      HTTP_Listen             0.0.0.0
      HTTP_Port               8081
      Health_Check            On
      HC_Errors_Count         1
      HC_Retry_Failure_Count  1
      HC_Period               30
      storage.path            /fluent-bit/cache
      storage.max_chunks_up   192
      storage.metrics         On

輸入部分

您可以配置 INPUT 部分來定義 Fluent Bit 可以收集資料的來源。

下表概述了您可以為 INPUT 部分配置的鍵:

輸入鍵
索引鍵 說明 狀態
Name 輸入插件的名稱。 確定 Fluent Bit 應載入哪個輸入插件。 必要
Tag 與來自該插件的所有記錄關聯的標籤。 除提供動態標籤的輸入轉送外掛外,所有外掛程式都是必需的。
Log_Level 設定日誌記錄詳細等級。 有效值為:offerrorwarninfodebugtrace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 errorwarninginfodebug。 如果未設置,則該值預設為 SERVICE 部分的 Log_Level 值。 選用
Path 設定讀取記錄的位置。

對於 Kubernetes 日誌,預設情況下 IBM Cloud Logs 記載代理程式 只從 /var/log/containers/*.log 目錄收集日誌。 如果您要收集 /var/log 下所有子目錄的日誌,您需要在 Path 參數中加入 /var/log/**/*.log

選用

有關 INPUT 插件的更多信息,請參閱 輸入插件

除了表中列出的配置鍵之外,每個 INPUT 插件都有自己的配置鍵。

例如,範例 INPUT 部分可能如下:

[INPUT]
    # Comment
    Name tail
    Tag  kube.*
    log_level info

過濾器部分

您可以配置 FILTER 部分來轉換與 FILTER 插件相關的數據,然後再將其發送到目的地。

下表概述了您可以為 FILTER 部分配置的鍵:

過濾鍵
索引鍵 說明 狀態
Name 過濾器插件的名稱。 確定 Fluent Bit 應載入哪個過濾器插件。 必要
Match 用於匹配傳入記錄上定義的標籤的模式。Match 區分大小寫。 您可以使用星號符號 * 作為通配符。 必要 [*]
Match_Regex 用於匹配傳入記錄上定義的標籤的正規表示式。 使用此選項可以使用完整的正規表示式語法。 必要 [*]
Log_Level 設定日誌記錄詳細等級。 有效值為:offerrorwarninfodebugtrace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 errorwarninginfodebug。 如果未設置,則該值預設為 SERVICE 部分的 Log_Level 值。 選用

[*] 您可以配置 Match 鍵、Match_Regex 鍵或兩者。 您必須始終配置一個。 如果兩者都配置,Match_Regex 優先。

例如,範例 FILTER 部分可以如下所示:

[FILTER]
    Name  kubernetes
    Match kube.*
    log_level info

輸出部分

您可以配置 OUTPUT 部分來定義 Fluent Bit 在標籤匹配後應將資料傳送到的目的地。

Fluent Bit 最多可以路由 256 OUTPUT 插件。

下表概述了您可以為 OUTPUT 部分配置的鍵:

輸出鍵
索引鍵 說明 狀態
Name 輸出插件的名稱。 確定 Fluent Bit 應載入哪個輸出插件。 必要
Match 用於匹配傳入記錄上定義的標籤的模式。Match 區分大小寫。 您可以使用星號符號 * 作為通配符。 必要 [*]
Match_Regex 用於匹配傳入記錄上定義的標籤的正規表示式。 使用此選項可以使用完整的正規表示式語法。 必要 [*]
Log_Level 設定日誌記錄詳細等級。 有效值為:offerrorwarninfodebugtrace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 errorwarninginfodebug。 如果未設置,則該值預設為 SERVICE 部分的 Log_Level 值。 選用

[*] 您可以配置 Match 鍵、Match_Regex 鍵或兩者。 您必須始終配置一個。 如果兩者都配置,Match_Regex 優先。

例如,logger-icl-output-plugin 的OUTPUT部分類似以下內容:

    [OUTPUT]
        Name logger-icl-output-plugin
        Id icl-output-plugin
        Match *
        Retry_Limit 8

        # Connection
        Target_Host REPLACE_INGESTER_HOST
        Target_Port REPLACE_INGESTER_PORT
        Target_Path /logs/v1/singles

        # Authentication
        Authentication_Mode REPLACE_IAM_AUTH_MODE
        IAM_Environment REPLACE_IAM_ENVIRONMENT
        REPLACE_TRUSTED_PROFILE_ID
        CR_Token_Mount_Path /var/run/secrets/tokens/vault-token

        # Logging
        Logging_Level info

        # Buffer storage
        storage.total_limit_size 5G

logger-icl-output-plugin 使用 Fluent Bit 內建健康檢查。 當插件拋出至少一個錯誤或在 30 秒內用盡重試限制時,Pod 被視為不健康。

變數

在 Fluent Bit 中,您可以使用環境變數來設定 Fluent Bit 設定檔中定義的鍵的值。

變數區分大小寫。

使用以下格式來表示變數:

${MY_VARIABLE}

要定義環境變量,可以使用 bash 語法。

若要定義環境變量,您可以選擇以下任一選項:

  • 開啟終端機並使用匯出命令設定環境變數。

    例如,您可以如下定義一個:$ export MY_VARIABLE=stdout

    當 Fluent Bit 啟動時,設定讀取器將尋找名稱為 MY_VARIABLE 環境變數。

  • 當 Fluent Bit 使用官方軟體包在 systemd 下運作時,請在以下任意檔案中設定環境變數:/etc/default/fluent-bit (基於Debian的系統)或 /etc/sysconfig/fluent-bit (其他系統)。

例如,打開終端機並設定環境變數:$ export MY_OUTPUT=stderr 然後,建立以下設定檔:

[INPUT]
    Name              tail
    Tag               kube.*

[OUTPUT]
    Name  ${MY_OUTPUT}
    Match kube.*

定義為使用環境變數 ${MY_OUTPUT} 設定的鍵名稱設定為 stderr。

指令

您可以使用 Fluent Bit 命令來簡化設定檔並使其更具可讀性。

下表概述了您可以使用的命令:

支援的指令
指令 說明 範例
@INCLUDE 包括設定檔。 @INCLUDE <FILE>
@SET 設定配置變數。 @SET KEY=VAL

INCLUDE 指令

為了避免複雜的長配置文件,您可以使用 @INCLUDE 命令將主 Fluent Bit 設定檔拆分為多個檔案。 @INCLUDE 命令允許您包含外部文件。

您可以透過新增符合以下格式的條目來包含其他設定檔:

@INCLUDE <FILE>

使用 @INCLUDE 指令時請考慮以下資訊:

  • 您可以在配置行的左上角使用 @INCLUDE 命令。
  • 您不能在節中包含 @INCLUDE 命令。
  • 您可以使用通配符 ( * ) 來包含多個檔案。 例如,您可以使用:@INCLUDE input_*.conf
  • 當您使用萬用字元 ( * ) 包含多個檔案時,與通配符相符的檔案將不排序地包含在內。 如果需要保留文件之間的順序,則必須以所需的順序明確包含文件。
  • 您定義的所有路徑都將從根設定檔中作為相對路徑讀取。

例如,

@INCLUDE somefile.conf

SET 指令

您可以使用 @SET 命令將配置變數注入 Fluent Bit 配置中。

  • 您可以在每行的根級別使用 @SET 命令。
  • 您不能在節內使用 @SET 指令。

例如,您可以設定以下變數並使用它們來配置不同的鍵:

@SET my_input=abc
@SET my_output=def

[SERVICE]
    Flush 1

[INPUT]
    Name ${my_input}

[OUTPUT]
    Name ${my_output}