tencent cloud

容器服务

动态与公告
产品动态
公告
产品发布记录
产品简介
产品概述
产品优势
产品架构
应用场景
产品功能
基本概念
原生 Kubernetes 名词对照
容器服务高危操作
地域和可用区
开源组件
购买指南
购买指引
购买 TKE 标准集群
购买原生节点
购买超级节点
快速入门
新手指引
快速创建一个标准集群
入门示例
容器应用部署 Check List
集群配置
标准集群概述
集群管理
网络管理
存储管理
节点管理
GPU 资源管理
远程终端
应用配置
工作负载管理
服务和配置管理
组件和应用管理
弹性伸缩
容器登录方式
可观测配置
运维可观测性
成本洞察和优化
调度配置
调度组件概述
资源利用率优化调度
业务优先级保障调度
Qos 感知调度
安全和稳定性
容器服务安全组设置
身份验证和授权
应用安全
多集群管理
计划升级
备份中心
云原生服务指南
云原生 etcd
Prometheus 监控服务
TKE Serverless 集群指南
TKE 注册集群指南
实践教程
集群
Serverless 集群
调度
安全
服务部署
网络
发布
日志
监控
运维
Terraform
DevOps
弹性伸缩
容器化
微服务
成本管理
混合云
AI
故障处理
节点磁盘爆满排障处理
节点高负载排障处理
节点内存碎片化排障处理
集群 DNS 解析异常排障处理
集群 Kube-Proxy 异常排障处理
集群 API Server 网络无法访问排障处理
Service&Ingress 网络无法访问排障处理
Service&Ingress 常见报错和处理
Nginx Ingress 偶现 Connection Refused
CLB Ingress 创建报错排障处理
Pod 网络无法访问排查处理
Pod 状态异常与处理措施
授权腾讯云售后运维排障
CLB 回环问题
API 文档
History
Introduction
API Category
Making API Requests
Elastic Cluster APIs
Resource Reserved Coupon APIs
Cluster APIs
Third-party Node APIs
Relevant APIs for Addon
Network APIs
Node APIs
Node Pool APIs
TKE Edge Cluster APIs
Cloud Native Monitoring APIs
Scaling group APIs
Super Node APIs
Other APIs
Data Types
Error Codes
TKE API 2022-05-01
常见问题
TKE 标准集群
TKE Serverless 集群
运维类
隐患处理
服务类
镜像仓库类
远程终端类
事件类
资源管理类
服务协议
TKE Service Level Agreement
TKE Serverless Service Level Agreement
联系我们
词汇表

LogConfig json 格式说明

PDF
聚焦模式
字号
最后更新时间: 2024-12-03 15:12:15

LogConfig CR 字段说明

{
"kind": "cls.cloud.tencent.com/v1",
"apiVersion": "LogConfig",
"metadata": {
"name": "configName" // 采集规则名
},
"spec": {
"inputDetail": {...}, // 日志采集源定义
"clsDetail": {...}, // 采集到CLS的配置
"kafkaDetail": {...} // 采集到 Kafka 的配置
}
}

spec 内容说明

采集规则 spec 部分主要定义了日志的采集源以及日志输出端的配置信息。
注意:
clsDetail 和 kafkaDetail 在同一个采集规则中只能配置一种。
字段
是否必填
说明
inputDetail
定义采集源。
clsDetail
CLS 采集器配置,该配置信息将由日志组件 cls-provisioner 同步到 CLS 侧。
kafkaDetail
Kafka 采集器配置,定义日志采集格式等信息。

inputDetail 说明

{
"type": "host_file",
"containerStdout": {},
"containerFile": {},
"hostFile": {}
}
字段
类型
是否必填
说明
type
String
采集类型,取值如下:
container_file:容器内文件采集,该类型对应 containerFile 配置项。
container_stdout:采集容器标准输出。
host_file:采集节点日志,超级节点不支持该配置。
containerStdout
Object
容器标准输出采集配置。配置采集容器标准输出时,需指定采集类型为 container_stdout。
containerFile
Object
容器内路径采集。配置采集容器标准输出时,需指定采集类型为 container_file。
hostFile
Object
节点路径采集。配置采集容器标准输出时,需指定采集类型为 container_file。

containerStdout 对象结构说明

{
"includeLabels": {
"label1": "value1"
},
"excludeLabels": {
"label": "value"
},
"metadataLabels": [
"label1"
],
"metadataContainer": [
"namespace",
"pod_name",
"pod_ip",
"pod_uid",
"container_id",
"container_name",
"image_name",
"cluster_id"
],
"container": "container",
"workloads": [
{
"container": "kubernetes-proxy",
"kind": "deployment",
"name": "kubernetes-proxy",
"namespace": "default"
},
{
"container": "testlog11",
"kind": "deployment",
"name": "testlog1",
"namespace": "default"
}
],
"customLabels": {
"xx": "xx"
}
}
字段
类型
是否必填
说明
includeLabels
Map
采集包含指定 label:value 的 pod,不能与 workloads 同时配置。
excludeLabels
Map
排除包含指定 label:value 的 pod,不能与 workloads 同时配置。
metadataLabels
Array
定义将 pod 的哪些 label 作为元数据上报。不指定则全部上报。
metadataContainer
Array
定义将 pod、container 的哪些信息作为元数据上报。不指定则全部上报。
customLabels
Map
用户自定义元数据。
container
String
指定采集哪些容器的日志。不指定或配置 *,则采集命中 pod 的所有容器的标准输出。不能与 workloads 同时配置。
workloads
Array
指定需要采集哪些 workload 的标准输出,同时指定采集的容器名称。
workload 对象说明
字段
类型
是否必填
说明
container
String
需要采集的容器名称。不指定,则采集所有容器标准输出。
kind
String
workload 类型。
name
String
workload 名称。
namespace
String
workload 所在 namespace。

containerFile 对象结构说明

{
"logPath": "/var/logs",
"filePattern": "*.log",
"filePaths": [
{
"path": "/var/logs",
"file": "*.log"
}
],
"customLabels": {
"key": "value1"
},
"namespace": "default",
"nsLabelSelector": "",
"excludeNamespace": "xxx,xx",
"includeLabels": {
"label": "value"
},
"excludeLabels": {
"exLabel": "exvalue"
},
"metadataLabels": [
"xx"
],
"metadataContainer": [
"namespace",
"pod_name",
"pod_ip",
"pod_uid",
"container_id",
"container_name",
"image_name",
"cluster_id"
],
"container": "xxx",
"workload": {
"name": "xxx",
"kind": "deployment"
}
}
字段
类型
是否必填
说明
logPath
String
采集路径。不可与 filePaths 同时配置。
filePattern
String
预期采集文件匹配模式,不可与 filePaths 同时配置。通配符支持 *?
filePaths
Array
配置预期采集容器内的路径及文件匹配模式,可配置多个采集路径。
includeLabels
Map
采集包含指定 label:value 的 pod,不能与 workload 同时配置。
excludeLabels
Map
排除包含指定 label:value 的 pod,不能与 workload 同时配置。
metadataLabels
Array
定义将 pod 的哪些 label 作为元数据上报。不指定则全部上报。
metadataContainer
Array
定义将 pod、container 的哪些信息作为元数据上报。不指定则全部上报。
customLabels
Map
用户自定义元数据。
container
String
指定采集哪些容器的日志。
workload
Object
指定需要采集哪些 workload 的标准输出,同时指定采集的容器名称。
workload 字段说明
字段
类型
是否必填
说明
kind
String
workload 类型。
name
String
workload 名称。
filePath 对象字段说明
字段
类型
是否必填
说明
path
String
预期采集的日志所在路径。
file
String
预期采集的日志文件名称匹配模式,通配符支持 *?

hostFile 对象结构说明

{
"logPath": "/var/logs",
"filePattern": "*.log",
"filePaths": [
{
"path": "/var/log",
"file": "*.log"
}
],
"customLabels": {
"key": "value"
}
}
字段
类型
是否必填
说明
logPath
String
采集路径。不可与 filePaths 同时配置。
filePattern
String
预期采集文件匹配模式,不可与 filePaths 同时配置。通配符支持 *?
filePaths
Array
配置预期采集容器内的路径及文件匹配模式,可配置多个采集路径。
customLabels
Map
用户自定义元数据。

clsDetail 对象结构说明

{
"topicId": "",
"topicName": "",
"logsetId": "",
"logsetName": "",
"logFormat": "",
"logType": "",
"hotPeriod": 7,
"period": 30,
"partitionCount": 1,
"tags": [
{
"key": "key",
"value": "value"
}
],
"autoSplit": false,
"maxSplitPartitions": 50,
"storageType": "hot",
"extractRule": {...},
"excludePaths": [
{
"excludeType": "File",
"value": "/var/log/1.log"
},
{
"excludeType": "Path",
"value": "/var/log1/"
}
],
"fullTextIndex": {...},
"indexs": [
{...}
],
"indexStatus": "off",
"region": "ap-xxx",
"advancedConfig": {...}
}
字段名
类型
是否必填
说明
topicId
String
日志主题 ID。
topicName
String
日志主题名称。当 topicId 为空时,指定日志主题名称,可根据日志主题名称自动拉取日志主题 ID,或者自动创建日志主题。
logsetId
String
日志集 ID。
logsetName
String
日志集名称。当 logsetId 为空时,指定日志集名称,可根据日志集名称自动拉取日志集 ID,或者自动创建日志集。
region
String
日志主题所在 region。默认为集群所在 region。
logType
String
日志类型。可选值:json_log(json 格式)、delimiter_log(分隔符提取)、minimalist_log(单行全文格式)、multiline_log(多行全文格式)、fullregex_log(完全正则格式)。默认为 minimalist_log。
logFormat
String
日志格式化。
storageType
String
日志主题存储类型(仅在自动创建 topic 时生效)。可选值:hot(标准存储)、cold(低频存储)。默认 hot。
hotPeriod
Number
日志沉降开关(仅在自动创建 topic 时生效)。0:关闭日志沉降,非 0:开启日志沉降后标准存储的天数。HotPeriod 需要大于等于 7,且小于 Period。仅在 StorageType 为 hot 时生效。
period
Number
日志存储周期(单位天)(仅在自动创建 topic 时生效)。标准存储取值范围 1~3600,低频存储取值范围 7~3600 天。取值为 3640 时代表永久保存。默认 30 天。
partitionCount
Number
日志主题分区个数(仅在自动创建 topic 时生效)。默认创建 1 个,最大支持创建 10 个分区。
tags
Array
标签列表(仅在自动创建 topic 时生效)。
autoSplit
Bool
是否开启自动分裂,“false” 或 "true"(仅在自动创建 topic 时生效)。
maxSplitPartitions
Number
开启自动分裂后,每个日志主题能够容许的最大分区数,默认为 50 个(仅在自动创建 topic 时生效)。
extractRule
Object
采集规则相关配置。
excludePaths
Array
采集黑路径配置。
fullTextIndex
Object
全文索引配置(仅在自动创建 topic 时生效)。
indexs
Array
索引配置(仅在自动创建 topic 时生效)。
indexStatus
String
索引状态(仅在自动创建 topic 时生效)。
autoIndex
String
是否开启自动索引(仅在自动创建 topic 时生效)。
advancedConfig
Object
高级采集配置。

tag 对象结构说明

{
"key": "key",
"value": "value"
}
字段
类型
是否必填
说明
key
String
标签名称。
value
String
标签值。

extractRule 对象结构说明

{
"timeKey": "xxx",
"timeFormat": "xxx",
"delimiter": "xxx",
"logRegex": "xxx",
"beginningRegex": "xxx",
"keys": [
"xx"
],
"filterKeys": [
"xx"
],
"filterRegex": [
"xx"
],
"unMatchUpload": "true",
"unMatchedKey": "parseFailed",
"backtracking": "-1",
"isGBK": "true",
"jsonStandard": "true",
"advancedFilters": [
{
"key": "level",
"rule": 0,
"value": "info"
}
]
}
字段名
类型
是否必填
说明
timeKey
String
时间字段的 key 名字,timeKey 和 timeFormat 必须成对出现。
timeFormat
String
时间字段的格式,参考 C 语言的 strftime 函数对于时间的格式说明输出参数。
delimiter
String
分隔符类型日志的分隔符,只有 logType 为 delimiter_log 时有效。
logRegex
String
整条日志匹配规则,只有 logType 为 fullregex_log 时有效。
beginningRegex
String
行首匹配规则,只有 logType 为 multiline_log 或 fullregex_log 时有效。
keys
Array
取的每个字段的 key 名字,为空的 key 代表丢弃这个字段,只有 logType 为 delimiter_log 时有效,json_log 的日志使用 json 本身的 key。
filterKeys
Array
需要过滤日志的 key,与 filterRegex 按下标进行对应。
filterRegex
Array
需要过滤日志的 key 对应的 regex,与 filterKeys 按下标进行对应。
unMatchUpload
String
解析失败日志是否上传,true 表示上传,false 表示不上传。
unMatchedKey
String
失败日志的 key。
backtracking
String
增量采集模式下的回溯数据量,默认 -1(全量采集),0 表示增量。
isGBK
String
是否为 GBK 编码。可选值:"false":否;"true":是。注意:此字段可能返回 null,表示取不到有效值。
jsonStandard
String
是否为标准 JSON。可选值:"false":否;"true":是。注意:此字段可能返回 null,表示取不到有效值。
advancedFilters
Array
高级过滤规则,该字段仅适用于 v1.1.15 及以上的采集组件版本,低于 v1.1.15 请使用 filterKeys 与 filterRegex。

advancedFilters 对象结构说明

{
"key": "level", // 需要过滤的key
"rule": 0, // 过滤规则 0(等于),1(字段存在),2(字段不存在), 3(不等于)
"value": "info" // 需要过滤的值value。 其中当rule为1或2时, value无需指定
}

excludePath 对象结构说明

{
"excludeType": "File",
"value": "/var/log/1.log"
}
字段
类型
是否必填
说明
excludeType
String
排除类型。取值 File、Path。
excludeType
String
排除的日志路径或者路径。

fullTextIndex 对象结构说明

{
"caseSensitive": false,
"containZH": false,
"status": "on",
"tokenizer": "@&()='\\",;:<>[]{}\\/ \\n\\t\\r"
}
字段名
类型
是否必填
说明
caseSensitive
bool
是否大小写敏感。
containZH
bool
是否包含中文。
status
String
全文索引开关。如果不设置,则会默认打开全文索引;如果设置为 on 打开,不设置其他参数,则 caseSensitive 和 tokenizer 都会是默认值;如果设置为 off 关闭,则不打开全文索引。
tokenizer
String
全文索引的分词符。如果全文索引开关打开,则必须设置 tokenizer。可以设置为 @&()='",;:<>[]{}/ \\n\\t\\r,为默认设置。

index 对象结构说明

{
"indexName": "xxx",
"indexType": "text",
"tokenizer": "@&()='\\",;:<>[]{}/ \\n\\t\\r",
"sqlFlag": true,
"containZH": false
}
字段名
类型
是否必填
说明
indexName
String
索引名称。
indexType
String
索引类型。可选值:long、text、double。
tokenizer
String
字段分词符。
sqlFlag
bool
字段是否开启分析功能。
containZH
bool
是否包含中文。

advancedConfig 对象结构说明

{
"ClsAgentMaxDepth": 1,
"ClsAgentFileTimeout": 60,
"ClsAgentParseFailMerge": false,
}
字段名
类型
是否必填
说明
ClsAgentMaxDepth
Number
当前配置采集时下钻的深度。
ClsAgentFileTimeout
Number
当前配置在采集文件时,当文件在指定时间未写入日志时,采集器释放文件句柄。
ClsAgentParseFailMerge
bool
采集器解析文件失败后是否合并日志上报。

kafkaDetail 对象结构说明

{
"brokers": "127.0.0.1:9092",
"topic": "test_log",
"timestampKey": "@timestamp",
"timestampFormat": "double",
"extractRule": {
"beginningRegex": "xxxx"
},
"logType": "minimalist_log",
"metadata": {
"formatType": "json"
}
}
字段名
类型
是否必填
说明
brokers
String
Kafka brokers。
topic
String
Kafka topic。
timestampKey
String
时间戳的 key,默认 @timestamp。
timestampFormat
String
时间戳格式。可选值:double、iso8601。默认 double。
extractRule.beginningRegex
String
行首匹配规则。logType 为 multiline_log 时,该项需要配置。
logType
String
日志提取模式。默认单行全文。可选值:minimalist_log(单行全文)、multiline_log(多行全文)、json(json 格式)。
metadata.formatType
String
元数据格式。可选值:fluent-bit(fluent-bit 原生格式)、fluent-bit-string(字符串类型)。

日志采集源配置示例

容器标准输出

采集 default 命名空间中的所有容器的标准输出:
{
"apiVersion": "cls.cloud.tencent.com/v1",
"kind": "LogConfig",
"metadata": {
"name": "test"
},
"spec": {
"inputDetail": {
"containerStdout": {
"allContainers": true,
"namespace": "default"
},
"type": "container_stdout"
},
...
}
}
采集 production 命名空间中属于 ingress-gateway deployment 的 pod 中的所有容器的标准输出:
{
"apiVersion": "cls.cloud.tencent.com\\/v1",
"kind": "LogConfig",
"spec": {
"inputDetail": {
"containerStdout": {
"allContainers": false,
"workloads": [
{
"kind": "deployment",
"name": "ingress-gateway",
"namespace": "production"
}
]
},
"type": "container_stdout"
},
...
}
}
采集 production 命名空间中 pod 标签中包含 k8s-app=nginx 的 pod 中的所有容器的标准输出:
{
"apiVersion": "cls.cloud.tencent.com\\/v1",
"kind": "LogConfig",
"spec": {
"inputDetail": {
"containerStdout": {
"allContainers": false,
"includeLabels": {
"k8s-app": "nginx"
},
"namespace": "production"
},
"type": "container_stdout"
},
...
}
}
采集 production 命名空间中属于 ingress-gateway 工作负载的 pod 中,名称为 ingress 的容器的标准输出:
{
"apiVersion": "cls.cloud.tencent.com\\/v1",
"kind": "LogConfig",
"spec": {
"inputDetail": {
"containerStdout": {
"allContainers": false,
"includeLabels": {
"k8s-app": "nginx"
},
"namespace": "production"
},
"type": "container_stdout"
},
...
}
}

容器文件采集

采集 production 命名空间中属于 ingress-gateway deployment 的 pod 中的 nginx 容器中 /data/nginx/log/ 路径下名为 access.log 的文件:
{
"apiVersion": "cls.cloud.tencent.com/v1",
"kind": "LogConfig",
"metadata": {
"name": "test"
},
"spec": {
"inputDetail": {
"containerFile": {
"container": "nginx",
"filePaths": [
{
"file": "access.log",
"path": "/data/nginx/log"
}
],
"namespace": "production",
"workload": {
"kind": "deployment",
"name": "ingress-gateway"
}
},
"type": "container_file"
},
...
}
}
采集 production 命名空间中 pod 标签包含 k8s-app=ingress-gateway 的 pod 中的 nginx 容器中 /data/nginx/log/ 路径下名为 access.log 的文件:
{
"apiVersion": "cls.cloud.tencent.com/v1",
"kind": "LogConfig",
"spec": {
"inputDetail": {
"containerFile": {
"container": "nginx",
"filePaths": [
{
"file": "access.log",
"path": "/data/nginx/log"
}
],
"includeLabels": {
"k8s-app": "ingress-gateway"
},
"namespace": "production"
},
"type": "container_file"
}
}
}

主机文件采集

采集主机 /data/ 路径下所有 .log 文件:
{
"apiVersion": "cls.cloud.tencent.com/v1",
"kind": "LogConfig",
"spec": {
"inputDetail": {
"containerStdout": {
"allContainers": false,
"includeLabels": {
"k8s-app": "nginx"
},
"namespace": "production"
},
"type": "container_stdout"
},
...
}
}

完整示例

投递到 CLS 的日志采集规则,采集 default 命名空间下 deployment/testlog1 的标准输出:
{
"apiVersion": "cls.cloud.tencent.com\\/v1",
"kind": "LogConfig",
"metadata": {
"name": "123"
},
"spec": {
"clsDetail": {
"extractRule": {
"backtracking": "0",
"isGBK": "false",
"jsonStandard": "false",
"unMatchUpload": "false"
},
"indexs": [
{
"indexName": "namespace"
},
{
"indexName": "pod_name"
},
{
"indexName": "container_name"
}
],
"logFormat": "default",
"logType": "minimalist_log",
"maxSplitPartitions": 0,
"region": "ap-chengdu",
"storageType": "",
"topicId": "c26b66bd-617e-4923-bea0-test"
},
"inputDetail": {
"containerStdout": {
"metadataContainer": [
"namespace",
"pod_name",
"pod_ip",
"pod_uid",
"container_id",
"container_name",
"image_name",
"cluster_id"
],
"nsLabelSelector": "",
"workloads": [
{
"kind": "deployment",
"name": "testlog1",
"namespace": "default"
}
]
},
"type": "container_stdout"
}
}
}
投递到 Kafka 的采集规则,采集 default 命名空间下的所有 pod 标准输出:
{
"apiVersion": "cls.cloud.tencent.com\\/v1",
"kind": "LogConfig",
"metadata": {
"name": "321"
},
"spec": {
"inputDetail": {
"containerStdout": {
"allContainers": true,
"namespace": "default",
"nsLabelSelector": ""
},
"type": "container_stdout"
},
"kafkaDetail": {
"brokers": "127.0.0.1:9092",
"extractRule": {},
"instanceId": "",
"kafkaType": "SelfBuildKafka",
"logType": "minimalist_log",
"messageKey": {
"value": "",
"valueFrom": {
"fieldRef": {
"fieldPath": ""
}
}
},
"metadata": {},
"timestampFormat": "double",
"timestampKey": "",
"topic": "test"
}
}
}


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