全部产品
Search
文档中心

日志服务:通过Sidecar-CRD方式采集容器文本日志

更新时间:Feb 20, 2024

本文介绍如何安装Sidecar及使用CRD方式创建Logtail配置,完成容器文本日志的采集。

前提条件

目标容器持续产生日志。

重要

Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取日志

背景信息

通过Sidecar模式采集日志,依赖于Logtail容器和业务容器共享的日志目录。业务容器将日志写入到共享目录中,Logtail通过监控共享目录中日志文件的变化并采集日志。更多信息,请参见Sidecar日志采集介绍Sidecar模式示例

步骤一:安装Sidecar

  1. 登录Kubernetes集群。

  2. 创建一个YAML文件。

    sidecar.yaml为文件名,请根据实际情况替换。

    vim sidecar.yaml
  3. 在YAML文件输入如下脚本,并根据实际情况设置其中的参数。

    重要

    请确保配置文件中的env中的TZ(Time Zone)配置正确,否则原始日志与处理日志的时区不一致,可能会导致采集到的日志写入过去或未来的情况。例如是中国大陆,您可以设置时区为Asia/Shanghai。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: nginx-log-sidecar-demo
      namespace: default
    spec:
      template:
        metadata:
          name: nginx-log-sidecar-demo
        spec:
          restartPolicy: Never
          containers:
            # 主容器
            - name: nginx-log-demo
              image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
              command: ["/bin/sh", "-c"]
              # 主业务进程等待Logtail开始采集后启动,防止开头日志丢失。使用/tasksite/cornerstone接受通知。
              # 主业务进程退出后,通知采集容器退出,使用/tasksite/tombstone发送通知。
              args:
                - until [[ -f /tasksite/cornerstone ]]; do sleep 1; done;
                  /bin/mock_log --log-type=nginx --stdout=false --stderr=true --path=/var/log/nginx/access.log --total-count=100 --logs-per-sec=100;
                  retcode=$?;
                  touch /tasksite/tombstone;
                  exit $retcode
              resources:
                limits:
                  cpu: 500m
                  memory: 512Mi
                requests:
                  cpu: 10m
                  memory: 30Mi
              volumeMounts:
                - name: nginx-log
                  mountPath: /var/log/nginx
                - mountPath: /tasksite
                  name: tasksite
            # Logtail sidecar容器
            - name: logtail
              # 新的镜像版本,请参见https://cr.console.aliyun.com/repository/cn-hangzhou/log-service/logtail/images。
              # 请按业务需求修改地址。
              image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:v1.5.1.0-aliyun
              command: ["/bin/sh", "-c"]
              # 第一个`sleep 10`等待Logtail开始采集。开始采集前需要先从服务器拉取Logtail配置。
              # 第二个`sleep 10`等待Logtail完成采集,防止结尾日志丢失。完成采集时需先确保已将所有数据发送给服务器。
              args:
                - /etc/init.d/ilogtaild start;
                  sleep 10;
                  touch /tasksite/cornerstone;
                  until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
                  sleep 10;
                  /etc/init.d/ilogtaild stop;
              livenessProbe:
                exec:
                  command:
                    - /etc/init.d/ilogtaild
                    - status
                initialDelaySeconds: 30
                periodSeconds: 30
              resources:
                limits:
                  cpu: 500m
                  memory: 512Mi
                requests:
                  cpu: 10m
                  memory: 30Mi
              env:
                ##### base config
                # user id
                - name: ALIYUN_LOGTAIL_USER_ID
                  value: "${your_aliyun_user_id}"
                # user defined id
                - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
                  value: ${your_machine_group_user_defined_id}
                # config file path in logtail's container
                - name: ALIYUN_LOGTAIL_CONFIG
                  value: /etc/ilogtail/conf/${your_region_config}/ilogtail_config.json
                ##### env tags config
                - name: "ALIYUN_LOG_ENV_TAGS"
                  value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
                - name: "_pod_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                - name: "_pod_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.podIP
                - name: "_namespace_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: "_node_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: "_node_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.hostIP
              volumeMounts:
                - name: nginx-log
                  mountPath: /var/log/nginx
                - mountPath: /tasksite
                  name: tasksite
          ##### share this volume
          volumes:
            - name: nginx-log
              emptyDir: {}
            - name: tasksite
              emptyDir:
                medium: Memory
    1. 在配置脚本中找到如下内容,完成基础配置。

      ##### base config
                # user id
                - name: "ALIYUN_LOGTAIL_USER_ID"
                  value: "${your_aliyun_user_id}"
                # user defined id
                - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
                  value: "${your_machine_group_user_defined_id}"
                # config file path in logtail's container
                - name: "ALIYUN_LOGTAIL_CONFIG"
                  value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"

      变量

      说明

      ${your_aliyun_user_id}

      设置为您的阿里云账号ID。更多信息,请参见步骤一:获取日志服务所在的阿里云账号(主账号)ID

      ${your_machine_group_user_defined_id}

      自定义设置机器组的自定义标识,例如nginx-log-sidecar。

      重要

      请确保该标识在您的Project所在地域内唯一。

      ${your_region_config}

      请根据日志服务Project所在地域和访问的网络类型填写。其中,地域信息请参见安装Logtail(Linux系统)

      • 如果使用公网采集日志,格式为region-internet,例如华东 1(杭州)cn-hangzhou-internet

      • 如果使用阿里云内网采集日志,格式为region。例如华东 1(杭州)cn-hangzhou

    2. 在配置脚本中找到如下内容,设置挂载路径。

      说明

      建议使用emptyDir挂载方式。

      volumeMounts:
      - name: nginx-log
        mountPath: /var/log/nginx
        ##### share this volume
      volumes:
      - name: nginx-log
        emptyDir: {}

      参数

      说明

      name

      自定义设置卷的名称。

      重要

      volumeMounts节点下的name参数与volumes节点下的name参数需设置为一致,即确保Logtail容器和业务容器挂载相同的卷上。

      mountPath

      设置挂载路径,即容器文本日志所在文件的路径。

    3. 在配置脚本中找到如下内容,设置延迟停止采集的时间。

      通常情况下,延迟停止采集的时间为10秒,即Logtail容器在接收到外部停止信号后会等待10秒再退出,防止有部分数据没有采集完毕。

      command:        
      - sh        
      - -c        
      - /usr/local/ilogtail/run_logtail.sh 10
  4. 执行如下命令使sidecar.yaml文件配置生效。

    sidecar.yaml为文件名,请根据实际情况替换。

    kubectl apply -f sidecar.yaml

