云日志服务 LTS-通过CRD方式采集原生Kubernetes容器日志:配置参数说明

时间:2023-11-02 11:30:23

配置参数说明

表2 基础参数

字段

类型

是否必选

说明

示例

logGroup

string

日志组,日志组名称长度取值范围[1,64],默认为集群的默认日志组。

  • 如果您要自定义日志组,请确保该日志组未被使用。
  • 如果配置的日志组不存在,会自动创建该日志组。

k8s-log-{clusterId}

ttlInDays

int

日志保留时间。

  • 当配置的logGroup不存在,则会以ttlInDays指定的保存时间创建logGroup,取值范围[1,365],默认为30天。
  • 当配置的logGroup存在,则ttlInDays不生效。

7

logStream

string

日志流,日志流名称长度取值范围[1,64]。如果配置的日志流不存在,会自动创建该日志流。

k8s-log-stream

hostGroup

string

主机组,默认为集群的默认主机组。如果您要自定义主机组,请首先在LTS的“主机管理-主机组”页面创建该主机组。

k8s-hostgroup-{clusterId}

inputDetail

object

日志采集配置详细定义,具体字段请参考表3 inputDetail配置

apiVersion: lts.com/v1
kind: LtsConfig
metadata:
    name: lts-crd-stdout-all
spec:
    logStream: logstream-1
    inputDetail:
     type: container_stdout
      containerStdout:
        allContainers: true

logDetail

object

结构化配置详细定义,具体字段请参考表5

-

表3 inputDetail配置

字段

类型

是否必选

说明

示例

type

string

指定采集日志的类型,取值范围:

  • container_stdout:容器标准输出
  • container_file:容器的日志文件

container_file

logType

string

指定日志格式,取值范围:

  • single_line_log:单行日志
  • multi_line_log:多行日志

默认为单行日志。

single_line_log

logTime

string

logType为single_line_log时,配置日志时间格式,取值范围:

  • systemTime:系统时间
  • timeWildcard:时间通配符

默认为systemTime。

systemTime

timeWildcard

string

logType为single_line_log并且logTime为timeWildcard时必选,指定时间通配符的格式。

YYYY-MM-DD hh:mm:ss.SSS

beginningType

string

logType为multi_line_log时,配置日志的分行模式,取值范围:

  • byLogTime:根据日志时间分行
  • byRegular:根据正则表达式分行

默认byLogTime。

byLogTime

beginningPattern

string

logType为multi_line_log时必选,配置日志分行的关键字。

  • beginningType为byLogTime:YYYY-MM-DD hh:mm:ss.SSS
  • beginningType为byRegular:\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3}\s.+

namespace

string

配置生效的namespace。
说明:

如果指定了workloads或者workload,并且workload中指定了namespace,那么以workload中的namespace为准。

  inputDetail:
    type: container_stdout
    containerStdout:
      allContainers: false
      namespace: ingress

allContainers

bool

type是container_stdout时,如果要对所有容器生效,则设置为true。

说明:

1. 请保证只有一个配置指定了allContainers: true。

2. 如果多个配置中都配置了allContainers: true,那么最终只有其中一个生效。

3. allContainer是跨namespace的,即:如果配置了allContainers: true,那么本配置中的namespace不生效。

  inputDetail:
    type: container_stdout
    containerStdout:
      allContainers: true

includeLabels

object

通过docker容器的Label进行过滤。

  inputDetail:
    type: container_file
    containerFile:
      logPath: /data/nginx/log/*.log
      container: nginx
      namespace: ingress
      includeLabels:
        label_key_1: label_value_1
        label_key_2: label_value_2

container

string

指定docker容器的名称。

nginx

workloads

array

type是container_stdout时,可以通过workloads指定多个工作负载。

  inputDetail:
    type: container_stdout
    containerStdout:
      allContainers: false
      workloads:
        - namespace: ingress
          name: ingress-gateway
          kind: deployment

workload

object

type是container_file时,可以用workload指定一个工作负载。

  inputDetail:
    type: container_file
    containerFile:
      logPath: /data/nginx/log/*.log
      container: nginx
      namespace: ingress
      workload:
        name: ingress-gateway
        kind: deployment

logPath

string

type是container_file时必选,配置要采集的容器内部的日志文件路径(可以为目录、文件绝对路径、或者模糊匹配),路径长度范围[2, 128]。

1. /var/logs/,采集本目录下后缀为*.log, *.trace, *.out的文件;

2. /var/logs/test.log,只采集该文件;

3. /var/logs/*/a.log,采集/var/logs/目录的下一级目录中的a.log文件

4. /var/logs/service/a*.log,采集/var/logs/service/目录下以字母’a’开头,以’.log’结尾的文件

5. /var/logs/**/a.log,**表示递归5层目录

blackListPath

array

配置黑名单,每个路径长度范围[2, 128]。

[/var/logs/*/a.log],具体路径规则请参考logPath中示例。

表4 workload配置

字段

类型

是否必选

说明

kind

string

工作负载的类型

  • deployment
  • daemonset
  • statefulset
  • job
  • cronjob

name

string

工作负载的名称

namespace

string

工作负载的namespace

container

string

容器的名称

表5 logDetail配置

字段

类型

是否必选

说明

示例

logType

string

结构化类型,取值范围:

  • custom_regex:正则分析
  • json:JSON
  • delimiter:分隔符
    logType: json
    extractRule:
      simpleLog: '{"json":"test100"}'
      simpleFields:
        - fieldName: json
          type: string
          userDefinedName: j111
      tagFields:
        - fieldName: hostName
          type: string

extractRule

object

结构化的详细规则,具体字段请参考表6

表6 extractRule配置

字段

类型

是否必选

说明

simpleLog

string

结构化示例日志。示例:"2021-09-09/18:15:41 this log is Error NO 6323"

regexRules

string

正则表达式,当logType=custom_regex时必选,取值范围:[1,5000]

tokenizer

string

分隔符,当logType=delimiter时必选

simpleFields

array

结构化示例字段列表,配置logDetail时必选,数组长度范围:[1,200]

tagFields

array

结构化tag字段列表,数组长度范围:[1,200]

表7 simpleFields配置

字段

类型

是否必选

说明

fieldName

string

字段名称,长度范围:[1,50]

type

string

字段的数据类型,取值范围:

  • string
  • long
  • float

userDefinedName

string

logType=json时的自定义名称,长度范围:[1,64]

isAnalysis

bool

是否开启快速分析

表8 tagFields配置

字段

类型

是否必选

说明

fieldName

string

字段名称,长度范围:[1,50]

type

string

字段的数据类型,取值范围:

  • string
  • long
  • float

simpleLog

string

示例字段,长度范围:[1,64]

isAnalysis

bool

是否开启快速分析

support.huaweicloud.com/usermanual-lts/lts_04_1110.html