資料解析類外掛程式用於將原始日誌結構化為索引值對或結構化資料。
資料解析效果樣本
表格展示該原始日誌在分別使用正則解析外掛程式與不使用解析外掛程式的情況下,儲存到Log Service後的資料結構。使用解析外掛程式能夠結構化資料,為後續查詢提供便利。
原始日誌 | 不使用解析外掛程式 | 使用正則解析外掛程式 |
| Content:"127.0.0.1 - - [16/Aug/2024:14:37:52 +0800] "GET /wp-admin/admin-ajax.php?action=rest-nonce HTTP/1.1" 200 41 "http://www.example.com/wp-admin/post-new.php?post_type=page" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"" | Regex: |
資料解析外掛程式概覽
Log Service提供以下多種類型的資料解析外掛程式,請按需要進行選擇。
外掛程式名稱 | 類型 | 功能說明 |
正則解析 | 原生 | 使用Regex提取欄位並轉為索引值對 |
JSON解析 | 原生 | 解析JSON格式日誌為索引值對 |
分隔字元模式解析 | 原生 | 按分隔字元結構化日誌 |
Nginx模式解析 | 原生 | 解析Nginx訪問日誌 |
Apache模式解析 | 原生 | 解析Apache訪問日誌 |
IIS模式解析 | 原生 | 解析IIS訪問日誌 |
功能入口
當您需要使用Logtail外掛程式處理日誌時,您可以在建立或修改Logtail配置時,添加外掛程式。具體操作,請參見原生與拓展處理外掛程式使用說明。
正則解析外掛程式
正則解析外掛程式支援通過Regex提取日誌欄位,並將日誌解析為索引值對形式。
配置說明
參數名稱 | 說明 |
原始欄位 | 解析日誌前,用於存放日誌內容的原始欄位,預設值為content。 |
Regex | 用於匹配日誌的Regex。
|
日誌提取欄位 | 為提取的日誌內容(Value),設定對應的欄位名(Key)。 |
解析失敗時保留原始欄位 | 選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。 |
解析成功時保留原始欄位 | 選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。 |
重新命名的原始欄位 | 選中解析失敗時保留原始欄位或解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。 |
JSON解析外掛程式
JSON解析外掛程式支援將Object類型的JSON日誌結構化,解析為索引值對形式。
使用限制
JSON日誌構建於兩種結構,包括Object類型(索引值對的集合)和Array類型(值的有序列表)。JSON解析外掛程式支援解析Object類型的JSON日誌,提取為索引值對,即提取Object首層的鍵作為Key,Object首層的值作為Value。但不支援解析Array類型的JSON日誌。
配置說明
參數名稱 | 說明 |
原始欄位 | 解析日誌前,用於存放日誌內容的原始欄位,預設值為content。 |
解析失敗時保留原始欄位 | 選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。 |
解析成功時保留原始欄位 | 選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。 |
重新命名的原始欄位 | 選中解析失敗時保留原始欄位或解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。 |
分隔字元模式解析
分隔字元模式解析外掛程式支援通過分隔字元將日誌內容結構化,解析為多個索引值對形式。
配置說明
參數 | 描述 |
原始欄位 | 解析日誌前,用於存放日誌內容的原始欄位,預設值為content。 |
分隔字元 | 請根據您的日誌內容選擇正確的分隔字元,例如豎線(|)。 說明 指定分隔字元為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為 |
引用符 | 當日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。請根據您的日誌格式選擇正確的引用符。 說明 指定引用符為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為 |
日誌抽取欄位 |
Key只能包括字母、數字或底線(_),且只能以字母或底線(_)開頭。最大長度為128位元組。 |
允許部分欄位 | 如果日誌中實際提取出的Value數量少於Key數量,是否上傳日誌到Simple Log Service。選中允許部分欄位表示上傳。 例如日誌為
|
處理超出欄位方式 | 日誌中提取的Value數量大於Key數量時的處理方法。
|
解析失敗時保留原始欄位 | 選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。 |
解析成功時保留原始欄位 | 選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。 |
重新命名的原始欄位 | 選中解析失敗時保留原始欄位或解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。 |
附錄
分隔字元模式解析外掛程式支援單字元分隔字元和多字元分隔字元。
單字元
單字元的日誌樣本如下所示。
05/May/2022:13:30:28,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",200,18204,aliyun-sdk-java
05/May/2022:13:31:23,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",401,23472,aliyun-sdk-java在單字元模式中,您需要指定分隔字元,也可以同時指定引用符。
分隔字元:通過單字元的分隔字元分割日誌,例如定位字元(\t)、豎線(|)、空格、半形逗號(,)、半形分號(;)和不可見字元等單字元。分隔字元不支援為雙引號(")。
雙引號(")可以作為引用符,在欄位邊界出現,也可以作為欄位內容出現。如果雙引號(")作為欄位內容出現,需要進行轉義,即在日誌中處理為
""。Simple Log Service解析欄位時會自動還原,將""還原為"。例如分隔字元為半形逗號(,),引用符為雙引號("),且日誌欄位內部包含雙引號(")和半形逗號(,),需要將包含半形逗號(,)的日誌欄位用引用符包裹,同時將日誌欄位中的雙引號(")轉義為""。處理後的日誌格式為:1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00,該日誌可以被解析為5個欄位:1999、Chevy、Venture "Extended Edition, Very Large"、空欄位和5000.00。引用符:日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。
引用符可以設定為定位字元(\t)、豎線(|)、空格、半形逗號(,)、半形分號(;)和不可見字元等單字元。
例如分隔字元為半形逗號(,),引用符為雙引號("),日誌為
1997,Ford,E350,"ac, abs, moon",3000.00,該日誌可以被解析為5個欄位:1997、Ford、E350、ac, abs, moon、3000.00。
多字元
多字元的日誌樣本如下所示。
05/May/2022:13:30:28&&10.200.**.**&&POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1&&200&&18204&&aliyun-sdk-java
05/May/2022:13:31:23&&10.200.**.**&&POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1&&401&&23472&&aliyun-sdk-java多字元模式中,分隔字元包括2~3個字元(例如||、&&&、^_^)。日誌解析根據分隔字元進行匹配,您無需使用引用符對日誌欄位進行包裹。
確保日誌欄位內容中不會出現分隔字元的完整匹配,否則會導致欄位誤分割。
例如分隔字元為&&,日誌為1997&&Ford&&E350&&ac&abs&moon&&3000.00會被解析為5個欄位:1997、Ford、E350、ac&abs&moon、3000.00。
Nginx模式解析
Nginx模式外掛程式支援根據log_format中的定義將日誌內容結構化,解析為多個索引值對形式。
Nginx日誌簡介
Nginx伺服器會根據log_format和access_log配置輸出對應的Nginx訪問日誌,log_format和access_log的預設值如下所示。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$request_time $request_length '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/logs/nginx/access.log main日誌欄位說明如下所示。
欄位名稱 | 說明 |
remote_addr | 用戶端IP地址。 |
remote_user | 用戶端使用者名稱。 |
time_local | 伺服器時間,前後必須加上中括弧([])。 |
request | 請求的URI和HTTP協議。 |
request_time | 整個請求的總時間,單位為秒。 |
request_length | 請求的長度,包括請求行、要求標頭和請求本文。 |
status | 請求狀態。 |
body_bytes_sent | 發送給用戶端的位元組數,不包括回應標頭的大小。 |
http_referer | URL跳轉來源。 |
http_user_agent | 用戶端瀏覽器等資訊。 |
配置說明
參數名稱 | 說明 |
NGINX日誌配置 | Nginx設定檔中的日誌配置部分,以log_format開頭。例如: |
原始欄位 | 解析日誌前,用於存放日誌內容的原始欄位,預設值為content。 |
日誌提取欄位 | 根據NGINX日誌配置自動提取對應的日誌欄位(Key)。 |
解析失敗時保留原始欄位 | 選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。 |
解析成功時保留原始欄位 | 選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。 |
重新命名的原始欄位 | 選中解析失敗時保留原始欄位或解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。 |
Apache模式解析
Apache模式解析外掛程式支援根據Apache日誌設定檔中的定義將日誌內容結構化,解析為多個索引值對形式。
Apache日誌簡介
Apache伺服器會根據Apache日誌設定檔中指定的日誌列印格式、記錄檔路徑和名稱輸出Apache日誌。例如CustomLog "/var/log/apache2/access_log" combined,表示日誌列印時使用combined格式,記錄檔路徑為/var/log/apache2/access_log。
Apache日誌格式
combined格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedcommon格式
LogFormat "%h %l %u %t \"%r\" %>s %b"自訂格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized
相關欄位說明如下所示。更多資訊,請參見mod_log_config。
欄位格式
欄位名稱
說明
%a
client_addr
用戶端IP地址。
%A
local_addr
本地IP地址。
%b
response_size_bytes
響應位元組大小,空值時顯示為短劃線(-)。
%B
response_bytes
響應位元組大小,空值時為0。
%D
request_time_msec
請求時間,單位為微秒。
%f
filename
檔案名稱。
%h
remote_addr
遠端主機名稱。
%H
request_protocol_supple
請求協議。
%I
bytes_received
伺服器接收的位元組數,需要啟用mod_logio模組。
%k
keep_alive
在此串連上處理的請求數。
%l
remote_ident
遠程主機提供的識別資訊。
%m
request_method_supple
要求方法。
%O
bytes_sent
伺服器發送的位元組數,需要啟用mod_logio模組。
%p
remote_port
伺服器連接埠號碼。
%P
child_process
子進程ID。
%q
request_query
查詢字串,如果不存在則為空白字串。
%r
request
請求內容,包括方法名、地址和HTTP協議。
%R
response_handler
服務端的處理常式類型。
%s
status
響應的HTTP狀態,初始狀態。
%>s
status
響應的HTTP狀態,最終狀態。
%t
time_local
伺服器時間。
%T
request_time_sec
請求時間,單位為秒。
%u
remote_user
用戶端使用者名稱。
%U
request_uri_supple
請求的URI路徑,不帶查詢字串。
%v
server_name
伺服器名稱。
%V
server_name_canonical
根據UseCanonicalName指令設定的伺服器名稱。
“%{User-Agent}i”
http_user_agent
用戶端資訊。
“%{Referer}i”
http_referer
來源頁。
配置說明
參數名稱 | 說明 |
日誌格式 | 根據Apache日誌設定檔中定義的日誌格式進行選擇,包括common、combined和自訂。 |
APACHE配置欄位 | Apache設定檔中的日誌配置部分,通常以LogFormat開頭。
|
原始欄位 | 解析日誌前,用於存放日誌內容的原始欄位,預設值為content。 |
Regex | 用於提取Apache日誌的Regex。Simple Log Service會根據APACHE配置欄位中的內容自動產生該Regex。 |
日誌提取欄位 | 根據APACHE配置欄位中的內容自動組建記錄檔欄位(key)。 |
解析失敗時保留原始欄位 | 選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。 |
解析成功時保留原始欄位 | 選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。 |
重新命名的原始欄位 | 選中解析失敗時保留原始欄位或解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。 |
IIS模式解析
IIS模式外掛程式支援根據IIS日誌格式定義將日誌內容結構化,解析為多個索引值對形式。
IIS日誌簡介
Windows伺服器會根據您所選擇的日誌格式(IIS、NCSA和W3C)產生IIS日誌。
日誌格式
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken欄位首碼說明
首碼
說明
s-
伺服器操作。
c-
用戶端操作。
cs-
用戶端到伺服器的操作。
sc-
伺服器到用戶端的操作。
各個欄位說明
欄位
說明
date
用戶端發送請求的日期。
time
用戶端發送請求的時間。
s-sitename
用戶端所訪問的網站的Internet服務和執行個體的號碼。
s-computername
組建記錄檔的伺服器名稱。
s-ip
組建記錄檔的伺服器的IP地址。
cs-method
請求方法,例如:GET、POST。
cs-uri-stem
URI資源,表示請求訪問的地址。
cs-uri-query
URI查詢,表示查詢HTTP請求中半形問號(?)後的資訊。
s-port
伺服器連接埠號碼。
cs-username
通過驗證的域或使用者名稱。
如果是通過身分識別驗證的使用者,格式為
域\使用者名稱。如果是匿名使用者,顯示短劃線(-)。
c-ip
訪問伺服器的用戶端真實IP地址。
cs-version
協議版本,例如:HTTP 1.0、HTTP 1.1。
cs(User-Agent)
用戶端使用的瀏覽器。
Cookie
發送或接受的Cookie內容,如果沒有Cookie,則顯示短劃線(-)。
referer
表示使用者訪問的前一個網站。
cs-host
主機資訊。
sc-status
HTTP協議返回狀態。
sc-substatus
HTTP子協議的狀態。
sc-win32-status
使用Windows術語表示的操作狀態。
sc-bytes
伺服器發送的位元組數。
cs-bytes
伺服器接收的位元組數。
time-taken
請求所花費的時間,單位:毫秒。
配置說明
參數名稱 | 說明 |
日誌格式 | 選擇您的IIS伺服器日誌採用的日誌格式,具體說明如下:
|
IIS配置欄位 | 配置IIS配置欄位,具體說明如下:
|
原始欄位 | 解析日誌前,用於存放日誌內容的原始欄位,預設值為content。 |
Regex | 用於提取IIS日誌的Regex。Simple Log Service會根據IIS配置欄位中的內容自動產生該Regex。 |
日誌提取欄位 | 根據IIS配置欄位中的內容自動組建記錄檔欄位(Key)。 |
解析失敗時保留原始欄位 | 選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。 |
解析成功時保留原始欄位 | 選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。 |
重新命名的原始欄位 | 選中解析失敗時保留原始欄位或解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。 |
相關文檔
通過API介面配置Logtail流水線:
通過控制台配置處理外掛程式:



