全部产品
Search
文档中心

服务网格 ASM:使用日志服务采集数据平面入口网关日志

更新时间:Jun 05, 2023

容器服务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. 在集群管理页左侧导航栏中,单击运维管理 > 组件管理

  5. 日志与监控列表中找到logtail-ds,单击安装

  6. 提示对话框单击确定

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

  1. 登录容器服务管理控制台

  2. 在控制台左侧导航栏,单击集群
  3. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,单击运维管理 > 组件管理

  5. 日志与监控列表中找到logtail-ds,单击右侧的升级

  6. 提示对话框单击确定

步骤二:配置日志服务

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

如果您的ASM为v1.7.5.26-gd318a562-aliyun及以上版本,需要按照以下步骤操作

  1. 登录ASM控制台

  2. 在左侧导航栏,选择服务网格 > 网格管理

  3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理

  4. 在网格详情页面左侧导航栏,选择网格实例 > 基本信息,然后在右侧页面,单击功能设置

  5. 功能设置更新面板中选中启用访问日志查询,然后单击确定

如果您的ASM版本低于v1.7.5.26-gd318a562-aliyun,需要按照以下步骤操作

  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
            - 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集群,详细描述请参见获取集群KubeConfig并通过kubectl工具连接集群通过SSH连接ACK专有版集群的Master节点

  5. 在Kubernetes集群应用已完成的YAML文件。

    kubectl apply -f [yaml文件路径]

步骤三:查看日志

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

  1. 登录ASM控制台

  2. 在左侧导航栏,选择服务网格 > 网格管理

  3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理

  4. 在网格详情页面左侧导航栏,选择集群与工作负载管理 > Kubernetes集群

  5. Kubernetes集群页面单击目标集群右侧可观测性列下的查看报表,可选择查看入口网关概览入口网关访问中心入口网关监控中心

    • 选择入口网关概览,进入入口网关概览界面。该界面展示了网格入口的统计信息概览,包括访问地理、PV/UV、延迟、成功率等。

    • 选择入口网关访问中心,进入入口网关访问中心界面。该界面详细展示了PV/UV、地理位置、访问来源设备等统计信息,对判断用户分布、行为有参考意义。

    • 选择入口网关监控中心,进入入口网关监控中心界面。该界面展示了成功率、请求状态码、延迟等信息,对判断当前服务状态有重要参考意义。网关监控中心