步骤二:创建Logtail配置

只需要定义AliyunLogConfig CRD即可创建Logtail配置。创建完成后,系统自动应用该Logtail配置。如果您要删除Logtail配置只需删除对应的CRD资源即可。

  1. 登录Kubernetes集群。

  2. 执行如下命令创建一个YAML文件。

    cube.yaml为文件名,请根据实际情况替换。

    vim cube.yaml
  3. 在YAML文件输入如下脚本,并根据实际情况设置其中的参数。

    重要
    • 请确保configName参数值在日志服务Project中唯一存在。

    • 如果多个CRD关联同一个Logtail配置,则删除或修改任意一个CRD均会影响到该Logtail配置,导致其他关联该Logtail配置的CRD状态与服务端不一致。

    • 通过Sidecar模式只能采集文本日志,需将dockerFile参数设置为false。

    apiVersion: log.alibabacloud.com/v1alpha1      # 使用默认值,无需修改。
    kind: AliyunLogConfig                          # 使用默认值,无需修改。
    metadata:
      name: simple-stdout-example                  # 设置资源名,在当前Kubernetes集群内唯一。
    spec:
      project: k8s-my-project                      # (可选)设置Project名称。默认值为安装Logtail组件时设置的Project。
      logstore: k8s-stdout                         # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。
      logstoreMode: standard                       # (可选)设置Logstore类型,该参数值仅在新建Logstore时生效。
      machineGroups:                               # 设置机器组的名称,需与您在安装Sidecar时设置的${your_machine_group_user_defined_id}的值一致。Sidecar与CRD通过此处配置的机器组建立关联。
      - nginx-log-sidecar
      shardCount: 2                                # (可选)设置Shard数量。默认值为2,取值范围1~10。
      lifeCycle: 90                                # (可选)设置Logstore中数据的存储时间。默认值为90,取值范围为1~3650。其中,3650天为永久存储。
      logtailConfig:                               # 设置Logtail配置。
        inputType: file                            # 设置采集的数据源类型,通过Sidecar-CRD方式只支持采集文本日志,即需要设置为file。
        configName: simple-stdout-example          # 设置Logtail配置名称,与资源名(metadata.name)保持一致。
        inputDetail:                               # 设置Logtail配置的详细信息,具体配置请参见本文下方的示例。
        ...

    参数

    数据类型

    是否必填

    说明

    project

    string

    Project名称。默认值为安装Logtail组件时所设置的Project。

    logstore

    string

    Logstore名称。

    如果您所指定的Logstore不存在,日志服务会自动创建。

    logstoreMode

    string

    Logstore类型。更多信息,请参见管理Logstore。可选值:

    • query:查询型Logstore。

    • standard:标准型Logstore。

    重要
    • 该参数值仅在新建Logstore时生效,即您只能在创建Logstore时,指定Logstore类型。如果您在logstore参数中指定的Logstore已存在,则修改该参数值,不会生效。

    • 针对alibaba-log-controller 0.3.3及以上版本,该设置才会生效。

    shardCount

    int

    Shard数量。默认值为2,取值范围为1~10。

    lifeCycle

    int

    Logstore中数据的存储时间。默认值为90,取值范围为1~3650。其中,3650天为永久存储。

    machineGroups

    array

    设置机器组名称,需与您在步骤一:安装Sidecar中设置的${your_machine_group_user_defined_id}一致,例如nginx-log-sidecar。

    日志服务将根据您设置的名称自动创建机器组,建立Sidecar与CRD之间的关联。

    重要

    机器组自定义标识的配置格式如下所示,请严格按照此格式配置。

      machineGroups:      
      - nginx-log-sidecar

    logtailConfig

    object

    Logtail配置的详细定义,一般只需要定义其中的inputType参数、configName参数和inputDetail参数。详细参数说明,请参见Logtail配置

    相关示例,请参见配置示例单目录

  4. 执行如下命令使Logtail配置生效。

    cube.yaml为文件名,请根据实际情况替换。

    kubectl apply -f cube.yaml

    创建Logtail配置后,您可以通过CRD方式或控制台方式查看Logtail配置。具体操作,请参见查看Logtail配置

    重要

    采集到日志后,您需要先创建索引,才能在Logstore中查询和分析日志。具体操作,请参见创建索引

