容器计算服务ACS集成了阿里云日志服务SLS。您可在创建集群时启用日志服务,快速采集Kubernetes集群的容器日志,包括容器的标准输出以及容器内的文本文件。本文介绍如何通过AliyunLogConfig CR采集应用日志。
步骤一:启用日志服务组件Logtail
您可以为已有集群启用Logtail组件。
登录容器计算服务控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
在集群管理页左侧导航栏中,选择运维管理>组件管理,并在日志与监控区域找到alibaba-log-controller。
在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应用的日志已被采集并存储到日志服务中,您可以在日志服务控制台查看容器日志。
登录日志服务控制台。
在Project列表区域选择Kubernetes集群对应的Project(默认为k8s-log-{Kubernetes集群ID}),进入日志库列表页签。
在列表中找到相应的Logstore(采集配置中指定),将鼠标悬浮在相应的Logstore名称的右侧,单击
图标,并单击查询分析。
本例中,在日志查询页面,可以查看Tomcat应用的标准输出日志和容器内文本日志,且自定义tag附加到日志字段中。
更多信息
通过日志服务采集Kubernetes容器日志,您可以在日志服务控制台查看容器计算服务ACS的全部日志信息。
关于如何进行异常排查,请参见Logtail采集日志失败的排查思路。