tencent cloud

Cloud Log Service

収集概要

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

概要

CLS(Cloud Log Service)は、LogListener、API、SDK、Kafkaプロトコル、OpenTelemetryプロトコル、クラウド製品ログ取り込み、データインポートなどの方法でログデータを取り込むことができます。ホスト、コンテナ、クライアント、アプリケーション、メッセージキュー、クラウド製品、COSなど、さまざまなデータソースのシナリオに適用されます。

機能特性

収集プラン
CLSはさまざまなログ取り込み方法をサポートしています。ログソース、既存の収集リンク、データ保存場所に基づいて、対応する収集プランまたはデータインポートプランを選択できます。
データソースタイプ
ログソース
アクセスシナリオ
関連ドキュメント
ホストログ
Linux/Unixホストファイルログ
LogListenerを使用してアプリケーションおよびシステムファイルのログを収集します。Tencent Cloud CVM、自社構築IDC、およびその他のクラウドプロバイダーのサーバーに適用されます。
Windowsホストファイルログ
LogListener Windows版を使用してテキストログを収集します。
Windowsイベントログ
LogListener Windows版を使用して、Application、System、Securityなどのイベントチャネルログを収集します。
ネットワークデバイスおよびサーバーのSyslog
LogListenerを使用してTCPまたはUDPポートを監視し、Syslogログを収集・解析します。
コンテナログ
Tencent Cloud TKEクラスタ
コンテナの標準出力、コンテナファイル、ノードファイルのログを収集し、Pod、Namespace、Containerなどのメタデータに関連付けます。
自社構築または他クラウドのKubernetesクラスタ
クラスタにLogListenerをデプロイし、コンテナの標準出力およびコンテナファイルのログを収集します。
クライアントログ
Android、iOS、HarmonyOS、Flutter
対応するクライアントSDKを使用してアプリケーションログを収集・アップロードします。
Webページ、WeChatミニプログラム
ブラウザまたはミニアプリのJavaScript SDKを使用してログをアップロードします。認証不要のシナリオでは匿名ログアップロードを使用できます。
アプリケーションログ
アプリケーションが生成する構造化ログ
CLS SDKまたはAPIを使用して、構造化ログをCLSに直接アップロードします。
Java Logback、Log4jログ
Appenderを使用してログを直接アップロードします。非同期送信、キャッシュ、失敗時の再試行をサポートします。
OpenTelemetry Log
標準のOTLP/HTTP Exporterを使用してログをCLSに報告します。CLS専用SDKを導入する必要はありません。
オープンソース収集コンポーネント
Filebeat、Winlogbeat、Logstash、Fluentd、Fluent Bit
既存コンポーネントの出力設定を変更し、Kafkaプロトコルを使用してログをCLSにアップロードします。
メッセージキュー
アプリケーションはKafka Producerを使用して直接報告します。
CLSをKafka Producerの宛先として設定し、Kafkaプロトコルを介してログをアップロードします。
自社構築KafkaまたはTencent Cloud CKafka内の既存ログ
CLSが指定されたKafka Topicを能動的にサブスクライブして消費するため、既存のプロデューサー側を変更する必要はありません。
専用データソース
Nginxアクセスログ
プリセットのNginx収集・解析ソリューションを使用してアクセスログを取り込みます。
MySQL BinLog
LogListenerを使用してMySQLバイナリログを収集します。データ変更のクエリ、分析、監査に適しています。
クラウド製品ログ
Tencent Cloud製品ログ
クラウド製品コンソールまたはCLSクラウド製品ログ取り込み機能を通じて、ネイティブ取り込みを完了します。
データインポート
Tencent Cloud COS
COS内のログファイルをCLSにインポートします。一度きりのインポートまたは継続的なバッチインポートをサポートします。
AWS S3
AWS S3バケット内のログファイルをCLSにインポートします。
Elasticsearch
Elasticsearch内の履歴データのインポートをサポートし、新規データの継続的なインポートもサポートします。

ログ構造化解析

ログの構造化とは、お客様のログデータがkey-value形式でCLSプラットフォームに保存されることを指します。構造化されたログデータは、指定されたキー値に基づいてログ検索、ログ分析、ログ配信を行うことができます。CLSは構造化データの直接アップロードを許可しています。詳細は以下の説明をご参照ください:
例えば、ローカルの元のログは以下の通りです:
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/
ログの解析方法を区切り文字方式に指定し、;セミコロンを区切り文字として使用すると、このログを複数のフィールドグループに解析できます。各フィールドグループはkey-valueキー値ペアの形式で構成され、各keyにキー名を定義します。以下に示します:
IP: 10.20.20.10
time: [Tue Jan 22 14:49:45 CST 2019 +0800]
request: GET /online/sample HTTP/1.1
host: 127.0.0.1
status: 200
length: 647
bytes: 35
referer: http://127.0.0.1/
LogListenerは複数の解析方式を提供します。以下の表に示します:
単一行フルテキスト形式
複数行フルテキスト形式
単一行-完全正規表現形式
複数行-完全正規表現形式
JSON形式
区切り文字
組み合わせ解析
Nginxログテンプレート
単一行フルテキストログとは、1行のログ内容が1つの完全なログであることを指します。CLSは収集時に、改行文字\\\\nを1つのログの終了文字として使用します。構造化管理を統一するために、各ログにはデフォルトのキー値__CONTENT__が存在しますが、ログデータ自体に対してログ構造化処理は行われず、ログフィールドも抽出されません。ログ属性の時間項目は、ログ収集の時間によって決定されます。
あるログの元のデータが以下の通りであると仮定します:
Tue Jan 22 12:08:15 CST 2019 Installed: libjpeg-turbo-static-1.2.90-6.el7.x86_64
CLSに収集されたデータは以下の通りです:
__CONTENT__:Tue Jan 22 12:08:15 CST 2019 Installed: libjpeg-turbo-static-1.2.90-6.el7.x86_64
複数行フルテキストログとは、1つの完全なログデータが複数行にまたがる可能性があるものを指します(例えばJava stacktrace)。この場合、改行文字\\\\nをログの終了識別子とすることはやや不合理です。ログシステムが各ログを明確に区別できるようにするために、先頭行の正規表現方式でマッチングを行います。ある行のログが事前に設定された正規表現にマッチした場合、その行を1つのログの先頭と見なし、次の行頭の出現をそのログの終了識別子とします。
複数行フルテキストにもデフォルトのキー値__CONTENT__が設定されますが、ログデータ自体に対してログ構造化処理は行われず、ログフィールドも抽出されません。ログ属性の時間項目は、ログ収集の時間によって決定されます。
ある複数行ログの元のデータが以下の通りであると仮定します:
2019-12-15 17:13:06,043 [main] ERROR com.test.logging.FooFactory:
java.lang.NullPointerException
at com.test.logging.FooFactory.createFoo(FooFactory.java:15)
at com.test.logging.FooFactoryTest.test(FooFactoryTest.java:11)
先頭行の正規表現は以下の通りです:
\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2},\\d{3}\\s.+
CLSに収集されたデータは以下の通りです:
__CONTENT__:2019-12-15 17:13:06,043 [main] ERROR com.test.logging.FooFactory:\\njava.lang.NullPointerException\\n at com.test.logging.FooFactory.createFoo(FooFactory.java:15)\\n at com.test.logging.FooFactoryTest.test(FooFactoryTest.java:11)
単一行完全正規表現形式は通常、構造化されたログの処理に使用されます。これは、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+).*
CLSに収集されたデータは以下の通りです:
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
あるログの元のデータが以下の通りであると仮定します:
[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-valueを抽出した後、各グループのkey名を以下のようにカスタマイズできます:
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ログの元のデータが以下の通りであると仮定します:
{"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: -
あるログの元のデータが以下の通りであると仮定します:
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]
あるログの元のデータが以下の通りであると仮定します:
1571394459、http://127.0.0.1/my/course/4|10.135.46.111|200、status:DEAD,
カスタムプラグインの内容は以下の通りです:
{
"processors": [
{
"type": "processor_split_delimiter",
"detail": {
"Delimiter": ",",
"ExtractKeys": [ "time", "msg1","msg2"]
},
"processors": [
{
"type": "processor_timeformat",
"detail": {
"KeepSource": true,
"TimeFormat": "%s",
"SourceKey": "time"
}
},
{
"type": "processor_split_delimiter",
"detail": {
"KeepSource": false,
"Delimiter": "|",
"SourceKey": "msg1",
"ExtractKeys": [ "submsg1","submsg2","submsg3"]
},
"processors": []
},
{
"type": "processor_split_key_value",
"detail": {
"KeepSource": false,
"Delimiter": ":",
"SourceKey": "msg2"
}
}
]
}
]
}
CLSによる構造化処理後、このログは以下のようになります:
time: 1571394459
submsg1: http://127.0.0.1/my/course/4
submsg2: 10.135.46.111
submsg3: 200
status: DEAD
あるログの元のデータが以下の通りであると仮定します:
111.121.0.1 - - [06/Aug/2019:12:12:19 +0800] "GET /nginx-logo.png HTTP/1.1" 200 368 "http://119.x.x.x/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-"
Nginxログ設定の内容は以下の通りです:
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Nginxログ設定処理後、以下の正規表現が生成されます:
(\\S+)\\s*-\\s*(\\S+)\\s*\\[(\\d+\\S+\\d+:\\d+:\\d+:\\d+)\\s+\\S+\\]\\s*\\"(\\S+)\\s+(\\S+)\\s+\\S+\\"\\s*(\\S+)\\s*(\\S+)\\s*\\"([^"]*)\\"\\s*\\"([^"]*)\\".*
CLSに収集されたデータは以下の通りです:
remote_addr: 111.121.0.1
remote_user: -
time_local: 06/Aug/2019:12:12:19
request_method: GET
request_uri: /nginx-logo.png
status: 200
body_bytes_sent: 368
http_referer: http://119.x.x.x/
http_user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

料金説明

ログ収集では関連するログ書き込み流量費用が発生します。詳細については、課金概要をご参照ください。

仕様制限

ログ収集の仕様制限については、以下をご参照ください:

ヘルプとサポート

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

フィードバック