您可以為產生具名欄位的所有剖析器設定一般選項。
欄位名稱的保留字
欄位名稱受到限制。下列名稱已保留,無法做為欄位名稱。
- event_type
- hostname
- source
- text
常用的剖析器選項
下表中的選項可用於所有支援的剖析器。
| 選項 | 說明 |
|---|---|
| base_parser | 此自訂剖析器延伸的基礎剖析器的名稱。它可以是內建剖析器名稱或其他自訂剖析器名稱。此組態金鑰為強制項目。 |
| field_decoder |
指定為 JSON 字串的巢狀剖析器。索引鍵是要套用巢狀剖析器的欄位名稱,值是要用於該欄位的剖析器名稱。每個巢狀剖析器都會套用至基礎剖析器解碼的適當欄位。當欄位的值為複雜值 (例如時間戳記) 時,欄位解碼器十分有用。
field_decoder 選項也支援使用更複雜的 JSON 物件來作為引數,這可讓您對特定欄位值使用條件,條件經檢查沒有問題後再套用巢狀剖析器。
備註: 如需使用方式和條件式組態的詳細資訊,請參閱下方的〈field_decoder 選項的條件式組態〉一節。
|
| field_rename | 重新命名擷取的欄位。請使用索引鍵是欄位的原始名稱、值是新欄位名稱的 JSON 字串。field_decoder 選項一律會在 field_rename 之前套用。INI 檔案中這些選項的順序不重要。為了充分釐清,請先指定 field_decoder。 |
| next_parser | 下一個要執行的剖析器的名稱。允許多個剖析器針對相同的輸入依序執行。
備註: 剖析器將處理所有由
next_parser 關鍵字定義的後續剖析器,並且可能取代已由之前的剖析器擷取的欄位值。
|
| exclude_fields | 在傳遞至伺服器之前,要從事件移除之以分號分隔的欄位名稱清單。在執行事件篩選之前會先移除欄位名稱,如此,您在剖析期間排除的欄位將無法在篩選條件中使用。 |
| debug | 允許對特定剖析器偵錯的 [是] 或 [否] 選項。啟用偵錯後,剖析器將詳細記錄其接收的輸入、執行的作業及產生的結果。選項會依區段來套用,也就是,僅套用至特定區段定義的剖析器。 對於剖析器,偵錯預設值為 debug=no。 |
field_decoder 選項的條件式組態
對於具有相同通用格式但在特定欄位值方面存在極大差異的記錄 (例如,具有 info 和 error 嚴重性的記錄),您可以使用條件式巢狀剖析器,以減少對已剖析記錄的對應欄位套用不必要的剖析器。
例如,使用下列記錄時:
2019-03-29T11:00:54.858Z host-FQDN Hostd: error hostd[2099230] [Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user] AdapterServer caught exception: SSLExceptionE(SSL Exception: error:140000DB:SSL routines:SSL routines:short read: The connection was closed by the remote end during handshake.)
2019-03-29T11:00:55.477Z host-FQDN Hostd: info hostd[6D620B70] ['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart --
您可以使用下列組態來剖析這些記錄:
[parser|clf_parser]
base_parser=clf
format=%t %{generator_host}i %i: %{log_severity}i %i[%{thread_id}i]%M
field_decoder={"log_message" : {"log_severity" : {"error" : "error_parser", "info" : "info_parser"}}}
exclude_fields=log_message
[parser|info_parser]
base_parser=clf
format=[%{common_info}i] [%{process}i] %M
field_rename={"log_message" : "info_log_content"}
[parser|error_parser]
base_parser=clf
format=[%{common_info}i] %{exception_handler}i %i:%{exception_type}i:%i:%{error_id}i:%i:%i:%i: %M
field_rename={"log_message" : "exception_content"}
此組態會產生以下結果:
timestamp=2019-03-29T11:00:54.858000 generator_host="host-FQDN" log_severity="error" thread_id="2099230" common_info=Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user exception_handler="AdapterServer" exception_type="SSLExceptionE(SSL Exception" error_id="140000DB" exception_content="The connection was closed by the remote end during handshake.)"
此外,還會對 info 記錄剖析下列欄位:
timestamp=2019-03-29T11:00:55.477000 generator_host="host-FQDN" log_severity="info" thread_id="6D620B70" log_message="['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart --" common_info="'commonhost' opID=5759adcc-cf" process="transportConnector" info_log_content="-- FINISH task-internal-5726666 -- -- Completed connection restart --"