clsDetail:## ログトピックを自動作成します。ログセットおよびトピックのnameを同時に指定する必要がありますlogsetName: test ## CLSログセットのname。このnameのログセットがなければ自動的に作成し、ある場合は、このログセットの下にログトピックを作成しますtopicName: test ## CLSログトピックのname。このnameのログトピックがなければ自動的に作成します# 既存のログセットとログトピックを選択します。ログセットが指定されていて、ログトピックが指定されていない場合は、自動的にログトピックが作成されますlogsetId: xxxxxx-xx-xx-xx-xxxxxxxx ## CLSログセットのID。ログセットはCLS内にあらかじめ作成しておく必要がありますtopicId: xxxxxx-xx-xx-xx-xxxxxxxx ## CLSログトピックのID。ログトピックはCLS内にあらかじめ作成し、かつ他のキャプチャ設定に占有されていないことが必要ですlogType: json_log ## ログキャプチャの形式。json_logはjson形式を表し、delimiter_logは区切り文字形式を表します。minimalist_logはシングルライン全文形式を、multiline_logはマルチライン全文形式を、fullregex_logは完全正規表現形式をそれぞれ表します。デフォルトではminimalist_logですlogFormat: xxx ## ログのフォーマット方法period: 30 ## ライフサイクル。単位は日、可能な値の範囲は1~3600です。値が3640の場合は永久保存を表しますpartitionCount: ## Integerタイプで、ログトピックのパーティション数です。デフォルトでは1個作成し、最大で10個のパーティションを作成できます。tags: ## タグ記述リスト。このパラメータを指定することで、タグを同時に対応するログトピックにバインドできます。最大9個のタグキーバリューペアを作成できますが、同一のリソースは同一のタグキーにしかバインドできません。- key: xxx ## タグkeyvalue: xxx ## タグvalueautoSplit: false ## booleanタイプ、自動分割を有効にするかどうか。デフォルト値はtrueですmaxSplitPartitions:storageType: hot ## ログトピックのStorageタイプ。オプション値はhot(標準Storage)、cold(低頻度Storage)で、デフォルトではhotです。excludePaths: ## ブラックリストパスリストのキャプチャ- type: File ## タイプ、オプションはFileまたはPathですvalue: /xx/xx/xx/xx.log ## typeの対応する値indexs: ## topic作成時にカスタマイズ可能なインデックス方式およびフィールド- indexName: ## キー値またはメタフィールドインデックスのフィールドを設定する必要があります。メタフィールドKeyにはプレフィックス__TAG__.を追加する必要がなく、ログをアップロードする際に対応するフィールドKeyが一致することで設定できます。Tencent Cloudコンソールで表示する際はプレフィックス__TAG__.が自動的に追加されますindexType: ## フィールドタイプ。現在はlong、text、doubleタイプをサポートしていますtokenizer: ## フィールドの区切り文字。この中のそれぞれの文字が区切り文字を表します。英字記号および\\n\\t\\rのみをサポートしています。longおよびdoubleタイプのフィールドは空にしておきます。textタイプのフィールドでは @&?|#()='",;:<>[]{}/ \\n\\t\\r\\ を区切り文字として使用することを推奨します。sqlFlag: ## boolean フィールドで分析機能を有効にしているかどうかcontainZH: ## boolean 中国語が含まれるかどうかregion: ap-xxx ## topicの所在リージョン。クロスリージョン配信に使用しますuserDefineRule: xxxxxx ## ユーザー定義キャプチャルール。Json形式でシリアライズした文字列ですextractRule: {} ## 抽出、フィルタリングルール。ExtractRuleを設定した場合は、LogTypeを設定する必要があります
inputDetail:type: container_stdout ## ログキャプチャのタイプ。container_stdout(コンテナ標準出力)、container_file(コンテナファイル)、host_file(ホストファイル)が含まれますcontainerStdout: ## コンテナ標準出力namespace: default ## キャプチャコンテナのkubernetesネームスペース。複数のネームスペースをサポートしており、複数のネームスペースがある場合は「,」で区切ります(例:default,namespace)。指定しない場合は、すべてのネームスペースを表します。注意:excludeNamespaceとは同時に指定できませんexcludeNamespace: nm1,nm2 ## キャプチャコンテナのkubernetesネームスペースを除外します。複数のネームスペースをサポートしており、複数のネームスペースがある場合は「,」で区切ります(例:nm1,nm2)。指定しない場合は、すべてのネームスペースを表します。注意:namespaceとは同時に指定できませんnsLabelSelector: environment in (production),tier in (frontend) ## ネームスペースlabelに基づくフィルタリングで合致したnamespaceallContainers: false ## 指定のネームスペース内のすべてのコンテナの標準出力をキャプチャするかどうか。注意:allContainers=trueの場合はworkloa、includeLabels、excludeLabelsを同時に指定することはできませんcontainer: xxx ## ログをキャプチャするコンテナ名。空の場合は、コンテナに合致するログ名をすべてキャプチャすることを表します。注意:excludeLabels: ## キャプチャに指定のlabelを含むPodを含めません。workload、namespace、excludeNamespaceとは同時に指定できませんkey2: value2 ## 同一のkey下にある複数のvalue値のpodのマッチングをサポートします。例えばenviroment = production,qaと入力した場合、keyがenviroment、value値がproductionまたはqaの場合はすべて除外されることを表します。複数のvalue値を入力する場合はコンマで区切ることにご注意ください。includeLabelsを同時に指定すると、includeLabelsとの共通部分のpodがマッチしますincludeLabels: ## 指定のlabelを含むPodをキャプチャします。workload、namespace、excludeNamespaceとは同時に指定できませんkey: value1 ## キャプチャルールでキャプチャされたログにはmetadataが含まれ、コンシューマー側にレポートされます。同一のkey下にある複数のvalue値のpodのマッチングをサポートします。例えばenviroment = production,qaと入力した場合、keyがenviroment、value値がproductionまたはqaの場合はすべてマッチングされることを表します。複数のvalue値を入力する場合はコンマで区切ることにご注意ください。excludeLabelsを同時に指定すると、excludeLabelsとの共通部分のpodがマッチしますmetadataLabels: ## 具体的にどのpod labelがメタデータとしてキャプチャされるかを指定します。指定しない場合は、すべてのpod labelがメタデータとしてキャプチャされます- label1customLabels: ## ユーザー定義のmetadatalabel: l1workloads:- container: xxx ## キャプチャするコンテナ名。指定しない場合は、workload Pod内のすべてのコンテナを表しますkind: deployment ## workloadタイプ。deployment、daemonset、statefulset、job、cronjobをサポートしますname: sample-app ## workloadの名前namespace: prod ## workloadのネームスペースcontainerFile: ## コンテナ内のファイルnamespace: default ## キャプチャコンテナのkubernetesネームスペース。1つのネームスペースを必ず指定する必要がありますexcludeNamespace: nm1,nm2 ## キャプチャコンテナのkubernetesネームスペースを除外します。複数のネームスペースをサポートしており、複数のネームスペースがある場合は「,」で区切ります(例:nm1,nm2)。指定しない場合は、すべてのネームスペースを表します。注意:namespaceとは同時に指定できませんnsLabelSelector: environment in (production),tier in (frontend) ## ネームスペースlabelに基づくフィルタリングで合致したnamespacecontainer: xxx ## ログをキャプチャするコンテナ名。*の場合は、コンテナに合致するログ名をすべてキャプチャすることを表しますlogPath: /var/logs ## ログフォルダ。ワイルドカードはサポートしていませんfilePattern: app_*.log ## ログファイル名。ワイルドカード*と?をサポートしています。*は複数の任意の文字をマッチングすることを表し、?は単一の任意の文字をマッチングすることを表しますcustomLabels: ## ユーザー定義のmetadatakey: valueexcludeLabels: ## キャプチャに指定のlabelを含むPodを含めません。workloadとは同時に指定できませんkey2: value2 ## 同一のkey下にある複数のvalue値のpodのマッチングをサポートします。例えばenviroment = production,qaと入力した場合、keyがenviroment、value値がproductionまたはqaの場合はすべて除外されることを表します。複数のvalue値を入力する場合はコンマで区切ることにご注意ください。includeLabelsを同時に指定すると、includeLabelsとの共通部分のpodがマッチしますincludeLabels: ## 指定のlabelを含むPodをキャプチャします。workloadとは同時に指定できませんkey: value1 ## キャプチャルールでキャプチャされたログにはmetadataが含まれ、コンシューマー側にレポートされます。同一のkey下にある複数のvalue値のpodのマッチングをサポートします。例えばenviroment = production,qaと入力した場合、keyがenviroment、value値がproductionまたはqaの場合はすべてマッチングされることを表します。複数のvalue値を入力する場合はコンマで区切ることにご注意ください。excludeLabelsを同時に指定すると、excludeLabelsとの共通部分のpodがマッチしますmetadataLabels: ## 具体的にどのpod labelがメタデータとしてキャプチャされるかを指定します。指定しない場合は、すべてのpod labelがメタデータとしてキャプチャされます- label1 ## pod labelworkload:container: xxx ## キャプチャするコンテナ名。指定しない場合はworkload Pod内のすべてのコンテナを表しますname: sample-app ## workloadの名前
\\n
を1行のログの末尾として使用します。構造化管理の一元化を図るため、各ログにはデフォルトのキー値__CONTENT__
がありますが、ログデータ自体はログ構造化処理が行われなくなり、ログフィールドも抽出されません。ログ属性の時間項目は、ログキャプチャの時間によって決まります。詳細については、シングルライン全文形式をご参照ください。Tue Jan 22 12:08:15 CST 2019 Installed: libjpeg-turbo-static-1.2.90-6.el7.x86_64
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:clsDetail:topicId: xxxxxx-xx-xx-xx-xxxxxxxx# シングルラインログlogType: minimalist_log
__CONTENT__:Tue Jan 22 12:08:15 CST 2019 Installed: libjpeg-turbo-static-1.2.90-6.el7.x86_64
n
を使用することはできません。ログシステムが各ログを明確に区別するために、最初の行の正規表現が使用されてマッチングが行われます。特定の行のログがあらかじめ設定された正規表現にマッチする場合、それがログの先頭になり、次の行に最初に出現したものがそのログの終了識別子となります。マルチライン全文でも、デフォルトのキー値__CONTENT__
が設定されますが、ログデータ自体はログ構造化処理が行われなくなり、ログフィールドも抽出されません。ログ属性の時間項目は、ログキャプチャの時間によって決まります。詳細については、マルチライン全文形式をご参照ください。2019-12-15 17:13:06,043 [main] ERROR com.test.logging.FooFactory:java.lang.NullPointerExceptionat com.test.logging.FooFactory.createFoo(FooFactory.java:15)at com.test.logging.FooFactoryTest.test(FooFactoryTest.java:11)
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:clsDetail:topicId: xxxxxx-xx-xx-xx-xxxxxxxx#マルチラインログlogType: multiline_logextractRule:#日時で始まる行のみを新しい1行のログの先頭とみなし、それ以外は改行文字\\nを加え、現在のログの末尾に追加しますbeginningRegex: \\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2},\\d{3}\\s.+
\\_\\_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)
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
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:clsDetail:topicId: xxxxxx-xx-xx-xx-xxxxxxxx# 完全な正規表現形式logType: fullregex_logextractRule:# 正規表現、()のキャプチャグループに基づき、対応するvalueを抽出しますlogRegex: (\\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+).*beginningRegex: (\\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と逐一対応しますkeys: ['remote_addr','time_local','request_method','request_url','http_protocol','http_host','status','request_length','body_bytes_sent','http_referer','http_user_agent','request_time','upstream_response_time']
body_bytes_sent: 9703http_host: 127.0.0.1http_protocol: HTTP/1.1http_referer: http://127.0.0.1/course/explore?filter%5Btype%5D=all&filter%5Bprice%5D=all&filter%5BcurrentLevelId%5D=all&orderBy=studentNumhttp_user_agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0remote_addr: 10.135.46.111request_length: 782request_method: GETrequest_time: 0.354request_url: /my/course/1status: 200time_local: [22/Jan/2019:19:19:30 +0800]upstream_response_time: 0.354
[2018-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happenedat TestPrintStackTrace.f(TestPrintStackTrace.java:3)at TestPrintStackTrace.g(TestPrintStackTrace.java:7)at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:clsDetail:topicId: xxxxxx-xx-xx-xx-xxxxxxxx#マルチライン-完全な正規表現形式logType: multiline_fullregex_logextractRule:#行頭の完全な正規表現です。日時で始まる行のみを新しい1行のログの先頭とみなし、それ以外は改行文字\\nを加え、現在のログの末尾に追加しますbeginningRegex: \\[\\d+-\\d+-\\w+:\\d+:\\d+,\\d+\\]\\s\\[\\w+\\]\\s.*#正規表現、()のキャプチャグループに基づき、対応するvalueを抽出しますlogRegex: \\[(\\d+-\\d+-\\w+:\\d+:\\d+,\\d+)\\]\\s\\[(\\w+)\\]\\s(.*)# 抽出されたkeyリスト、抽出されたvalueと逐一対応しますkeys:- time- level- msg
time: 2018-10-01T10:30:01,000`level: INFO`msg:java.lang.Exception: exception happenedat TestPrintStackTrace.f(TestPrintStackTrace.java:3)at TestPrintStackTrace.g(TestPrintStackTrace.java:7)at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
\\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"}
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:clsDetail:topicId: xxxxxx-xx-xx-xx-xxxxxxxx# JSON形式ログlogType: json_log
agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0body_sent: 23http_host: 127.0.0.1method: POSTreferer: http://127.0.0.1/my/course/4remote_ip: 10.135.46.111request: POST /event/dispatch HTTP/1.1response_code: 200responsetime: 0.232time_local: 22/Jan/2019:19:19:34 +0800upstreamhost: unix:/tmp/php-cgi.sockupstreamtime: 0.232url: /event/dispatchxff: -
\\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/
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:clsDetail:topicId: xxxxxx-xx-xx-xx-xxxxxxxx#区切り文字ログlogType: delimiter_logextractRule:#区切り文字delimiter: ':::'#抽出されたkeyリスト、分割されたフィールドと逐一対応しますkeys: ['IP','time','request','host','status','length','bytes','referer']
IP: 10.20.20.10bytes: 35host: 127.0.0.1length: 647referer: http://127.0.0.1/request: GET /online/sample HTTP/1.1status: 200time: [Tue Jan 22 14:49:45 CST 2019 +0800]
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:inputDetail:type: container_stdoutcontainerStdout:namespace: defaultallContainers: true...
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:inputDetail:type: container_stdoutcontainerStdout:allContainers: falseworkloads:- namespace: productionname: ingress-gatewaykind: deployment...
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:inputDetail:type: container_stdoutcontainerStdout:namespace: productionallContainers: falseincludeLabels:k8s-app: nginx...
/data/nginx/log/
パスの下にあるaccess.log
というファイルをキャプチャしますapiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:topicId: xxxxxx-xx-xx-xx-xxxxxxxxinputDetail:type: container_filecontainerFile:namespace: productionworkload:name: ingress-gatewaytype: deploymentcontainer: nginxlogPath: /data/nginx/logfilePattern: access.log...
/data/nginx/log/
パスの下にあるaccess.log
というファイルをキャプチャしますapiVersion: cls.cloud.tencent.com/v1kind: LogConfigspec:inputDetail:type: container_filecontainerFile:namespace: productionincludeLabels:k8s-app: ingress-gatewaycontainer: nginxlogPath: /data/nginx/logfilePattern: access.log...
フィールド名 | 意味 |
cluster_id | ログが属するクラスターIDです。 |
container_name | ログが属するコンテナ名です。 |
image_name | ログが属するコンテナのイメージ名IPです。 |
namespace | ログが属するpodのnamespaceです。 |
pod_uid | ログが属するpodのユーザーIDです。 |
pod_name | ログが属するpod名です。 |
pod_ip | ログが属するpodのIPです。 |
pod_lable_{label name} | ログが属するpodのlabelです(例えば1つのpodに、app=nginx、env=prodという2つのlabelがある場合、アップロードされたログにはpod_label_app:nginx、pod_label_env:prodという2つのmetedataが添付されます)。 |
この記事はお役に立ちましたか?