tencent cloud

Tencent Kubernetes Engine

お知らせ・リリースノート
製品アップデート情報
製品リリース記録
製品の説明
製品の優位性
製品アーキテクチャ
ユースケース
製品機能
リージョンとアベイラビリティーゾーン
クイックスタート
初心者ガイド
標準クラスターのクイック作成
ビギナー向け事例
コンテナアプリケーションのクラウドへのデプロイ Check List
TKE標準クラスターガイド
テンセントクバネティスエンジン
クラスター管理
ネットワーク管理
ストレージ管理
Worker ノードの概要
Kubernetes Object Management
ワークロード
クラウドネイティブサービスガイド
Prometheus監視サービス
TKE Serverlessクラスターガイド
TKE登録クラスターガイド
実践チュートリアル
Serverlessクラスター
ネットワーク
ログ
監視
運用・保守
DevOps
オートスケーリング
よくあるご質問
クラスター類
TKE Serverlessクラスター
運用保守系
サービス類
イメージリポジトリ類
リモート端末類
ドキュメントTencent Kubernetes Engine

CRDを使用したログ収集の設定

フォーカスモード
フォントサイズ
最終更新日: 2023-04-26 16:53:29

ユースケース

ログ収集の設定は、コンソールを使用してログ収集の設定を行うだけでなく、CustomResourceDefinitions(CRD)方式でも行うことができます。CRDはコンテナ標準出力、コンテナファイルおよびホストファイルの収集をサポートし、複数の形式でのログ収集をサポートしています。CLSへの配信およびCKafkaなどのコンシューマー側をサポートします。

前提条件

TKEコンソールの運用保守機能管理でログ収集を有効にしていること。

CRDの説明

構造一覧

apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig ## デフォルト値
metadata:
name: test ## CRDリソース名。クラスター内で一意
spec:
clsDetail: ## CLSへの配信の設定
...
inputDetail: ## 収集データソース設定
...
kafkaDetail: ## ckafkaまたは自作kafkaへの配信の設定
...
status: ## CRDリソースの状態
status: ""
code: "" ## インターフェース呼び出しエラーが発生した場合に、インターフェースから返されるエラーコード
reason: "" ## エラー理由

clsDetailフィールドの説明

注意
topicは指定後に変更できません。
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 ## タグkey
value: xxx ## タグvalue
autoSplit: false ## booleanタイプ、自動分割を有効にするかどうか。デフォルト値はtrueです
maxSplitPartitions:
storageType: hot ## ログトピックのストレージタイプ。オプション値はhot(標準ストレージ)、cold(低頻度ストレージ)で、デフォルトでは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フィールドの説明

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に基づくフィルタリングで合致したnamespace
allContainers: 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がメタデータとして収集されます
- label1
customLabels: ## ユーザー定義のmetadata
label: l1

workloads:
- 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に基づくフィルタリングで合致したnamespace
container: xxx ## ログを収集するコンテナ名。 * の場合は、コンテナに合致するログ名をすべて収集することを表します
logPath: /var/logs ## ログフォルダ。ワイルドカードはサポートしていません
filePattern: app_*.log ## ログファイル名。ワイルドカード * と ? をサポートしています。* は複数の任意の文字をマッチングすることを表し、? は単一の任意の文字をマッチングすることを表します
customLabels: ## ユーザー定義のmetadata
key: value
excludeLabels: ## 収集に指定の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 label
workload:
container: xxx ## 収集するコンテナ名。指定しない場合はworkload Pod内のすべてのコンテナを表します
name: sample-app ## workloadの名前

hostFile: ## ノードファイルパス
filePattern: '*.log' ## ログファイル名。ワイルドカード * と ? をサポートしています。* は複数の任意の文字をマッチングすることを表し、? は単一の任意の文字をマッチングすることを表します
logPath: /tmp/logs ## ログフォルダ。ワイルドカードはサポートしていません
customLabels: ## ユーザー定義のmetadata
label1: v1
extractRuleの対象の説明
名前
タイプ
入力必須項目
説明
timeKey
String
いいえ
時間フィールドのkeyの名前。time_keyとtime_formatは必ず対になります。
timeFormat
String
いいえ
時間フィールドの形式。C言語のstrftime関数の時間形式についての説明を参照してパラメータを出力します。
delimiter
String
いいえ
区切り文字タイプのログの区切り文字。log_typeがdelimiter_logの場合のみ有効です。
logRegex
String
いいえ
ログ全体のマッチングルール。log_typeがfullregex_logの場合のみ有効です。
beginningRegex
String
いいえ
行頭のマッチングルール。log_typeがmultiline_logまたはfullregex_logの場合のみ有効です。
unMatchUpload
String
いいえ
解析に失敗したログをアップロードするかどうか。trueはアップロードすること、falseはアップロードしないことを表します。
unMatchedKey
String
いいえ
失敗したログのkey。
backtracking
String
いいえ
増分収集モードでのバックトラッキングデータ量。デフォルトでは-1(全量収集)であり、0は増分を表します。
keys
Array of String
いいえ
取得した各フィールドのkeyの名前。空のkeyはこのフィールドが破棄されたことを表します。log_typeがdelimiter_logの場合のみ有効です。json_logのログはjson自体のkeyを使用します。
filterKeys
Array of String
いいえ
フィルタリングしたいログのkey。添え字によってFilterRegexに対応します。
filterRegex
Array of String
いいえ
フィルタリングしたいログのkeyに対応するregex。添え字によってFilterKeysに対応します。
isGBK
String
いいえ
Gbkエンコードかどうか。0:いいえ、1: はい。
注意:このフィールドは、有効な値が取得できないことを表すnullを返す場合があります。
jsonStandard
String
いいえ
標準jsonかどうか。0:いいえ、1: はい。
注意:このフィールドは、有効な値が取得できないことを表すnullを返す場合があります。