配置示例

单目录

通过Sidecar-CRD方式采集本地IDC上自建Kubernetes集群中nginx-log-demo容器的文本日志(包括Nginx访问日志和Nginx错误日志)。基本信息如下:

  • 日志服务所在地域为华东1(杭州),需要通过公网采集。

  • 待挂载的卷的名称为nginx-log,挂载方式为emptyDir,将nginx-log卷分别挂载到nginx-log-demo容器和Logtail容器的/var/log/nginx目录下。

  • Nginx访问日志所在文件的路径为/var/log/nginx/access.log ,用于存储Nginx访问日志的目标Logstore为nginx-access

  • Nginx错误日志所在文件的路径为/var/log/nginx/error.log ,用于存储Nginx错误日志的目标Logstore为nginx-error

配置示例如下:

  • Sidecar示例

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: nginx-log-sidecar-demo
      namespace: default
    spec:
      template:
        metadata:
          name: nginx-log-sidecar-demo
        spec:
          restartPolicy: Never
          containers:
            # 主容器
            - name: nginx-log-demo
              image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
              command: ["/bin/sh", "-c"]
              # 主业务进程等待Logtail开始采集后启动,防止开头日志丢失。使用/tasksite/cornerstone接受通知。
              # 主业务进程退出后,通知采集容器退出,使用/tasksite/tombstone发送通知。
              args:
                - until [[ -f /tasksite/cornerstone ]]; do sleep 1; done;
                  /bin/mock_log --log-type=nginx --stdout=false --stderr=true --path=/var/log/nginx/access.log --total-count=100 --logs-per-sec=100;
                  retcode=$?;
                  touch /tasksite/tombstone;
                  exit $retcode
            resources: 
              limits:
                cpu: 500m
                memory: 512Mi
              requests:
                cpu: 10m
                memory: 30Mi
              volumeMounts:
                - name: nginx-log
                  mountPath: /var/log/nginx
                - mountPath: /tasksite
                  name: tasksite
            # Logtail sidecar容器
            - name: logtail
              # 新的镜像版本,请参见https://cr.console.aliyun.com/repository/cn-hangzhou/log-service/logtail/images。
              # 请按业务需求修改地址。
              image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:v1.5.1.0-aliyun
              command: ["/bin/sh", "-c"]
              # 第一个`sleep 10`等待Logtail开始采集。开始采集前需要先从服务器拉取Logtail配置。
              # 第二个`sleep 10`等待Logtail完成采集,防止结尾日志丢失。完成采集时需先确保已将所有数据发送给服务器。
              args:
                - /etc/init.d/ilogtaild start;
                  sleep 10;
                  touch /tasksite/cornerstone;
                  until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
                  sleep 10;
                  /etc/init.d/ilogtaild stop;
              livenessProbe:
                exec:
                  command:
                    - /etc/init.d/ilogtaild
                    - status
                initialDelaySeconds: 30
                periodSeconds: 30
              resources:
                limits:
                  cpu: 500m
                  memory: 512Mi
                requests:
                  cpu: 10m
                  memory: 30Mi
              env:
                ##### base config
                # user id
                - name: ALIYUN_LOGTAIL_USER_ID
                  value: "1023****3423"
                # user defined id
                - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
                  value: nginx-log-sidecar
                # config file path in logtail's container
                - name: ALIYUN_LOGTAIL_CONFIG
                  value: /etc/ilogtail/conf/cn-hangzhou-internet/ilogtail_config.json
                ##### env tags config
                - name: "ALIYUN_LOG_ENV_TAGS"
                  value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
                - name: "_pod_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                - name: "_pod_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.podIP
                - name: "_namespace_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: "_node_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: "_node_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.hostIP
              volumeMounts:
                - name: nginx-log
                  mountPath: /var/log/nginx
                - mountPath: /tasksite
                  name: tasksite
          ##### share this volume
          volumes:
            - name: nginx-log
              emptyDir: {}
            - name: tasksite
              emptyDir:
                medium: Memory
  • CRD示例

    创建两个Logtail配置用于采集Nginx访问日志和Nginx错误日志。

    • 采集Nginx访问日志

      重要

      Sidecar模式下,需将dockerFile参数设置为false。

      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      metadata:
        # 资源名称,在您的K8s集群中必须唯一。
        name: nginx-log-access-example
      spec:
        # 设置Project名称。默认值为安装Logtail时所设置的Project。
        project: k8s-nginx-sidecar-demo
        # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。
        logstore: nginx-access
        # 设置机器组名称,需与您在安装Sidecar时设置的${your_machine_group_user_defined_id}的值一致。
        machineGroups:
        - nginx-log-sidecar
        # 设置Logtail配置。
        logtailConfig:
          # 设置采集的数据源类型,通过Sidecar-CRD方式只支持采集文本日志,即需要设置为file。
          inputType: file
          # 设置Logtail配置的名称,必须与资源名(metadata.name)相同。
          configName: nginx-log-access-example
          inputDetail:
            # 指定通过完整正则模式采集容器文本日志。
            logType: common_reg_log
            # 设置日志文件所在路径。
            logPath: /var/log/nginx
            # 设置日志文件的名称。支持通配符星号(*)和半角问号(?),例如log_*.log。
            filePattern: access.log
            # sidecar模式下,需设置dockerFile为false。
            dockerFile: false
            # 设置用于匹配日志行首的行首正则表达式。如果为单行模式,设置成'.*'。
            logBeginRegex: '.*'
            # 设置正则表达式,用于提取日志内容。请根据实际情况设置。
            regex: '(\S+)\s(\S+)\s\S+\s\S+\s"(\S+)\s(\S+)\s+([^"]+)"\s+(\S+)\s(\S+)\s(\d+)\s(\d+)\s(\S+)\s"([^"]+)"\s.*'
            # 设置提取的字段列表。
            key : ["time", "ip", "method", "url", "protocol", "latency", "payload", "status", "response-size",user-agent"]
    • 采集Nginx错误日志

      重要

      Sidecar模式下,需将dockerFile参数设置为false。

      # config for error log
      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      metadata:
        # 设置资源名,在当前Kubernetes集群内唯一。
        name: nginx-log-error-example
      spec:
        # 设置Project名称。默认值为安装Logtail时所设置的Project。
        project: k8s-nginx-sidecar-demo
        # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。
        logstore: nginx-error
        # 设置机器组名称,需与您在安装Sidecar时设置的${your_machine_group_user_defined_id}的值一致。
        machineGroups:
        - nginx-log-sidecar
        # 设置Logtail配置。
        logtailConfig:
          # 设置采集的数据源类型,通过Sidecar-CRD方式只支持采集文本日志,即需要设置为file。
          inputType: file
          # 设置Logtail配置名称,必须与资源名(metadata.name)相同。
          configName: nginx-log-error-example
          inputDetail:
            # 指定通过完整正则模式采集容器文本日志。
            logType: common_reg_log
            # 设置日志文件的路径。
            logPath: /var/log/nginx
            # 设置日志文件的名称。支持通配符星号(*)和半角问号(?),例如log_*.log。
            filePattern: error.log
            # sidecar模式下,需设置dockerFile为false。
            dockerFile: false

多目录

通过Sidecar-CRD方式采集本地IDC上自建Kubernetes集群中nginx-log-demo容器的文本日志(存储在不同目录下的Nginx访问日志)。基本信息如下:

  • 日志服务所在地域为华东1(杭州),需要通过公网采集。

  • 待挂载的卷的名称为nginx-lognginx-logs,挂载方式为emptyDir。将nginx-log卷分别挂载到nginx-log-demo容器和Logtail容器的/var/log/nginx目录下。将nginx-logs卷分别挂载到nginx-log-demo容器和Logtail容器的/var/log/nginxs目录下。

  • 一个日志文件的路径为/var/log/nginx/access.log ,另一个日志文件的路径为/var/log/nginxs/access.log

  • 用于存储Nginx访问日志的目标Logstore为nginx-access

配置示例如下:

  • Sidecar示例

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: nginx-log-sidecar-demo
      namespace: default
    spec:
      template:
        metadata:
          name: nginx-log-sidecar-demo
        spec:
          restartPolicy: Never
          containers:
            # 主容器
            - name: nginx-log-demo
              image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
              command: ["/bin/sh", "-c"]
              # 主业务进程等待Logtail开始采集后启动,防止开头日志丢失。使用/tasksite/cornerstone接受通知。
              # 主业务进程退出后,通知采集容器退出,使用/tasksite/tombstone发送通知。
              args:
                - until [[ -f /tasksite/cornerstone ]]; do sleep 1; done;
                  /bin/mock_log --log-type=nginx --stdout=false --stderr=true --path=/var/log/nginx/access.log --total-count=100 --logs-per-sec=100;
                  retcode=$?;
                  touch /tasksite/tombstone;
                  exit $retcode
            resources:
              limits:
                cpu: 500m
                memory: 512Mi
              requests:
                cpu: 10m
                memory: 30Mi
              volumeMounts:
                - name: nginx-log
                  mountPath: /var/log/nginx
                - mountPath: /tasksite
                  name: tasksite
            # Logtail sidecar容器
            - name: logtail
              # 新的镜像版本,请参见https://cr.console.aliyun.com/repository/cn-hangzhou/log-service/logtail/images。
              # 请按业务需求修改地址。
              image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:v1.5.1.0-aliyun
              command: ["/bin/sh", "-c"]
              # 第一个`sleep 10`等待Logtail开始采集。开始采集前需要先从服务器拉取Logtail配置。
              # 第二个`sleep 10`等待Logtail完成采集,防止结尾日志丢失。完成采集时需先确保已将所有数据发送给服务器。
              args:
                - /etc/init.d/ilogtaild start;
                  sleep 10;
                  touch /tasksite/cornerstone;
                  until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
                  sleep 10;
                  /etc/init.d/ilogtaild stop;
              livenessProbe:
                exec:
                  command:
                    - /etc/init.d/ilogtaild
                    - status
                initialDelaySeconds: 30
                periodSeconds: 30
              resources:
                limits:
                  cpu: 500m
                  memory: 512Mi
                requests:
                  cpu: 10m
                  memory: 30Mi
              env:
                ##### base config
                # user id
                - name: ALIYUN_LOGTAIL_USER_ID
                  value: "1023****3423"
                # user defined id
                - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
                  value: nginx-log-sidecar
                # config file path in logtail's container
                - name: ALIYUN_LOGTAIL_CONFIG
                  value: /etc/ilogtail/conf/cn-hangzhou-internet/ilogtail_config.json
                ##### env tags config
                - name: "ALIYUN_LOG_ENV_TAGS"
                  value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
                - name: "_pod_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                - name: "_pod_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.podIP
                - name: "_namespace_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: "_node_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: "_node_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.hostIP
              volumeMounts:
                - name: nginx-log
                  mountPath: /var/log/nginx
                - mountPath: /tasksite
                  name: tasksite
          ##### share this volume
          volumes:
            - name: nginx-log
              emptyDir: {}
            - name: tasksite
              emptyDir:
                medium: Memory
  • CRD示例

    创建两个Logtail配置用于采集不同目录下的Nginx访问日志。

    • 采集/var/log/nginx/access.log下的Nginx访问日志

      重要

      Sidecar模式下,需将dockerFile参数设置为false。

      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      metadata:
        # 设置资源名,在当前Kubernetes集群内唯一。
        name: nginx-log-access-example
      spec:
        # 设置Project名称。默认值为安装Logtail时所设置的Project。
        project: k8s-nginx-sidecar-demo
        # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。
        logstore: nginx-access
        # 设置机器组名称,需与您在安装Sidecar时设置的${your_machine_group_user_defined_id}的值一致。
        machineGroups:
        - nginx-log-sidecar
        # 设置Logtail配置。
        logtailConfig:
          # 设置采集的数据源类型,通过Sidecar-CRD方式只支持采集文本日志,即需要设置为file。
          inputType: file
          # 设置Logtail配置的名称,必须与资源名(metadata.name)相同。
          configName: nginx-log-access-example
          inputDetail:
            # 指定通过完整正则模式采集文本日志。
            logType: common_reg_log
            # 设置日志文件的路径。
            logPath: /var/log/nginx
            # 设置日志文件的名称。支持通配符星号(*)和半角问号(?),例如log_*.log。
            filePattern: access.log
            # sidecar模式下,需设置dockerFile为false。
            dockerFile: false
            # 设置用于匹配日志行首的行首正则表达式。如果为单行模式,设置成'.*'。
            logBeginRegex: '.*'
            # 设置正则表达式,用于提取日志内容。
            regex: '(\S+)\s(\S+)\s\S+\s\S+\s"(\S+)\s(\S+)\s+([^"]+)"\s+(\S+)\s(\S+)\s(\d+)\s(\d+)\s(\S+)\s"([^"]+)"\s.*'
            # 提取的字段列表。
            key : ["time", "ip", "method", "url", "protocol", "latency", "payload", "status", "response-size",user-agent"]
    • 采集/var/log/nginxs/access.log下的Nginx访问日志

      重要

      Sidecar模式下,需将dockerFile参数设置为false。

      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      metadata:
        # 设置资源名,在当前Kubernetes集群内唯一。
        name: nginxs-log-access-example
      spec:
        # 设置Project名称。默认值为安装Logtail时所设置的Project。
        project: k8s-nginx-sidecar-demo
        # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。
        logstore: nginxs-access
        # 设置机器组名称,需与您在安装Sidecar时设置的${your_machine_group_user_defined_id}的值一致。
        machineGroups:
        - nginx-log-sidecar
        # Logtail配置。
        logtailConfig:
          # 设置采集的数据源类型,通过Sidecar-CRD方式只支持采集文本日志,即需要设置为file。
          inputType: file
          # 设置Logtail配置的名称,必须与资源名(metadata.name)相同。
          configName: nginxs-log-access-example
          inputDetail:
            # 指定通过完整正则模式采集文本日志。
            logType: common_reg_log
            # 设置日志文件的路径。
            logPath: /var/log/nginxs
            # 设置日志文件的名称。支持通配符星号(*)和半角问号(?),例如log_*.log。
            filePattern: access.log
            # 在sidecar模式下,需设置dockerFile为false。
            dockerFile: false
            # 设置用于匹配日志行首的行首正则表达式。如果为单行模式,设置成'.*'。
            logBeginRegex: '.*'
            # 设置正则表达式,用于提取日志内容。
            regex: '(\S+)\s(\S+)\s\S+\s\S+\s"(\S+)\s(\S+)\s+([^"]+)"\s+(\S+)\s(\S+)\s(\d+)\s(\d+)\s(\S+)\s"([^"]+)"\s.*'
            # 提取的字段列表。
            key : ["time", "ip", "method", "url", "protocol", "latency", "payload", "status", "response-size",user-agent"]

问题排查

当您使用Logtail采集容器(标准容器、Kubernetes)日志遇到异常情况时,您可以参见如下内容进行排查。

如何排查容器日志采集异常