全部產品
Search
文件中心

Simple Log Service:資料解析類外掛程式

更新時間:Nov 06, 2025

資料解析類外掛程式用於將原始日誌結構化為索引值對或結構化資料。

資料解析效果樣本

表格展示該原始日誌在分別使用正則解析外掛程式與不使用解析外掛程式的情況下,儲存到Log Service後的資料結構。使用解析外掛程式能夠結構化資料,為後續查詢提供便利。

原始日誌

不使用解析外掛程式

使用正則解析外掛程式

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"

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:(\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]+)"\s"([^"]+).*

body_bytes_sent: 41
http_referer: http://www.example.com/wp-admin/post-new.php?post_type=page
http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; ×64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
remote_addr: 127.0.0.1
remote_user: -
request_method: GET
request_protocol: HTTP/1.1
request_uri: /wp-admin/admin-ajax.php?action=rest-nonce
status: 200
time_local: 16/Aug/2024:14:37:52 +0800

資料解析外掛程式概覽

Log Service提供以下多種類型的資料解析外掛程式,請按需要進行選擇。

外掛程式名稱

類型

功能說明

正則解析

原生

使用Regex提取欄位並轉為索引值對

JSON解析

原生

解析JSON格式日誌為索引值對

分隔字元模式解析

原生

按分隔字元結構化日誌

Nginx模式解析

原生

解析Nginx訪問日誌

Apache模式解析

原生

解析Apache訪問日誌

IIS模式解析

原生

解析IIS訪問日誌

功能入口

當您需要使用Logtail外掛程式處理日誌時,您可以在建立或修改Logtail配置時,添加外掛程式。具體操作,請參見原生與拓展處理外掛程式使用說明

正則解析外掛程式

正則解析外掛程式支援通過Regex提取日誌欄位,並將日誌解析為索引值對形式。

配置說明

參數名稱

說明

原始欄位

解析日誌前,用於存放日誌內容的原始欄位,預設值為content。

Regex

用於匹配日誌的Regex。

  • 當您在處理配置中配置了日誌範例後,在正則解析處理外掛程式中會出現您配置的日誌範例,並支援自動和手動輸入行首Regex的方式產生Regex。

    • 單擊自動產生Regex,然後在日誌範例文字框中,劃選需提取的日誌內容,單擊產生正則Simple Log Service會根據您劃選的內容,產生Regex。

    • 單擊手動輸入Regex,輸入Regex。配置完成後,單擊驗證即可驗證您輸入的Regex是否可以解析、提取目標日誌內容。更多資訊,請參見如何調試Regex

  • 當您未配置日誌範例時,需根據實際日誌輸入Regex。

日誌提取欄位

為提取的日誌內容(Value),設定對應的欄位名(Key)。

解析失敗時保留原始欄位

選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。

解析成功時保留原始欄位

選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。

重新命名的原始欄位

選中解析失敗時保留原始欄位解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。

配置樣本

  • 輸入日誌

    127.0.0.1 - - [16/Oct/2023:12:36:49 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
  • 外掛程式配置

    其中,Regex為(\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)(\s\d+)[^-]+([^"]+)"\s"([^"]+).*

    image.png

  • 解析結果image.png

JSON解析外掛程式

JSON解析外掛程式支援將Object類型的JSON日誌結構化,解析為索引值對形式。

使用限制

JSON日誌構建於兩種結構,包括Object類型(索引值對的集合)和Array類型(值的有序列表)。JSON解析外掛程式支援解析Object類型的JSON日誌,提取為索引值對,即提取Object首層的鍵作為Key,Object首層的值作為Value。但不支援解析Array類型的JSON日誌。

配置說明

參數名稱

說明

原始欄位

解析日誌前,用於存放日誌內容的原始欄位,預設值為content。

解析失敗時保留原始欄位

選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。

解析成功時保留原始欄位

選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。

重新命名的原始欄位

選中解析失敗時保留原始欄位解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。

配置樣本

  • 輸入日誌

    {"url": "POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1", "ip": "10.200.98.220", "user-agent": "aliyun-sdk-java", "request": {"status": "200", "latency": "18204"}, "time": "05/Jan/2020:13:30:28"}
  • Logtail外掛程式配置image.png

  • 解析結果image.png

分隔字元模式解析

分隔字元模式解析外掛程式支援通過分隔字元將日誌內容結構化,解析為多個索引值對形式。

配置說明

參數

描述

原始欄位

解析日誌前,用於存放日誌內容的原始欄位,預設值為content。

分隔字元

請根據您的日誌內容選擇正確的分隔字元,例如豎線(|)。

說明

指定分隔字元為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為0x<不可見字元在ASCII碼中對應的十六進位數>。例如ASCII碼中排行為1的不可見字元為0x01

引用符

當日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。請根據您的日誌格式選擇正確的引用符。

說明

指定引用符為不可見字元時,您需要尋找不可見字元在ASCII碼中對應的十六進位數,輸入的格式為0x<不可見字元在ASCII碼中對應的十六進位數>。例如ASCII碼中排行為1的不可見字元為0x01

日誌抽取欄位

  • 當您配置了日誌範例時,Simple Log Service會根據您輸入的日誌範例及選擇的分隔字元提取日誌內容,並將其定義為Value,您需要為各個Value指定對應的Key。

  • 當您未配置日誌範例時,無Value列表,您需要根據實際日誌及分隔字元情況,輸入對應的Key。

Key只能包括字母、數字或底線(_),且只能以字母或底線(_)開頭。最大長度為128位元組。

允許部分欄位

如果日誌中實際提取出的Value數量少於Key數量,是否上傳日誌到Simple Log Service。選中允許部分欄位表示上傳。

例如日誌為11|22|33|44,分隔字元為豎線(|),Key為ABCDE

  • 如果選中允許部分欄位,則E欄位的Value為空白,該日誌將被上傳到Simple Log Service

  • 如果未選中允許部分欄位,該日誌會被丟棄。

    說明

    Linux Logtail 1.0.28及以上版本或Window Logtail 1.0.28.0及以上版本支援配置分隔字元模式的允許部分欄位參數。

處理超出欄位方式

日誌中提取的Value數量大於Key數量時的處理方法。

  • 展開:保留多餘的Value內容,分別添加到__column$i__格式的欄位中,其中$i代表多餘欄位序號,從0開始計數。例如__column0____column1__

  • 保留:保留多餘的Value內容,並整體添加到名為__column0__的欄位中。

  • 丟棄:丟棄多餘的Value內容。

解析失敗時保留原始欄位

選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。

解析成功時保留原始欄位

選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。

重新命名的原始欄位

選中解析失敗時保留原始欄位解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。

附錄

分隔字元模式解析外掛程式支援單字元分隔字元和多字元分隔字元。

單字元

單字元的日誌樣本如下所示。

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個欄位:1999ChevyVenture "Extended Edition, Very Large"、空欄位和5000.00

  • 引用符:日誌欄位內容中包含分隔字元時,需要指定引用符進行包裹,被引用符包裹的內容會被Simple Log Service解析為一個完整欄位。

    引用符可以設定為定位字元(\t)、豎線(|)、空格、半形逗號(,)、半形分號(;)和不可見字元等單字元。

    例如分隔字元為半形逗號(,),引用符為雙引號("),日誌為1997,Ford,E350,"ac, abs, moon",3000.00,該日誌可以被解析為5個欄位:1997FordE350ac, abs, moon3000.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個欄位:1997FordE350ac&abs&moon3000.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開頭。例如:

log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$request_time $request_length '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent"';

原始欄位

解析日誌前,用於存放日誌內容的原始欄位,預設值為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\"" combined
    • common格式

      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開頭。

  • 當配置日誌格式commoncombined時,此處會自動填滿對應格式的配置欄位,請確認是否和Apache設定檔中定義的格式一致。

  • 當配置日誌格式自訂時,請根據實際情況填寫,例如LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized

原始欄位

解析日誌前,用於存放日誌內容的原始欄位,預設值為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:Microsoft IIS記錄檔格式。

  • NCSA:NCSA公用記錄檔格式。

  • W3C:W3C擴充記錄檔格式。

IIS配置欄位

配置IIS配置欄位,具體說明如下:

  • 日誌格式為IIS或NCSA時,Log Service已預設設定了IIS配置欄位。

  • 日誌格式為W3C日誌時,設定為IIS設定檔中logExtFileFlags參數中的內容,例如:

    logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
    • IIS5設定檔預設路徑:C:\WINNT\system32\inetsrv\MetaBase.bin

    • IIS6設定檔預設路徑:C:\WINDOWS\system32\inetsrv\MetaBase.xml

    • IIS7設定檔預設路徑:C:\Windows\System32\inetsrv\config\applicationHost.config

原始欄位

解析日誌前,用於存放日誌內容的原始欄位,預設值為content。

Regex

用於提取IIS日誌的Regex。Simple Log Service會根據IIS配置欄位中的內容自動產生該Regex。

日誌提取欄位

根據IIS配置欄位中的內容自動組建記錄檔欄位(Key)。

解析失敗時保留原始欄位

選中解析失敗時保留原始欄位,則解析失敗時,將保留原始欄位。

解析成功時保留原始欄位

選中解析成功時保留原始欄位,則解析成功時,將保留原始欄位。

重新命名的原始欄位

選中解析失敗時保留原始欄位解析成功時保留原始欄位後,可重新命名原始欄位名,用於存放原始的日誌內容。

相關文檔