tencent cloud

Cloud Log Service

収集設定関連

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 15:06:45
AI翻訳

非構造化抽出モードと構造化抽出モードの違い?

非構造化抽出モードとは、収集設定において抽出モードを単一行全文または複数行全文に設定することを指します。このタイプの抽出モードはログをフォーマット解析せず、全文収集を行います。この抽出モードでは、ログを収集した後は、最もシンプルな全文検索、ログ件数統計、ログ件数アラートのみ実行できます。
CLSは、ログ内容の特定フィールドに基づくより強力な検索分析、可視化、監視アラートをサポートしています。この機能は、収集したログのフォーマット解析に依存します。つまり、収集設定で構造化抽出モードを選択します。ログの出力形式が統一されている場合は、構造化抽出モード(無料)を設定して、ログ分析エクスペリエンスを最大限に向上させることをお勧めします。

構造化抽出モードをどのように設定しますか?

1. CLSにログインし、左側のナビゲーションバーでログトピックをクリックして、ログトピック管理ページに移動します。
2. 対象のログトピックを見つけ、ログトピック名をクリックしてログトピック設定ページに移動します。
3. 収集設定タブを選択し、LogListener収集設定で抽出モードが単行全文または複数行全文の収集設定を見つけ、クリックして表示し、収集設定詳細ページに移動します。
4. 収集設定詳細ページで、設定を変更をクリックして収集設定編集ページに移動します。
5. 抽出モード設定項目を見つけ、ログ形式に応じて変更をクリックし、対応する構造化抽出モードを選択します。



6. 構造化抽出モード
単一行-完全正規表現形式
複数行-完全正規表現形式
JSON形式
区切り文字形式
単一行完全正規表現形式は通常、構造化されたログの処理に使用されます。これは、1つの完全なログから正規表現方式で複数のkey-valueを抽出するログ解析モードを指します。
あるログの元のデータが以下の通りであると仮定します:
10.135.46.111 - - [22/Jan/2019:19:19:30 +0800] "GET /my/course/1 HTTP/1.1" 127.0.0.1 200 782 9703 "http://127.0.0.1/course/explore?filter%5Btype%5D=all&filter%5Bprice%5D=all&filter%5BcurrentLevelId%5D=all&orderBy=studentNum" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0" 0.354 0.354
設定されたカスタム正規表現は以下の通りです:
(\\S+)[^\\[]+(\\[[^:]+:\\d+:\\d+:\\d+\\s\\S+)\\s"(\\w+)\\s(\\S+)\\s([^"]+)"\\s(\\S+)\\s(\\d+)\\s(\\d+)\\s(\\d+)\\s"([^"]+)"\\s"([^"]+)"\\s+(\\S+)\\s(\\S+).*
システムが()キャプチャグループに基づいて対応するkey-valueを抽出した後、各グループのkey名を以下のようにカスタマイズできます:
body_bytes_sent: 9703
http_host: 127.0.0.1
http_protocol: HTTP/1.1
http_referer: http://127.0.0.1/course/explore?filter%5Btype%5D=all&filter%5Bprice%5D=all&filter%5BcurrentLevelId%5D=all&orderBy=studentNum
http_user_agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0
remote_addr: 10.135.46.111
request_length: 782
request_method: GET
request_time: 0.354
request_url: /my/course/1
status: 200
time_local: [22/Jan/2019:19:19:30 +0800]
upstream_response_time: 0.354
複数行-完全正規表現モードは、ログテキスト内の1つの完全なログデータが複数行にまたがる場合(例えばJavaプログラムログ)に適用されます。正規表現によって複数のkey-valueキー値として抽出できるログ解析モードです。key-valueを抽出する必要がない場合は、複数行全文形式を参照して設定してください。複数行-完全正規表現モードを設定する際は、最初にログサンプルを入力し、次にカスタム正規表現を定義する必要があります。設定が完了すると、システムは正規表現内のキャプチャグループに基づいて対応するkey-valueを抽出します。
あるログの元のデータが以下の通りであると仮定します:
[2018-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
設定されたカスタム正規表現は以下の通りです:
\\[\\d+-\\d+-\\w+:\\d+:\\d+,\\d+]\\s\\[\\w+]\\s.*
先頭行の正規表現は以下の通りです:
\\[(\\d+-\\d+-\\w+:\\d+:\\d+,\\d+)\\]\\s\\[(\\w+)\\]\\s(.*)
抽出されたkeyに基づき、CLSに収集されたデータは以下の通りです:
time: 2018-10-01T10:30:01,000`
level: INFO`
msg:java.lang.Exception: exception happened
at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
JSON形式のログでは、最上位層のkeyが対応するフィールド名として自動的に抽出され、最上位層のvalueが対応するフィールド値として自動的に抽出されます。この方法でログ全体が構造化処理され、各完全なログは改行文字\\\\nを終了識別子とします。
あるJSONログの元のデータが以下の通りであると仮定します:
{"remote_ip":"10.135.46.111","time_local":"22/Jan/2019:19:19:34 +0800","body_sent":23,"responsetime":0.232,"upstreamtime":"0.232","upstreamhost":"unix:/tmp/php-cgi.sock","http_host":"127.0.0.1","method":"POST","url":"/event/dispatch","request":"POST /event/dispatch HTTP/1.1","xff":"-","referer":"http://127.0.0.1/my/course/4","agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0","response_code":"200"}
CLSによる構造化処理後、このログは以下のようになります:
agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0
body_sent: 23
http_host: 127.0.0.1
method: POST
referer: http://127.0.0.1/my/course/4
remote_ip: 10.135.46.111
request: POST /event/dispatch HTTP/1.1
response_code: 200
responsetime: 0.232
time_local: 22/Jan/2019:19:19:34 +0800
upstreamhost: unix:/tmp/php-cgi.sock
upstreamtime: 0.232
url: /event/dispatch
xff: -
区切り文字ログとは、1つのログデータを指定された区切り文字に基づいてログ全体を構造化処理できる形式です。各完全なログは改行文字\\\\nを終了識別子とします。CLSで区切り文字形式のログを処理する際、分けられた各フィールドに一意のkeyを定義する必要があります。
あるログの元のデータが以下の通りであると仮定します:
10.20.20.10 ::: [Tue Jan 22 14:49:45 CST 2019 +0800] ::: GET /online/sample HTTP/1.1 ::: 127.0.0.1 ::: 200 ::: 647 ::: 35 ::: http://127.0.0.1/
ログ解析の区切り文字を:::に指定すると、このログは8つのフィールドに分割され、これら8つのフィールドに一意のkeyが定義されます。以下に示します:
IP: 10.20.20.10 -
bytes: 35
host: 127.0.0.1
length: 647
referer: http://127.0.0.1/
request: GET /online/sample HTTP/1.1
status: 200
time: [Tue Jan 22 14:49:45 CST 2019 +0800]


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック