容器服务ACK(Alibaba Cloud Container Service for Kubernetes)集成了日志服务功能,您可在创建集群时启用日志服务,采集服务网格数据平面集群入口网关的访问日志。本文主要介绍如何开启日志采集、配置日志服务以及查看采集的日志。

前提条件

步骤一:为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. 可选组件列表中找到logtail-ds,单击安装安装日志组件

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

  1. 在集群管理页面,单击左侧导航栏中的组件管理
  2. 可选组件列表中找到logtail-ds,单击右侧的升级组件升级

步骤二:配置日志服务

使用logtail组件采集入口网关日志,需要创建采集配置。

  1. 创建YAML文件,文件模板如下。
    说明 您需要为每个数据面集群准备配置文件。
    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      # your config name, must be unique in you k8s cluster
      name: mesh-ingress-log-config
      namespace: kube-system
    spec:
      project: k8s-log-${K8SClusterId}
      # logstore name to upload log
      logstore: mesh-ingress-log
      # product code, you should not change it
      productCode: k8s-istio-ingress
      # logtail config detail
      logtailConfig:
        inputType: plugin
        configName: mesh-ingress-log-config
        inputDetail:
          plugin:
            inputs:
            - detail:
                IncludeLabel:
                  io.kubernetes.pod.name: ^istio-ingressgateway-.*$
                Stderr: false
                Stdout: true
              type: service_docker_stdout
            processors:
            - detail:
                Anchors:
                - FieldName: log
                  FieldType: json
                KeepSource: true
                NoKeyError: true
                NoMatchError: true
                SourceKey: content
              type: processor_anchor
            - detail:
              type: processor_rename
              detail:
                DestKeys:
                - host
                - request_length
                - body_bytes_sent
                - request_time
                - method
                - url
                - version
                - req_id
                - status
                - proxy_upstream_name
                - upstream_addr
                - upstream_response_time
                - http_user_agent
                - x_forward_for
                SourceKeys:
                - log_authority
                - log_bytes_received
                - log_bytes_sent
                - log_duration
                - log_method
                - log_path
                - log_protocol
                - log_request_id
                - log_response_code
                - log_upstream_cluster
                - log_upstream_host
                - log_upstream_service_time
                - log_user_agent
                - log_x_forwarded_for
  2. 替换模板中的${K8SClusterID}为您的Kubernetes集群ClusterID。
  3. 可选:若您存在未经过服务网格控制台创建的入口网关,且您希望采集该入口网关的日志,则您需要按照以下格式修改模板中io.kubernetes.pod.name的参数值。
    ^(^istio-ingressgateway-.*$)|(^[Name-of-your-customized-ingressgateway]-.*$)$
    例如Ingressgateway deployment名称为my-ingressgateway,则您需要按照以下格式修改模板中io.kubernetes.pod.name的参数值。
    ^(^istio-ingressgateway-.*$)|(^my-ingressgateway-.*$)$
  4. 连接到Kubernetes集群,详细描述请参见通过kubectl连接Kubernetes集群SSH访问Kubernetes集群
  5. 在Kubernetes集群应用已完成的YAML文件。
    kubectl apply -f [yaml文件路径]

步骤三:查看日志

完成配置后,将采集数据平面入口网关日志并存储到日志服务指定的LogProject和LogStore,您可以通过以下步骤查看日志。

  1. 登录ASM控制台
  2. 在左侧导航栏,选择服务网格 > 网格管理
  3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
  4. 单击数据平面集群列表中的查看报表,可选择查看入口网关概览入口网关访问中心入口网关监控中心
    查看报表
    • 选择入口网关概览,进入入口网关概览界面。该界面展示了网格入口的统计信息概览,包括访问地理、PV/UV、延迟、成功率等。网关概览
    • 选择入口网关访问中心,进入入口网关访问中心界面。该界面详细展示了PV/UV、地理位置、访问来源设备等统计信息,对判断用户分布、行为有参考意义。网关访问中心
    • 选择入口网关监控中心,进入入口网关监控中心界面。该界面展示了成功率、请求状态码、延迟等信息,对判断当前服务状态有重要参考意义。网关监控中心