apiVersion: cls.cloud.tencent.com/v1kind: LogConfig ## 기본값metadata:name: test## 클러스터에서 고유한 CRD 리소스 이름spec:clsDetail:## CLS로 전달하기 위한 구성...inputDetail: ## 데이터 소스 수집 구성...kafkaDetail:## cKafka 또는 자체 구축 kafka 클러스터로 전달하기 위한 구성...status:## CRD 리소스 상태status: ""code: ""## 호출된 API에서 반환된 오류 코드reason: ""## 오류 원인
clsDetail:## 로그 토픽은 자동으로 생성되며 로그셋과 토픽 name을 모두 지정해야 합니다logsetName: test ## CLS 로그셋의 name입니다. 이 name의 로그셋이 없으면 자동으로 생성됩니다. 이러한 로그셋이 있으면 그 아래에 로그 토픽이 생성됩니다topicName: test ## CLS 로그 토픽의 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_loglogFormat: xxx ## 로그 형식 메소드period: 30 ## 라이프사이클(일). 값 범위: 1–3600. 3640은 영구 저장소를 나타냅니다partitionCount: ## 로그 토픽 파티션의 수(Integer)입니다. 기본값: 1. 최대값: 10.tags: ## 태그 설명 목록입니다. 이 매개변수는 태그를 로그 토픽에 바인딩하는 데 사용됩니다. 최대 9개의 태그 키-값 쌍이 지원되며 리소스는 하나의 태그 키에만 바인딩될 수 있습니다.- key: xxx ## 태그 keyvalue: xxx ## 태그 valueautoSplit: false## 자동 분할 활성화 여부(boolean 유형). 기본값: truemaxSplitPartitions:storageType: hot ## 로그 토픽 스토리지 클래스. 유효한 값: hot(STANDARD), cold(STANDARD_IA). 기본값: hot.excludePaths: ## 수집 경로 블록리스트- type: File ## 유형. 유효한 값: File 또는 Pathvalue: /xx/xx/xx/xx.log ## type의 값indexs: ## topic을 생성할 때 인덱싱 방법과 필드를 사용자 정의할 수 있습니다- indexName: ## 키 값 또는 메타 필드 인덱스를 구성할 필드입니다. Tencent Cloud 콘솔에 표시하기 위해 __TAG__. 접두사가 자동으로 추가되므로 메타 필드의 Key에 __TAG__. 접두사를 추가할 필요가 없으며 로그를 업로드할 때 해당 필드의 접두사를 사용할 수 있습니다.indexType: ## 필드 유형. 유효한 값: long, text, doubletokenizer: ## 필드 구분자. 각 문자는 구분 기호를 나타냅니다; 영어 기호와 \\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로 namespace 필터링allContainers: false ## 지정된 네임스페이스에 있는 모든 컨테이너의 표준 출력 수집 여부입니다. allContainers=true인 경우 workloa, includeLabels 및 excludeLabels를 동시에 지정할 수 없습니다.container: xxx ## 수집할 컨테이너의 이름입니다. 이 필드가 비어 있으면 수집할 모든 컨테이너의 이름을 나타냅니다.excludeLabels: ## 지정된 label이 있는 Pod가 제외됩니다. workload, namespace 및 excludeNamespace가 지정된 경우 이 필드를 지정할 수 없습니다.key2: value2 ## 동일한 key의 여러 value를 가진 pod를 매칭할 수 있습니다. 예를 들어 enviroment = production,qa를 입력하면 environment key의 production 또는 qa value를 가진 pod가 제외됩니다. 여러 value를 쉼표로 구분합니다. includeLabels도 지정하면 includeLabels와 교차하는 pod와 매칭됩니다.includeLabels: ## 지정된 label이 있는 Pod가 수집됩니다. workload, namespace 및 excludeNamespace가 지정된 경우 이 필드를 지정할 수 없습니다.key: value1 ## metadata는 수집 규칙에 따라 수집된 로그에 담겨 소비자에게 리포트됩니다. 동일한 key의 여러 value가 있는 pod를 매칭할 수 있습니다. 예를 들어 enviroment = production,qa를 입력하면 enviroment key의 production 또는 qa value가 있는 pod가 매칭됩니다. 여러 value를 쉼표로 구분합니다. excludeLabels도 지정하면 includeLabels와 교차하는 pod와 매칭됩니다.metadataLabels: ## 메타데이터로 수집할 pod label을 지정합니다. 이 필드를 지정하지 않으면 모든 pod label이 메타데이터로 수집됩니다.- label1customLabels: ## 사용자 지정 metadatalabel: l1workloads:- container: xxx ## 수집할 컨테이너의 이름입니다. 이 필드를 지정하지 않으면 workload Pod의 모든 컨테이너가 수집됩니다.kind: deployment ## workload 유형. 유효한 값: deployment, daemonset, statefulset, job, cronjobname: sample-app ## workload 이름namespace: prod ## workload 네임스페이스containerFile: ## 컨테이너 파일namespace: default ## 수집할 컨테이너의 kubernetes 네임스페이스입니다. 네임스페이스를 지정해야 합니다.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: ## 사용자 지정 metadatakey: valueexcludeLabels: ## 지정된 label이 있는 Pod가 제외됩니다. workload가 지정된 경우 이 필드를 지정할 수 없습니다.key2: value2 ## 동일한 key의 여러 value를 가진 pod를 매칭할 수 있습니다. 예를 들어 enviroment = production,qa를 입력하면 environment key의 production 또는 qa value를 가진 pod가 제외됩니다. 여러 value를 쉼표로 구분합니다. includeLabels도 지정하면 includeLabels와 교차하는 pod와 매칭됩니다.includeLabels: ## 지정된 label이 있는 Pod가 수집됩니다. workload가 지정된 경우 이 필드를 지정할 수 없습니다.key: value1 ## metadata는 수집 규칙에 따라 수집된 로그에 담겨 소비자에게 리포트됩니다. 동일한 key의 여러 value가 있는 pod를 매칭할 수 있습니다. 예를 들어 enviroment = production,qa를 입력하면 enviroment key의 production 또는 qa value가 있는 pod가 매칭됩니다. 여러 value를 쉼표로 구분합니다. excludeLabels도 지정하면 includeLabels와 교차하는 pod와 매칭됩니다.metadataLabels: ## 메타데이터로 수집할 pod label을 지정합니다. 이 필드를 지정하지 않으면 모든 pod label이 메타데이터로 수집됩니다.- label1 ## pod labelworkload:container: xxx ## 수집할 컨테이너의 이름입니다. 이 필드를 지정하지 않으면 workload Pod의 모든 컨테이너가 수집됩니다.name: sample-app ## workload 이름hostFile: ## 노드 파일 경로filePattern: '*.log' ## 로그 파일 이름. 와일드카드 * 및 ?가 지원됩니다. *는 모든 문자 수와 매칭됨을 나타내고 ?는 단일 문자와 매칭됨을 나타냅니다.logPath: /tmp/logs ## 로그 폴더. 와일드카드는 지원되지 않습니다.customLabels: ## 사용자 지정 metadatalabel1: v1
이름 | 유형 | 필수 항목 | 설명 |
timeKey | String | No | 시간 필드의 key 이름입니다. time_key 및 time_format은 쌍으로 나타나야 합니다. |
timeFormat | String | No | 시간 필드 형식. 자세한 내용은 C 언어에서 strftime 함수의 시간 형식 설명의 출력 매개변수를 참고하십시오. |
delimiter | String | No | log_type이 delimiter_log인 경우에만 유효한 구분된 로그의 구분 기호입니다. |
logRegex | String | No | log_type이 fullregex_log인 경우에만 유효한 전체 로그 매칭 규칙입니다. |
beginningRegex | String | No | 첫 번째 줄 매칭 규칙은 log_type이 multiline_log 또는 fullregex_log인 경우에만 유효합니다. |
unMatchUpload | String | No | 로그 업로드 여부를 파싱하지 못했습니다. 유효한 값: true(yes), false(no). |
unMatchedKey | String | No | 일치하지 않는 로그 key입니다. |
backtracking | String | No | 증분 수집 모드에서 되감기할 데이터의 크기입니다. 유효한 값: -1(전체 수집), 0(증분 수집). 기본값: -1. |
keys | Array of String | No | 추출된 각 필드의 key 이름입니다. 빈 key는 필드 삭제를 나타냅니다. 이 매개변수는 log_type이 delimiter_log인 경우에만 유효합니다. json_log 로그는 json 자체의 key를 사용합니다. |
filterKeys | Array of String | No | 필터링할 로그 key로, FilterRegex에 아래 첨자에 해당합니다. |
filterRegex | Array of String | No | 필터링할 로그 key의 regex로, FilterKeys 아래 첨자에 해당합니다. |
isGBK | String | No | Gbk 인코딩 여부. 유효한 값: 0(No), 1(Yes). 참고: 이 필드는 유효한 값을 얻을 수 없음을 나타내는 null을 반환할 수 있습니다. |
jsonStandard | String | No | 표준 json 여부. 유효한 값: 0(No), 1(Yes). 참고: 이 필드는 유효한 값을 얻을 수 없음을 나타내는 null을 반환할 수 있습니다. |
kafkaDetail:brokers: x.x.x.x:p ## (필수) broker 주소입니다. 일반적으로 도메인 이름:포트입니다. 주소가 둘 이상인 경우 쉼표(‘,’)로 구분합니다.topic: test ##kafkaType: CKafka ## kafka 유형, 유효한 값: CKafka(ckafka), SelfBuildKafka(자체 구축된 kafka)instanceId: xxxx ## kafkaType = CKafka일 때, ckafka 인스턴스의 idlogType: minimalist_log ## 구문 분석된 kafka 로그의 유형입니다. 유효한 값: "minimalist_log" 또는 ""(한 줄의 전체 텍스트), "multiline_log"(여러 줄의 전체 텍스트), "json"(json)timestampFormat: xxx ## 타임스탬프 형식. 기본값: doubletimestampKey: xxx ## 타임스탬프 key. 기본값: "@timestamp"metadata:formatType: default ## metatdata 형식. 유효한 값: "default"(기본값, eks kafka 수집기와 동일), "filebeat"(filebeat), "fluent-bit"(fluent-bit)messageKey: ## 로그를 지정된 파티션으로 보낼 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 | 설명 |
비어 있는 상태 | 초기 상태 |
Synced | 컬렉션을 성공적으로 구성했습니다 |
Stale | 컬렉션을 구성하지 못했습니다 |
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigmetadata:name: "test"spec:clsDetail:.......topicId: xxxxxx-xx-xx-xx-xxxxxxxxinputDetail:containerStdout:allContainers: truenamespace: default,kube-publictype: container_stdout
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigmetadata:name: "test"spec:clsDetail:........topicId: xxxxxx-xx-xx-xx-xxxxxxxxinputDetail:containerStdout:allContainers: trueexcludeNamespace: kube-system,kube-node-leasetype: container_stdout
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigmetadata:name: "test"spec:clsDetail:......topicId: xxxxxx-xx-xx-xx-xxxxxxxxinputDetail:containerStdout:allContainers: falseworkloads:- container: prodkind: deploymentname: sample-appnamespace: kube-systemtype: container_stdout
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigmetadata:name: testspec:clsDetail:......topicId: xxxxxx-xx-xx-xx-xxxxxxxxinputDetail:containerStdout:container: prodexcludeLabels:key2: v2includeLabels:key1: v1namespace: default,kube-systemtype: container_stdout
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigmetadata:name: testspec:clsDetail:.......topicId: xxxx-xx-xx-xx-xxxxinputDetail:containerFile:container: prodfilePattern: '*.log'logPath: /tmp/logsnamespace: kube-systemworkload:kind: deploymentname: sample-apptype: container_file
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigmetadata:name: testspec:clsDetail:.......topicId: xxxx-xx-xx-xx-xxxxinputDetail:containerFile:container: prodfilePattern: '*.log'includeLabels:key1: v1excludeLabels:key2: v2logPath: /tmp/logsnamespace: default,kube-publictype: container_file
apiVersion: cls.cloud.tencent.com/v1kind: LogConfigmetadata:creationTimestamp: "2022-03-13T12:48:49Z"generation: 4name: testresourceVersion: "11729531"selfLink: /apis/cls.cloud.tencent.com/v1/logconfigs/testuid: 233f4b72-cfef-4a43-abb8-e4d033185097spec:clsDetail:.......topicId: xxxx-xx-xx-xx-xxxxinputDetail:hostFile:customLabels:testmetadata: v1filePattern: '*.log'logPath: /var/logstype: host_file
피드백