kafkaDetailフィールドの説明

kafkaDetail:
brokers: x.x.x.x:p ## 入力必須、brokerアドレス。通常はドメイン名:ポートであり、複数のアドレスは「,」で区切ります
topic: test ##
kafkaType: CKafka ## kafkaタイプ。CKafka - ckafka、SelfBuildKafka - 自作kafka
instanceId: xxxx ## kafkaType = CKafkaの場合、ckafkaインスタンスidを設定します
logType: minimalist_log ## kafkaログ解析タイプ。"minimalist_log"または""はシングルライン全文、"multiline_log"はマルチライン全文、"json"はjson形式
timestampFormat: xxx ## タイムスタンプの形式。デフォルトではdouble
timestampKey: xxx ## タイムスタンプのkey値。デフォルトでは"@timestamp"
metadata:
formatType: default ## metatdata形式。 "default"はデフォルト形式(eks kafkaキャプチャと同じ)、"filebeat"はfilebeat形式、"fluent-bit"はfluent-bit形式
messageKey: ## 1個のKeyを指定し、ログを指定のパーティションに配信することができます。デフォルトでは無効で、日付によってランダムに送信されます。有効にすると、同様のKeyを持つログは同一のパーティション内に配信されます。PodフィールドをKeyとして選択できます。Pod nameの場合、Field>metadata.nameを選択してください
value: Field ## 入力必須、topicID
valueFrom:
fieldRef:
fieldPath: metadata.name ## keyがFieldの場合にmetadata.name、metadata.namespace、spec.nodeName、spec.serviceAccountNameを選択できます

statusフィールドの説明

status
説明
ステータスが空
初期状態
Synced
収集設定の処理に成功しました
Stale
収集設定の処理に失敗しました

CRDの例

コンテナ標準出力CRDの設定の例

すべてのコンテナ
ワークロードを指定する
指定 pod Labels
ネームスペースの指定
apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig
metadata:
name: "test"
spec:
clsDetail:
.......
topicId: xxxxxx-xx-xx-xx-xxxxxxxx
inputDetail:
containerStdout:
allContainers: true
namespace: default,kube-public
type: container_stdout

ネームスペースの除外
apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig
metadata:
name: "test"
spec:
clsDetail:
........
topicId: xxxxxx-xx-xx-xx-xxxxxxxx
inputDetail:
containerStdout:
allContainers: true
excludeNamespace: kube-system,kube-node-lease
type: container_stdout

apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig
metadata:
name: "test"
spec:
clsDetail:
......
topicId: xxxxxx-xx-xx-xx-xxxxxxxx
inputDetail:
containerStdout:
allContainers: false
workloads:
- container: prod
kind: deployment
name: sample-app
namespace: kube-system
type: container_stdout
apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig
metadata:
name: test
spec:
clsDetail:
......
topicId: xxxxxx-xx-xx-xx-xxxxxxxx
inputDetail:
containerStdout:
container: prod
excludeLabels:
key2: v2
includeLabels:
key1: v1
namespace: default,kube-system
type: container_stdout

コンテナファイルパスCRDの設定の例

ワークロードを指定する
指定 pod Labels
apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig
metadata:
name: test
spec:
clsDetail:
.......
topicId: xxxx-xx-xx-xx-xxxx
inputDetail:
containerFile:
container: prod
filePattern: '*.log'
logPath: /tmp/logs
namespace: kube-system
workload:
kind: deployment
name: sample-app
type: container_file
apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig
metadata:
name: test
spec:
clsDetail:
.......
topicId: xxxx-xx-xx-xx-xxxx
inputDetail:
containerFile:
container: prod
filePattern: '*.log'
includeLabels:
key1: v1
excludeLabels:
key2: v2
logPath: /tmp/logs
namespace: default,kube-public
type: container_file

ノードファイルパスCRDの設定の例

apiVersion: cls.cloud.tencent.com/v1
kind: LogConfig
metadata:
creationTimestamp: "2022-03-13T12:48:49Z"
generation: 4
name: test
resourceVersion: "11729531"
selfLink: /apis/cls.cloud.tencent.com/v1/logconfigs/test
uid: 233f4b72-cfef-4a43-abb8-e4d033185097
spec:
clsDetail:
.......
topicId: xxxx-xx-xx-xx-xxxx
inputDetail:
hostFile:
customLabels:
testmetadata: v1
filePattern: '*.log'
logPath: /var/logs
type: host_file


ヘルプとサポート

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

フィードバック