瞭解代理程式組態檔案
記載代理程式使用基於 Fluent Bit 的設定檔來確定傳入資料在路由之前如何處理。
配置代理程式的設定檔時,請考慮以下資訊:
- 此架構分為多個部分。
- 您可以使用 Fluent Bit 命令來簡化設定檔並使其更具可讀性。
- 您可以透過設定 shell 環境變數或使用 @SET 命令來公開配置變數。
區段
Fluent Bit 配置的架構分為多個部分。
- 節由括號內的名稱定義。
- 您可以配置四種類型的部分:
Service、Input、Filter和Output。 - 一個部分可以包含 1 個或多個條目。
- 條目由包含鍵和值的一行文字定義。 鍵必須縮排並且必須包含以斷線結尾的值。 考慮使用四個空格的縮排。
下圖顯示了各部分的應用順序:
服務部分
您可以配置 SERVICE 部分來定義服務的全域屬性。
下表列出了您可以在 SERVICE 部分中定義的一些鍵:
| 索引鍵 | 說明 | 預設值 |
|---|---|---|
flush |
設定以seconds.nanoseconds為單位的時間,以刷新輸入插件透過輸出插件攝取的記錄。 | 5 |
log_file |
其他日誌檔案的絕對路徑。 | 預設情況下,日誌會重新導向到標準錯誤介面 (stderr)。 |
log_level |
設定日誌記錄詳細等級。 有效值為:off、error、warn、info、debug 和 trace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 error、warning、info 和 debug。 |
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 |
設定日誌記錄詳細等級。 有效值為:off、error、warn、info、debug 和 trace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 error、warning、info 和 debug。 如果未設置,則該值預設為 SERVICE 部分的 Log_Level 值。 |
選用 |
Path |
設定讀取記錄的位置。
對於 Kubernetes 日誌,預設情況下 IBM Cloud Logs 記載代理程式 只從 |
選用 |
有關 INPUT 插件的更多信息,請參閱 輸入插件。
除了表中列出的配置鍵之外,每個 INPUT 插件都有自己的配置鍵。
例如,範例 INPUT 部分可能如下:
[INPUT]
# Comment
Name tail
Tag kube.*
log_level info
過濾器部分
您可以配置 FILTER 部分來轉換與 FILTER 插件相關的數據,然後再將其發送到目的地。
下表概述了您可以為 FILTER 部分配置的鍵:
| 索引鍵 | 說明 | 狀態 |
|---|---|---|
Name |
過濾器插件的名稱。 確定 Fluent Bit 應載入哪個過濾器插件。 | 必要 |
Match |
用於匹配傳入記錄上定義的標籤的模式。Match 區分大小寫。 您可以使用星號符號 * 作為通配符。 |
必要 [*] |
Match_Regex |
用於匹配傳入記錄上定義的標籤的正規表示式。 使用此選項可以使用完整的正規表示式語法。 | 必要 [*] |
Log_Level |
設定日誌記錄詳細等級。 有效值為:off、error、warn、info、debug 和 trace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 error、warning、info 和 debug。 如果未設置,則該值預設為 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 |
設定日誌記錄詳細等級。 有效值為:off、error、warn、info、debug 和 trace。 請注意,值是累積的。 例如,如果設定了 debug,則它將包括 error、warning、info 和 debug。 如果未設置,則該值預設為 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}