Log Service は、デフォルトで生ログを content フィールドに格納します。構造化されたキーと値のペアを抽出してフィールドレベルのクエリ、集約、可視化を行うには、解析プラグインを使用します。解析プラグインはどのフィールドでも機能します。ターゲットフィールドを指定し、コンテンツフォーマットに一致するプラグインを選択します。
データパースの例
一般的なアプリケーションログにおける、パース前後の例を示します。
データパースプラグインを適用しない場合
パースを行わない場合、すべての情報が単一の content フィールドに格納されるため、フィールドごとのクエリや分析が困難になります。
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""
正規表現パースプラグインを適用する場合
正規表現パースプラグインは、個別にクエリおよび分析できる名前付きフィールドを抽出します。
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; x64) 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
データ解析プラグインの選択
-
推奨: 専用のログフォーマット解析。
Nginx、Apache、IIS のログには、専用の解析モード (Nginx モード解析、Apache モード解析、IIS モード解析) を使用してください。手動でルールを設定する必要はありません。 -
代替: 構造化データの解析 (JSON / デリミタ)
JSON オブジェクト、または固定のデリミタ (カンマ、パイプなど) で区切られたログには、JSON 解析またはデリミタモード解析を使用してください。設定が簡単で、解析も高速です。 -
フォールバック: 正規表現解析
他のモードでは処理できない不規則な非構造化ログには、正規表現解析を使用してください。正規表現は汎用性が高い一方で、記述とデバッグが難しく、スループットが低下する可能性があります。
手順
Logtail 構成を作成または変更するときに、解析プラグインを追加します。
既存の構成の変更
Log Serviceコンソールにログインします。
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
-
タブで、目的の Logstore の横にある[>]をクリックし、を選択します。
-
Logtail 設定 リストから、対象の設定の アクション 列で Logtail 設定の管理 をクリックします。
-
ページの上部にある編集をクリックします。 ページの下部にある設定の処理セクションで、Logtail プラグインを追加し、保存をクリックします。
新しい構成の作成
Log Serviceコンソールにログインします。
-
コンソールの右側にあるデータのインポート カードをクリックします。
-
データのインポート ダイアログボックスで、データソースカードをクリックしてウィザードに従います。Logtail 設定 ステップで、Logtail 設定 セクションに Logtail プラグインを追加します。
説明プラグインの設定は、Logtail 構成を変更する場合と同じです。
データ解析プラグインの使用
共通パラメータ
これらのパラメータはすべてのデータ解析プラグインで共通のため、以降のセクションでは説明を繰り返しません。
|
パラメータ |
説明 |
|
[元のフィールド] |
解析対象のログ内容が格納されているソースフィールドです。デフォルト値は、生ログ全体を格納する |
|
[解析が失敗したときに元のフィールドを残す] |
推奨します。解析が失敗した場合 (フォーマット不一致など) に、ソースフィールドの元のコンテンツを保持し、デバッグ用のデータを保存します。 |
|
[解析が成功したときに元のフィールドを残す] |
解析が成功した後も、元のログコンテンツを保持します。通常、データ検証に使用します。 |
|
[名前を変更する元のフィールド] |
[解析失敗時に元のフィールドを保持] または [解析成功時に元のフィールドを保持] が有効な場合に、名前の競合を防ぐため、保持された元のフィールドの名前を変更します。 |
正規表現解析
正規表現を使用してログからフィールドを抽出し、キーと値のペアに解析します。柔軟性が高く、ほぼすべてのテキストフォーマットに対応できます。
構成
-
パラメータの詳細
共通パラメータ に加えて、このプラグインには以下のコアパラメータがあります:
パラメータ
説明
[正規表現]
ログコンテンツとの照合に使用する正規表現です。
-
ログサンプルを提供する場合、正規表現を自動生成するか、手動で入力できます。
-
ヘルプ をクリックします。ログサンプル テキストボックスで、抽出するコンテンツをハイライト表示し、正規表現の生成 をクリックします。Simple Log Serviceは、選択した内容に基づいて正規表現を生成します。
-
手動で入力 をクリックし、正規表現を入力します。 式を入力した後、検証 をクリックして、ログコンテンツが正しく解析されることを確認します。 詳細については、「正規表現をテストする方法」をご参照ください。
-
-
ログサンプルを提供しない場合は、ログフォーマットに一致する正規表現を手動で入力する必要があります。
[ログ抽出フィールド]
抽出されたログコンテンツ (値) に対するフィールド名 (キー) を指定します。
-
-
構成例
-
入力ログ
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" -
プラグイン構成
手順に従ってプラグインを設定します。正規表現は
(\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)(\s\d+)[^-]+([^"]+)"\s"([^"]+).*です。[元のフィールド] を
contentに設定し、[ログサンプル] テキストボックスに Nginx アクセスログを入力します。正規表現でログを解析すると、[抽出されたログフィールド] セクションに、remote_addr、remote_user、time_local、request_method、request_uri、request_protocol、status、body_bytes_sent、http_referer、http_user_agent などのキーと値のペアが表示されます。[解析失敗時に元のフィールドを保持] および [解析成功時に元のフィールドを保持] オプションは選択されていません。 -
解析結果
-
JSON 解析
JSON オブジェクトをキーと値のペアに解析します。
制限事項
JSON プラグインは、JSON オブジェクトの最上位レベルのキーと値のペアのみを抽出します。JSON 配列を直接解析することはできません。複雑な JSON を処理するには、複雑な JSON の処理方法をご参照ください。
構成
-
パラメータ
このプラグインは、共通パラメータのみを使用します。
-
構成例
-
入力ログ
{"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"} -
プラグイン構成
手順に従ってください。[プロセッサタイプ]を JSON に、[ソースフィールド]を
contentに設定します。[失敗時にソースフィールドを保持]と[成功時にソースフィールドを保持]のチェックボックスをオフにします。[高度なパラメーター]は無効のままにし、[OK] をクリックします。 -
解析結果
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
-
デリミタモード解析
デリミタモード解析プラグインは、デリミタを使用してログの内容を構造化し、複数のキーと値のペアに解析します。
設定
-
パラメーター
共通パラメーターに加えて、このプラグインには次のパラメーターがあります。
パラメーター
説明
[デリミタ]
ログの内容に合ったデリミタ (パイプ「|」など) を選択します。
説明デリミタとして [見えない文字] を指定するには、ASCII コード表でその 16 進値を確認し、
0x<16進値>の形式で入力します。たとえば、ASCII コードが 1 の印刷できない文字は、0x01 と入力します。[引用符]
ログフィールドにデリミタが含まれている場合は、そのフィールドを引用符で囲む必要があります。Simple Log Service は、引用符で囲まれた内容を単一のフィールドとして解析します。ログの形式に合った引用符を選択します。
説明引用符として [見えない文字] を指定するには、ASCII コード表でその 16 進値を確認し、
0x<16進値>の形式で入力します。たとえば、ASCII コードが 1 の印刷できない文字は、0x01 と入力します。抽出されたログフィールド
-
ログサンプルを提供する場合、Simple Log Service はサンプルと指定されたデリミタに基づいてログの内容を抽出します。Simple Log Service は内容を「値」として抽出します。各値には「キー」を割り当てる必要があります。
-
ログサンプルを提供しない場合、値のリストは生成されないため、ログデータとデリミタに基づいて手動でキーを入力する必要があります。
キーには、文字、数字、アンダースコア (_) のみを含めることができ、文字またはアンダースコア (_) で始まる必要があります。最大長は 128 バイトです。
[一部のフィールドを許可する]
この設定は、抽出された値の数が指定されたキーの数より少ない場合に、ログを Simple Log Service にアップロードするかどうかを指定します。ログをアップロードするには、一部のフィールドを許可する を選択します。
たとえば、ログが
11|22|33|44で、デリミタがパイプ (|)、キーがA、B、C、D、Eの場合を考えます。-
一部のフィールドを許可する を選択すると、
Eフィールドの値は空になり、Simple Log Service はログをアップロードします。 -
一部のフィールドを許可する を選択しない場合、ログは破棄されます。
説明デリミタモード解析の 一部のフィールドを許可する パラメーターは、Logtail for Linux 1.0.28 以降および Logtail for Windows 1.0.28.0 以降でサポートされています。
[フィールド超過の対応方法]
抽出された値の数が指定されたキーの数を超える場合に、ログをどのように処理するかを指定します。
-
[展開]:超過した値を保持し、
__column$i__の形式で個別のフィールドに追加します。$iは 0 から始まる超過フィールドのインデックスです。例:__column0__、__column1__。 -
[保持]:超過したすべての値を
__column0__という名前の単一のフィールドに追加します。 -
[破棄]:超過した値を破棄します。
-
-
設定例
-
例 1:単一文字デリミタ
-
入力ログ
05/May/2025: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 -
プラグイン設定
手順 に従います。デリミタとしてカンマ (,)、引用符として二重引用符 (") を使用します。
説明[デリミタ]:ログを分割するために、タブ (
\t)、パイプ (|)、スペース、カンマ (,)、セミコロン (;)、または印刷できない文字などの単一文字を使用できます。デリミタを二重引用符 (") にすることはできません。フィールドに二重引用符 (") が含まれる場合、ログ内で
""としてエスケープする必要があります。Simple Log Service は、フィールドを解析する際に自動的に""を"に復元します。たとえば、デリミタがカンマ (,)、引用符が二重引用符 (") の場合、カンマと二重引用符の両方を含むフィールドは、そのフィールドを引用符で囲み、二重引用符を""としてエスケープする必要があります。その結果、ログエントリChevy,"Venture ""Extended Edition, Very Large""",""は、Chevy、Venture "Extended Edition, Very Large"、および空のフィールドの 3 つのフィールドに解析されます。[引用符]:ログフィールドにデリミタが含まれている場合は、そのフィールドを引用符で囲む必要があります。Simple Log Service は、囲まれた内容を単一のフィールドとして解析します。引用符として、タブ (
\t)、パイプ (|)、スペース、カンマ (,)、セミコロン (;)、または印刷できない文字などの単一文字を使用できます。たとえば、デリミタがカンマ (,)、引用符が二重引用符 (") の場合、Simple Log Service はログ
1997,"ac,moon",3000.00を1997、ac,moon、3000.00の 3 つのフィールドに解析します。 -
解析結果
ip:10.10.*.* request:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 size:18204 status:200 time:05/May/2025:13:30:28 user_agent:aliyun-sdk-java
-
-
例 2:複数文字デリミタ
-
入力ログ
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 -
プラグイン設定
手順 に従います。デリミタとして
&&を使用し、デフォルトの引用符である二重引用符 (") を保持します。重要複数文字モードでは、デリミタには
||、&&&、^_^などの 2 文字または 3 文字を含めることができます。Logtail はデリミタのマッチングに基づいてログを解析するため、フィールドを引用符で囲む必要はありません。フィールドの内容に、デリミタと完全に一致する文字列が含まれていないことを確認してください。そうしないと、Logtail がフィールドを誤って分割する可能性があります。 -
解析結果
ip:10.200.**.** request:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 size:18204 status:200 time:05/May/2022:13:30:28 user_agent:aliyun-sdk-java
-
-
Nginx モード解析
Nginx モードプラグインは、log_format の定義に基づいて、ログをキーと値のペアに解析します。
Nginx ログ
設定
-
パラメーター
共通パラメーターに加えて、このプラグインには次のパラメーターがあります:
パラメーター
説明
[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"';[ログ抽出フィールド]
プラグインは、[NGINX ログの設定] に基づいてログフィールド (キー) を自動的に抽出します。
-
設定例
-
入力ログ
192.168.*.* - - [15/Apr/2025:16:40:00 +0800] "GET /nginx-logo.png HTTP/1.1" 0.000 514 200 368 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36" -
プラグイン設定
手順に従ってください。本番環境では、
log_formatを Nginx 設定ファイル (通常は /etc/nginx/nginx.conf) の定義と一致させる必要があります。log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$request_time $request_length $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; -
解析結果
body_bytes_sent: 368 http_referer: - http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36 remote_addr: 192.168.*.* remote_user: - request: "GET /nginx-logo.png HTTP/1.1" request_length: 514 request_time: 0.000 status: 200 time_local: 15/Apr/2025:16:40:00 +0800
-
Apache パターン解析
Apache パターン解析プラグインは、Apache ログ設定ファイルの定義に基づいて、ログコンテンツをキーと値のペアに構造化します。
Apache ログ
設定
-
パラメーター
共通パラメーター に加えて、このプラグインには次のパラメーターがあります:
パラメーター
説明
[ログ形式]
Apache ログ設定ファイルで定義されているログフォーマットを選択します。オプションには、
common、combined、customがあります。[APACHE 設定フィールド]
Apache 設定ファイルの
LogFormatディレクティブです。-
ログ形式 を [common] または [combined] に設定すると、対応する設定フィールドが自動的に入力されます。フォーマットが Apache 設定ファイルで定義されているものと一致していることを確認してください。
-
ログ形式 を カスタム に設定した場合は、実際のフォーマット文字列を入力します。例:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized。
[ログ抽出フィールド]
APACHE 設定フィールド の内容に基づいて自動的に抽出されたログフィールド (キー)。
-
-
設定例
-
入力ログ
192.168.1.10 - - [08/May/2024:15:30:28 +0800] "GET /index.html HTTP/1.1" 200 1234 "https://www.example.com/referrer" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36" -
プラグイン設定
手順 に従います。[ログフォーマット] を
combinedに設定します。 -
解析結果
http_referer:https://www.example.com/referrer http_user_agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36 remote_addr:192.168.1.10 remote_ident:- remote_user:- request_method:GET request_protocol:HTTP/1.1 request_uri:/index.html response_size_bytes:1234 status:200 time_local:[08/May/2024:15:30:28 +0800]
-
IIS モード解析
IIS モードプラグインは、IIS のログ形式定義に基づいてログ内容を複数のキーと値のペアに解析します。
IIS ログ
設定
-
パラメーターの説明
共通パラメーター に加えて、このプラグインには次のパラメーターがあります:
パラメーター
説明
[ログ形式]
IIS サーバーで使用されるログ形式です。 IIS、NCSA、W3C 形式がサポートされています。
[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"-
IIS 5 のデフォルト設定ファイルパス:
C:\WINNT\system32\inetsrv\MetaBase.bin。 -
IIS 6 のデフォルト設定ファイルパス:
C:\WINDOWS\system32\inetsrv\MetaBase.xml。 -
IIS 7 のデフォルト設定ファイルパス:
C:\Windows\System32\inetsrv\config\applicationHost.config。
-
[ログ抽出フィールド]
Log Service は、[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 2023-10-27 08:00:00 W3SVC1 192.168.1.1 GET /index.html - 80 - 10.0.0.5 Mozilla/5.0 200 0 0 500 100 150 -
プラグイン設定
手順 に従ってください。ログ形式 を W3C に設定してください。
-
解析結果
date: 2023-10-27 time: 08:00:00 s-sitename: W3SVC1 s-ip: 192.168.1.1 cs-method: GET cs-uri-stem: /index.html cs-uri-query: - s-port: 80 cs-username: - c-ip: 10.0.0.5 cs(User-Agent): Mozilla/5.0 sc-status: 200 sc-substatus: 0 sc-win32-status: 0 sc-bytes: 500 cs-bytes: 100 time-taken: 150
-
よくある質問
Log Service で正規表現が失敗する場合
次のよくある原因を確認してください:
-
ログサンプルの不一致:Logtail 構成で使用するログサンプルが、収集したログのフォーマット (スペースや特殊文字を含む) と完全に一致していることを確認してください。
-
ログフォーマットの混在:ログソースに複数のフォーマットが含まれる場合、1 つの正規表現ではすべてに一致しないことがあります。解析に失敗した場合に生ログを保持するには、[未一致コンテンツの保持] を有効にしてください。また、複数の Logtail 構成を使用して、フォーマットごとに個別に処理することもできます。
-
コードとコンソールでのエスケープの違い:コードからコピーした正規表現には、
\\S+のような余分なエスケープ文字が含まれる場合があります。Log Service コンソールでは、\S+のようにバックスラッシュを 1 つだけ使用してください。
特定ファイルのログのクエリ
Log Service は、ソースファイルのフルパスを含むメタデータフィールド __tag__:__path__ を各ログエントリに自動で追加します。このフィールドを使用して、/var/log/app/error.log などの特定ファイルのログをフィルタリングします:* AND __tag__:__path__: /var/log/app/error.log。
インデックス変更後に履歴データをクエリできない場合
インデックスの変更は、新しく取り込まれたデータにのみ適用されます。新しいインデックス設定で既存の履歴データをクエリするには、[再インデックス] タスクを実行してください。
ネストされた JSON オブジェクトの処理
JSON 解析プラグインは、デフォルトではネストされた JSON オブジェクトをフラット化しません。ネストされた構造は、単一の JSON 文字列値として保持されます。
解決策:
Log Service は、ネストされた JSON オブジェクトを展開 (フラット化) するための JSON フィールド展開プラグイン を提供しています。
仕組み:展開の深さを指定すると、プラグインはネストされた JSON オブジェクトを走査し、親キーをプレフィックスとして連結してフラットなキーと値のペアを生成します。元のログの他のフィールドは保持されます。
比較例:
この操作により、ログエントリの数が増加します。 N 個の要素を持つ配列を含む単一のログは、N 個のログエントリになります。 ログストレージとインデックス作成のコストを計画する際は、この点を考慮してください。
-
展開の深さ:JSON オブジェクトを展開するレベルです。値が 0 (デフォルト) の場合はオブジェクト全体を完全に展開し、1 の場合は現在のレベルのみを展開します。以降も同様です。
|
生ログ |
展開の深さ:0 (プレフィックス追加) |
展開の深さ:1 (プレフィックス追加) |
|
|
|
テキストと埋め込み JSON を含むログの解析
複数の処理プラグインを連結し、前の出力を次の入力として使用します。
ユースケース:
アプリケーションログが、タイムスタンプ、ログレベル、埋め込み JSON メッセージを含む次のフォーマットであると仮定します。
2025-11-12 10:30:15 INFO Request details: {"trace_id": "xyz-123", "user_id": 500, "action": "login"}
解析方針: 次の 2 つのプラグインを順序どおりに追加します。2 つ目のプラグインには、正しいソースフィールドを指定してください。この連結方法は、任意の混在フォーマットのログに有効です。
-
正規表現解析プラグインを使用して先頭のテキストフィールドを抽出し、埋め込み JSON 文字列を別フィールドに取り込みます。結果は次のとおりです:
{ "log_time": "2025-11-12 10:30:15", "log_level": "INFO", "json_message": "{\"trace_id\": \"xyz-123\", \"user_id\": 500, \"action\": \"login\"}" } -
JSON 解析プラグインを追加し、ソースフィールドに
json_messageを設定して JSON 内容をキーと値のペアに解析します。結果は次のとおりです:{ "log_time": "2025-11-12 10:30:15", "log_level": "INFO", "trace_id": "xyz-123", "user_id": 500, "action": "login" }
関連ドキュメント
-
API を使用した Logtail パイプラインの設定:
-
コンソールでの処理プラグインの設定: