CRD 介绍
CRD 定义的各个字段的具体含义,如下
CRD 资源类型
LogConfig 定义
LogConfigSpec 定义
SrcConfig 定义
字段 |
描述 |
srcType SrcType |
srcType, 可选值 host, container,必填 |
logType ContainerLogType |
logType 只有 srcType 字段为 container 时,logType 才有用 可选值 stdout,internal,分别表示标准输出日志和容器内部日志,必填 |
srcDir string |
srcDir 日志采集目录,注意是目录,当 srcType=container,logType=stdout 时 不需要指定 srcDir,选填 |
matchPattern string |
matchPattern srcDir 下日志文件匹配规则,选填 |
ignorePattern string |
ignorePattern srcDir 下日志文件就忽略规则,选填 |
timeFormat string |
timeFormat 用于投 BOS 时,原文件路径日期解析,选填 |
ttl integer |
ttl agent 采集日志时间范围,单位为天 ,必填 |
useMultiline boolean |
useMultiline 是否启用多行模式,选填 |
multilineRegex string |
multilineRegex 多行模式首行模式,选填 |
recursiveDir boolean |
recursiveDir 是否递归采集 srcDir 下满足 matchPattern 的所有文件,包括子目录,选填 |
logTime LogTimeType |
logTime 日志时间,可选值 system, logTime, 分别表示使用系统时间和使用日志时间,选填 |
timestampKey string |
timestampKey 指定解析后的字段作为日志时间,选填 |
dateFormat string |
dateFormat 指定时间戳字段的时间解析格式,format格式参考https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'Z" ,选填 |
filterExpr string |
filterExpr 日志匹配表达式,符合规则的日志,将被采集,选填 |
processType ProcessType |
processType 解析类型,选填 |
processConfig ProcessConfig |
processConfig 对应 processType 的 process 参数,选填 |
matchLabels KVPair array |
matchLabels 容器环境匹配 labels,这里的 label 对应 docker inspect 上的 label, 不是 pod 上的 label,选填 |
ignoreLabels KVPair array |
ignoreLabels 容器环境忽略 labels,具体同上,选填 |
matchEnvs KVPair array |
matchEnvs 容器环境匹配的 env,选填 |
ignoreEnvs KVPair array |
matchEnvs 容器环境忽略匹配的 env,选填 |
matchLabels/matchEnvs 两者必须要填一个
DstConfig 定义
字段 |
描述 |
dstType DstType |
dstType 目的端存储类型,当前支持 BLS ,选填 |
logStore string |
logStore BLS 日志集名字,选填 |
retention integer |
retention 日志存储时间单位为 天 ,选填 |
rateLimit integer |
rateLimit 单位为 MB,选填 |
KVPair 定义
字段 |
描述 |
key string |
|
value string |
|
ProcessConfig 定义
字段 |
描述 |
regex string |
regex 正则规则 ,选填 |
separator string |
separator 分隔符,选填 |
quote string |
quote 分隔符场景可指定引用符,可选值包括:空,双引号",单引号'和自定义 ,选填 |
sampleLog string |
sampleLog 解析日志样例, 解析后用于在 console 配置 keys 与 dataType ,选填 |
keys string |
keys 解析结果的列名;@message 为系统保留字,不允许设置为 key,选填 |
dataType string |
dataType 解析结果每列对应的数据类型,支持string/int/float/bool, 必须要与 keys 一一对应,选填 |
discardOnFailure boolean |
discardOnFailure 日志解析失败是否丢弃 true: 丢弃 false: 返回原值,选填 |
KeepOriginal boolean |
keepOriginal 是否保留原日志 true: 保留原日志到 kafka 中的 @message 字段,bls 日志集中的 @raw 字段 false: 解析成功则不保留原日志,选填 |
CRD 示例
配置容器标准输出 CRD 示例
采集所有 namespace 下所有容器
apiVersion: cce.baidubce.com/v1
kind: LogConfig
metadata:
name: all-container-stdout-log
namespace: kube-system
spec:
srcConfig:
srcType: container
logType: stdout
ttl: 3
matchLabels:
- key: io.kubernetes.container.name
value: .*
- key: io.kubernetes.pod.namespace
value: .*
dstConfig:
dstType: BLS
logStore: container-stdout-log
retention: 10
rateLimit: 10
采集指定 namespace 下所有容器
apiVersion: cce.baidubce.com/v1
kind: LogConfig
metadata:
name: kube-system-container-stdout-log
namespace: kube-system
spec:
srcConfig:
srcType: container
logType: stdout
ttl: 3
matchLabels:
- key: io.kubernetes.container.name
value: .*
- key: io.kubernetes.pod.namespace
value: kube-system
dstConfig:
dstType: BLS
logStore: kube-system-container-stdout-log
retention: 10
rateLimit: 10
采集指定 namespace 指定容器
apiVersion: cce.baidubce.com/v1
kind: LogConfig
metadata:
name: kube-state-metrics-log
namespace: kube-system
spec:
srcConfig:
srcType: container
logType: stdout
ttl: 3
matchLabels:
- key: io.kubernetes.container.name
value: kube-state-metrics
- key: io.kubernetes.pod.namespace
value: kube-system
dstConfig:
dstType: BLS
logStore: kube-state-metrics-log
retention: 10
rateLimit: 10
配置容器文件路径 CRD 示例
采集指定 namespace 指定容器内部文件路径
apiVersion: cce.baidubce.com/v1
kind: LogConfig
metadata:
name: tomocat-log
namespace: default
spec:
srcConfig:
srcType: container
logType: internal
srcDir: /usr/local/tomcat/logs/
matchPattern: catalina.*.log
ttl: 3
matchLabels:
- key: io.kubernetes.container.name
value: tomcat
- key: io.kubernetes.pod.namespace
value: default
dstConfig:
dstType: BLS
logStore: tomocat-log
retention: 10
rateLimit: 10
Tomcat deployment 参考示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat
spec:
selector:
matchLabels:
app: tomcat
replicas: 4
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: "tomcat:7.0"
volumeMounts:
- name: tomcat-log
mountPath: /usr/local/tomcat/logs
volumes:
- name: tomcat-log
emptyDir: {}
配置节点文件路径 CRD 示例
采集节点上指定目录下日志文件
apiVersion: cce.baidubce.com/v1
kind: LogConfig
metadata:
name: host-messages
namespace: kube-system
spec:
srcConfig:
srcType: host
srcDir: /logbeat_host/var/log
matchPattern: messages
ttl: 3
dstConfig:
dstType: BLS
logStore: host-messages
retention: 10
rateLimit: 10