文档

通过CRD方式采集应用日志

更新时间:

容器计算服务ACS集成了阿里云日志服务SLS。您可在创建集群时启用日志服务,快速采集Kubernetes集群的容器日志,包括容器的标准输出以及容器内的文本文件。本文介绍如何通过AliyunLogConfig CR采集应用日志。

步骤一:启用日志服务组件Logtail

您可以为已有集群启用Logtail组件。

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情

  3. 在集群管理页左侧导航栏中,选择运维管理>组件管理,并在日志与监控区域找到alibaba-log-controller

  4. alibaba-log-controller组件右侧,单击安装,并在安装组件对话框中单击确定

如果您已安装的日志服务组件为旧版本,可以在alibaba-log-controller组件右侧,单击升级

重要

升级alibaba-log-controller组件后,会重置组件参数。如果您曾自定义alibaba-log-controller的配置和环境变量,参数将被覆盖,请重新配置。

步骤二:创建AliyunLogConfig CR日志采集配置

AliyunLogConfig CR支持对于标准输出和文件两种模式的日志采集。

场景一:采集应用标准输出日志

采集的日志为标准输出(包括错误输出),详细参数说明请参见Logtail配置。将下述配置下发到ACS集群中即可完成标准输出日志的采集。

apiVersion: log.alibabacloud.com/v1alpha1      
kind: AliyunLogConfig                         
metadata:
  name: test-stdout               #资源名,在当前Kubernetes集群内唯一。
spec:
  project: k8s-log-c326bc86****   #可选配置,Project名称,可自定义,推荐使用[k8s-log-集群ID]命名
  logstore: test-stdout           #必选配置,Logstore名称,如果不存在,日志服务会自动创建                  
  shardCount: 2                   #可选配置,Shard数量,默认为2,取值范围为1~10                         
  lifeCycle: 90                   #可选配置,Logstore中日志保留时间,单位为天,该参数值仅在新建Logstore时生效。默认为90,取值范围为1~3650。3650表示永久保留
  logtailConfig:                  #Logtail配置
    inputType: plugin             #采集的数据源类型,file表示文件日志,plugin表示标准输出                                
    configName: test-stdout       #Logtail配置的名称,必须与资源名(metadata.name)相同 
    inputDetail:                  #Logtail配置的详细信息
      plugin:
        inputs:
          - type: service_docker_stdout
            detail:
              Stdout: true
              Stderr: true

场景二:采集应用文件日志

采集的日志为文件日志,详细参数说明请参见Logtail配置。将下述配置下发到ACS集群中即可完成文件日志的采集。

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  name: test-file                  #资源名,在当前Kubernetes集群内唯一。
spec:
  project: k8s-log-c326bc86****    #可选配置,Project名称,可自定义,推荐使用[k8s-log-集群ID]命名
  logstore: test-file              #必选配置,Logstore名称,如果不存在,日志服务会自动创建   
  logtailConfig:                   #Logtail配置
    inputType: file                #采集的数据源类型,file表示文件日志,plugin表示标准输出
    configName: test-file          #Logtail配置的名称,必须与资源名(metadata.name)相同 
    inputDetail:                   #Logtail配置的详细信息
      logType: common_reg_log      #对于分隔符类型的日志,logType可以设置为json_log
      logPath: /log/               #日志文件夹
      filePattern: "*.log"         #文件名, 支持通配符,例如log_*.log
      dockerFile: true             #采集容器内的文件,dockerFile设置为true

场景三:采集特定应用的容器日志

上述配置方式默认会对集群中的所有Pod和容器生效,如果只想采集特定应用的容器可以在AliyunLogConfig配置上面增加 advanced 配置选择特定的Pod或容器,如下:

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  name: backend-busybox                 #资源名,在当前Kubernetes集群内唯一。
  namespace: test
spec:
  logstore: busybox              #必选配置,Logstore名称,如果不存在,日志服务会自动创建     # 必选配置,机器组
  logtailConfig:                   #Logtail配置
    inputDetail:                   #Logtail配置的详细信息
      ## 生效特定的Pod或容器,下述筛选条件为 And 
      advanced:
        k8s:
          K8sNamespaceRegex: ^(test)$ # Pod Namespace过滤,支持正则
          K8sContainerRegex: ^(busybox)$ # 容器名过滤,支持正则
          K8sPodRegex: '^backend.+$' # Pod名过滤,支持正则
          IncludeK8sLabel: # 根据 Pod labels 选择
            app: backend
            application: prod

步骤三:通过日志服务控制台查看日志

本例中查看通过控制台向导创建的Tomcat应用的日志。完成配置后,Tomcat应用的日志已被采集并存储到日志服务中,您可以在日志服务控制台查看容器日志。

  1. 登录日志服务控制台

  2. Project列表区域选择Kubernetes集群对应的Project(默认为k8s-log-{Kubernetes集群ID}),进入日志库列表页签。

  3. 在列表中找到相应的Logstore(采集配置中指定),将鼠标悬浮在相应的Logstore名称的右侧,单击button图标,并单击查询分析

    本例中,在日志查询页面,可以查看Tomcat应用的标准输出日志和容器内文本日志,且自定义tag附加到日志字段中。

更多信息