容器服务ACK(Alibaba Cloud Container Service for Kubernetes)集成了日志服务功能,可对服务网格数据平面集群的AccessLog进行采集。本文介绍如何开启日志采集、配置日志服务以及查看采集的日志。

背景信息

部署在数据平面(即加入网格的Kubernetes集群)的Envoy Proxy可以输出所有访问日志,这些日志被称为Envoy Access Log,请参见Envoy Access Log。您可以通过kubectl logs指令查看这些日志。借助阿里云日志服务,不仅可以更便捷地查看日志,还可以对这些日志进行收集、检索或建立Dashboard。

步骤一:为Kubernetes集群安装日志服务组件

如果您尚未创建Kubernetes集群,请执行以下步骤。

  1. 登录容器服务控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面,单击右上角创建Kubernetes集群,具体步骤,请参见快速创建Kubernetes托管版集群
  4. 组件配置步骤中,选择日志服务配置项,表示在新建的Kubernetes集群中安装日志插件。
    • 选择使用已有Project,选择一个现有的Project来管理采集的日志。开启日志1
    • 选择创建新Project,则自动创建一个新的Project来管理采集的日志,Project会自动命名为 k8s-log-{ClusterID},ClusterID表示您新建的Kubernetes集群的唯一标识。开启日志2
  5. 完成配置后,单击创建集群,完成集群创建。

如果您已创建了Kubernetes集群,但未安装日志组件,请执行以下步骤。

  1. 登录容器服务控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,单击运维管理 > 组件管理
  5. 可选组件列表中找到logtail-ds,单击安装

如果您已经创建了Kubernetes集群,并且已为集群安装了日志组件,但版本低于v0.16.24.0-1fa7551-aliyun,请执行以下步骤。

  1. 登录容器服务控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,单击运维管理 > 组件管理
  5. 可选组件列表中找到logtail-ds,单击右侧的升级

步骤二:配置日志服务

使用Logtail组件采集Envoy Access Log,需要创建采集配置。

  1. 准备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字段务必保持原值,否则会影响服务网格控制面板的显示。
  2. 在k8s集群应用在已编辑完成的YAML文件。
    kubectl apply -f [YAML文件路径]

步骤三:查看日志

完成配置后,Envoy Access Log将被采集并存储到日志服务您指定的LogProject和LogStore中,您可以通过以下步骤来查看日志。

  1. 登录ASM控制台
  2. 在左侧导航栏,选择服务网格 > 网格管理
  3. 网格管理页面,找到目标实例,单击实例的名称或在操作列中单击管理
  4. 数据平面区域的集群页签,单击目标集群可观测性列的查看报表,可选择查看访问日志详细记录访问日志监控中心
    • 访问日志监控中心则展示了多维度的日志统计数据。访问日志监控中心
    • 访问日志详细记录以更为易读的方式展示原始访问日志。访问日志详细记录