データ解析プラグインは、生のログをキーと値のペアまたは構造化データに構造化します。
データ解析結果の例
次の表は、正規表現解析プラグインを使用した場合と使用しない場合で Simple 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"" | 正規表現: |
データ解析プラグインの概要
Simple Log Service は、次のタイプのデータ解析プラグインを提供します。要件に基づいてプラグインを選択できます。
プラグイン | タイプ | 説明 |
正規表現解析 | ネイティブ | 正規表現を使用してフィールドを抽出し、キーと値のペアに変換します。 |
JSON 解析 | ネイティブ | JSON 形式のログをキーと値のペアに解析します。 |
区切り文字ベースの解析 | ネイティブ | 区切り文字に基づいてログを構造化します。 |
Nginx モード解析 | ネイティブ | Nginx アクセスログを解析します。 |
Apache モード解析 | ネイティブ | Apache アクセスログを解析します。 |
IIS モード解析 | ネイティブ | IIS アクセスログを解析します。 |
エントリポイント
Logtail プラグインを使用してログを処理する場合は、Logtail 構成を作成または変更するときに Logtail プラグイン構成を追加できます。詳細については、「概要」をご参照ください。
正規表現解析プラグイン
正規表現解析プラグインは、正規表現を使用してログフィールドを抽出し、ログをキーと値のペアに解析します。
構成の説明
パラメーター | 説明 |
ソースフィールド | 解析前のログコンテンツを含むソースフィールド。デフォルト値は content です。 |
正規表現 | ログに一致させるために使用される正規表現。
|
抽出されたログフィールド | 抽出された各ログ値にキーを設定します。 |
解析失敗時にソースフィールドを保持 | [解析失敗時にソースフィールドを保持] を選択すると、解析が失敗した場合でもソースフィールドは保持されます。 |
解析成功時にソースフィールドを保持 | [解析成功時にソースフィールドを保持] を選択すると、解析が成功したときにソースフィールドは保持されます。 |
名前変更されたソースフィールド | [解析失敗時にソースフィールドを保持] または [解析成功時にソースフィールドを保持] を選択した後、ソースフィールドの名前を変更できます。 |
JSON 解析プラグイン
JSON 解析プラグインは、オブジェクトタイプの JSON ログをキーと値のペアに構造化します。
制限
JSON ログは、オブジェクトタイプ (キーと値のペアのコレクション) と配列タイプ (値の順序付きリスト) の 2 つの構造で構築されます。JSON 解析プラグインは、第 1 レベルのキーと値を抽出することで、オブジェクトタイプの JSON ログを解析できます。このプラグインは、配列タイプの JSON ログの解析をサポートしていません。
パラメーター
パラメーター | 説明 |
ソースフィールド | 解析前のログコンテンツを含むソースフィールド。デフォルト値は content です。 |
解析失敗時にソースフィールドを保持 | [解析失敗時にソースフィールドを保持] を選択すると、解析が失敗した場合にソースフィールドは保持されます。 |
解析成功時にソースフィールドを保持 | [解析成功時にソースフィールドを保持] を選択すると、解析が成功したときにソースフィールドは保持されます。 |
名前変更されたソースフィールド | [解析失敗時にソースフィールドを保持] または [解析成功時にソースフィールドを保持] を選択した後、ソースフィールドの名前を変更できます。 |
区切り文字ベースの解析プラグイン
区切り文字ベースの解析プラグインは、区切り文字を使用してログコンテンツを複数のキーと値のペアに構造化します。
パラメーター
パラメーター | 説明 |
ソースフィールド | 解析前のログコンテンツを含むソースフィールド。デフォルト値は content です。 |
区切り文字 | ログコンテンツの分割に使用される区切り文字 (縦線 (|) など)。 説明 区切り文字として [不可視文字] を指定する場合、ASCII テーブルで対応する 16 進数を見つける必要があります。入力形式は |
引用符 | ログフィールドに区切り文字が含まれている場合は、フィールドを引用符で囲む必要があります。Simple Log Service は、引用符で囲まれたコンテンツを単一のフィールドとして解析します。引用符はログ形式と一致する必要があります。 説明 引用符として [不可視文字] を指定する場合、ASCII テーブルで対応する 16 進数値を見つける必要があります。入力形式は |
抽出されたログフィールド |
キーには、文字、数字、アンダースコア (_) のみを含めることができます。文字またはアンダースコア (_) で始まる必要があります。最大長は 128 バイトです。 |
部分一致を許可 | 抽出された値の数がキーの数より少ない場合にログを Simple Log Service にアップロードするかどうかを指定します。[部分一致を許可] を選択すると、ログがアップロードされます。 たとえば、ログが
|
余分なフィールドに対する操作 | 抽出された値の数がキーの数より多い場合に実行する操作。
|
解析失敗時にソースフィールドを保持 | [解析失敗時にソースフィールドを保持] を選択すると、解析が失敗したときにソースフィールドは保持されます。 |
解析成功時にソースフィールドを保持 | [解析成功時にソースフィールドを保持] を選択すると、解析が成功した後にソースフィールドは保持されます。 |
名前変更されたソースフィールド | [解析失敗時にソースフィールドを保持] または [解析成功時にソースフィールドを保持] を選択した後、ソースフィールドの名前を変更できます。 |
付録
区切り文字ベースの解析プラグインは、単一文字および複数文字の区切り文字をサポートします。
単一文字
以下は、単一文字の区切り文字を使用したサンプルログです。
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は、1999、Chevy、Venture "Extended Edition, Very Large"、空のフィールド、および 5000.00 の 5 つのフィールドに解析されます。引用符: ログフィールドに区切り文字が含まれている場合は、フィールドを引用符で囲む必要があります。Simple Log Service は、引用符で囲まれたコンテンツを単一のフィールドとして解析します。
引用符には、タブ文字 (\t)、縦線 (|)、スペース、カンマ (,)、セミコロン (;) 、または不可視文字などの単一文字を使用できます。
たとえば、区切り文字がカンマ (,) で、引用符が二重引用符 (") の場合、ログ
1997,Ford,E350,"ac, abs, moon",3000.00は、1997、Ford、E350、ac, abs, moon、3000.00の 5 つのフィールドに解析されます。
複数文字
以下は、複数文字の区切り文字を使用したサンプルログです。
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 は、1997、Ford、E350、ac&abs&moon、3000.00 の 5 つのフィールドに解析されます。
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 ログ構成] に基づいて自動的に抽出されます。 |
解析失敗時にソースフィールドを保持 | [解析失敗時にソースフィールドを保持] を選択すると、解析が失敗した場合にソースフィールドは保持されます。 |
解析成功時にソースフィールドを保持 | [解析成功時にソースフィールドを保持] を選択すると、解析が成功したときにソースフィールドは保持されます。 |
名前変更されたソースフィールド | [解析失敗時にソースフィールドを保持] または [解析成功時にソースフィールドを保持] を選択した後、ソースフィールドの名前を変更できます。 |
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
メソッド、URI、HTTP プロトコルを含むリクエスト行。
%R
response_handler
応答を生成したサーバー上のハンドラ。
%s
status
応答の HTTP ステータス (初期ステータス)。
%>s
status
応答の HTTP ステータス (最終ステータス)。
%t
time_local
サーバー時間。
%T
request_time_sec
リクエストの処理にかかった時間 (秒単位)。
%u
remote_user
クライアントのユーザー名。
%U
request_uri_supple
リクエストされた URL パス。クエリ文字列は含まれません。
%v
server_name
サーバー名。
%V
server_name_canonical
UseCanonicalName ディレクティブによって設定された正規サーバー名。
“%{User-Agent}i”
http_user_agent
クライアント情報。
“%{Referer}i”
http_referer
リファラーページ。
パラメーター
パラメーター | 説明 |
ログ形式 | Apache ログ構成ファイルで定義されているログ形式。オプションには、common、combined、custom があります。 |
APACHE 構成フィールド | Apache 構成ファイルのログ構成セクション。通常は LogFormat で始まります。
|
ソースフィールド | 解析前のログコンテンツを含むソースフィールド。デフォルト値は content です。 |
正規表現 | Apache ログを抽出するために使用される正規表現です。Simple Log Service は、[APACHE 設定フィールド] のコンテンツに基づいてこの正規表現を自動的に生成します。 |
抽出されたログフィールド | ログキーは、[APACHE 構成フィールド] の内容に基づいて自動的に生成されます。 |
解析失敗時にソースフィールドを保持 | [解析失敗時にソースフィールドを保持] を選択すると、解析が失敗した場合にソースフィールドは保持されます。 |
解析成功時にソースフィールドを保持 | [解析成功時にソースフィールドを保持] を選択すると、解析が成功したときにソースフィールドは保持されます。 |
名前変更されたソースフィールド | [解析失敗時にソースフィールドを保持] または [解析成功時にソースフィールドを保持] を選択した後、ソースフィールドの名前を変更できます。 |
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
クライアントがアクセスしたサイトのインターネットサービスとインスタンス番号。
s-computername
ログエントリが生成されたサーバーの名前。
s-ip
ログエントリが生成されたサーバーの IP アドレス。
cs-method
GET や POST などのリクエストメソッド。
cs-uri-stem
URI リソース。操作のターゲットです。
cs-uri-query
クライアントが要求したクエリ文字列。疑問符 (?) の後の情報です。
s-port
サーバーポート番号。
cs-username
認証されたドメインまたはユーザー名。
認証済みユーザーの場合、形式は
Domain\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 です。 |
正規表現 | IIS ログを抽出するために使用される正規表現。Simple Log Service は、[IIS 構成フィールド] の内容に基づいてこの正規表現を自動的に生成します。 |
抽出されたログフィールド | ログキーは、[IIS 構成フィールド] の内容に基づいて自動的に生成されます。 |
解析失敗時にソースフィールドを保持 | [解析失敗時にソースフィールドを保持] を選択すると、解析が失敗したときにソースフィールドは保持されます。 |
解析成功時にソースフィールドを保持 | [解析成功時にソースフィールドを保持] を選択すると、解析が成功した後にソースフィールドは保持されます。 |
名前変更されたソースフィールド | [解析失敗時にソースフィールドを保持] または [解析成功時にソースフィールドを保持] を選択した後、ソースフィールドの名前を変更できます。 |
リファレンス
API 操作を呼び出して Logtail パイプラインを構成する:
コンソールで処理プラグインを構成する:



