容器服务ACK(Alibaba Cloud Container Service for Kubernetes)集成了日志服务功能,可对服务网格数据平面集群的AccessLog进行采集。本文介绍如何开启日志采集、配置日志服务以及查看采集的日志。
背景信息
部署在数据平面(即加入网格的Kubernetes集群)的Envoy Proxy可以输出所有访问日志,这些日志被称为Envoy Access Log,请参见Envoy Access Log。您可以通过kubectl logs指令查看这些日志。借助阿里云日志服务,不仅可以更便捷地查看日志,还可以对这些日志进行收集、检索或建立Dashboard。
步骤一:为Kubernetes集群安装日志服务组件
如果您尚未创建Kubernetes集群,请执行以下步骤:
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面,单击右上角创建Kubernetes集群,具体步骤,请参见快速创建Kubernetes托管版集群。
- 在组件配置步骤中,选择日志服务配置项,表示在新建的Kubernetes集群中安装日志插件。
- 选择使用已有Project,选择一个现有的Project来管理采集的日志。

- 选择创建新Project,则自动创建一个新的Project来管理采集的日志,Project会自动命名为k8s-log-{ClusterID},ClusterID表示您新建的Kubernetes集群的唯一标识。

- 完成配置后,单击创建集群,完成集群创建。
如果您已创建了Kubernetes集群,但未安装日志组件,请执行以下步骤:
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,单击。
- 在日志与监控列表中找到logtail-ds,单击安装。
- 在提示对话框单击确定。
如果您已经创建了Kubernetes集群,并且已为集群安装了日志组件,但版本低于v0.16.24.0-1fa7551-aliyun,请执行以下步骤:
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页左侧导航栏中,单击。
- 在日志与监控列表中找到logtail-ds,单击右侧的升级。
- 在提示对话框单击确定。
步骤二:配置日志服务
使用Logtail组件采集Envoy Access Log,需要创建采集配置。
如果您的ASM为v1.7.5.26-gd318a562-aliyun及以上版本,需要按照以下步骤操作:
- 登录ASM控制台。
- 在左侧导航栏,选择。
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
- 在网格详情页面左侧导航栏选择,然后在右侧页面单击功能设置。
- 在功能设置更新面板中选中启用访问日志查询,然后单击确定。
如果您的ASM版本低于v1.7.5.26-gd318a562-aliyun,需要按照以下步骤操作:
- 准备YAML文件,文件模版如下。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
# your config name, must be unique in you k8s cluster
name: mesh-access-log-config
namespace: kube-system
spec:
# must use same project with k8s cluster
project: k8s-log-${K8SClusterID}
# logstore name to upload log
logstore: mesh-access-log
# product code always been mesh-access-log
productCode: mesh-access-log
# logtail config detail
logtailConfig:
# docker stdout's input type is 'plugin'
inputType: plugin
# logtail config name, should be same with [metadata.name]
configName: mesh-access-log-config
inputDetail:
plugin:
inputs:
- type: service_docker_stdout
detail:
# collect stdout and stderr
Stdout: true
Stderr: true
IncludeEnv:
ISTIO_META_POD_NAME: ""
IncludeLabel:
io.kubernetes.container.name: "istio-proxy"
processors:
- type: processor_json
detail:
# 从docker采集的数据默认key为"content"
SourceKey: content
ExpandConnector: ""
KeepSource: true
NoKeyError: true
说明
- 替换模板中的${K8SClusterID}为您的K8s集群ClusterID。
- 每个K8s集群都需要单独准备配置文件。
- YAML文件中的project字段请务必按照k8s-log-${K8SClusterID}规则填写,logstore字段务必保持原值,否则会影响服务网格控制面板的显示。
- 在k8s集群应用在已编辑完成的YAML文件。
kubectl apply -f [YAML文件路径]
步骤三:查看日志
完成配置后,Envoy Access Log将被采集并存储到日志服务您指定的LogProject和LogStore中,您可以通过以下步骤来查看日志。
- 登录ASM控制台。
- 在左侧导航栏,选择。
- 在网格管理页面,找到目标实例,单击实例的名称或在操作列中单击管理。
- 在网格详情页面左侧导航栏选择。
- 在Kubernetes集群页面,单击目标集群右侧可观测性列下的查看报表,可选择查看访问日志详细记录或访问日志监控中心。
- 访问日志监控中心则展示了多维度的日志统计数据。

- 访问日志详细记录以更为易读的方式展示原始访问日志。
