开启网格拓扑提高可观测性

当您需要可视化监控服务间的交互时,可以开启网格拓扑功能。通过网格拓扑图,您可以实时监测服务的健康状态,分析服务间的延迟和通信问题,了解流量在服务间的分布和流转,以便您快速发现和解决问题,确保服务的可靠性和高性能水平。

功能介绍

网格拓扑作为一个服务网格可观测性工具,能够提供网格流量的强大可视化功能,将实时请求流量与网格配置信息相结合,提供对服务调用行为及健康状态的即时洞察,帮助您快速查明问题。网格拓扑主要提供以下能力:

  • 流量调用拓扑图:网格拓扑提供强大的网格流量可视化功能,将实时请求流量以拓扑图形式展示。

  • 网格配置可视化:网格拓扑能够根据服务网格中各项配置,对拓扑图上的节点进行修饰,帮助您一目了然地了解当前生效的配置。这些配置包括对等身份认证、虚拟服务、目标规则、ASM熔断限流等等。

  • 健康状态可视化:网格拓扑以节点或边的颜色代表服务或请求的健康状态,帮助您快速找到出现问题的节点或请求。

  • 流量重放:流量重放允许您重放过去选中时间段内的流量状况,这使您有能力彻底检查感兴趣的时间段内的应用流量。

步骤一:启用网格拓扑

方式一:新建ASM实例

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击创建新网格

  3. 可观测性区域,选中开启采集 Prometheus 监控指标,按需选择Prometheus类型并进行相关操作。

    Prometheus类型

    操作

    可观测监控Prometheus版

    选中使用可观测监控Prometheus版采集监控指标,然后选中启用ASM网格拓扑提升网格可观测。关于如何集成可观测监控Prometheus版和计费说明,请参见集成可观测监控Prometheus版实现网格监控产品计费

    自建Prometheus

    选中集成自建Prometheus实现监控,然后选中启用ASM网格拓扑提升网格可观测,输入ASM网格拓扑使用的Prometheus服务地址(即自建Prometheus服务的访问地址)。关于如何集成自建Prometheus,请参见集成自建Prometheus实现网格监控

    说明
    • 选中开启采集 Prometheus 监控指标,表示开启采集服务网格实例指标功能,不会自动创建ARMS实例或者自建的Prometheus实例。

    • 取消选中开启采集 Prometheus 监控指标启用ASM网格拓扑提升网格可观测,表示关闭网格拓扑。

  4. 配置相关信息,仔细阅读并选中服务协议,然后在页面下方,单击创建服务网格

    关于配置项的说明,请参见创建ASM实例

  5. 将ACK集群添加到新建的ASM实例。具体操作,请参见添加集群到ASM实例

方式二:使用已有ASM实例

请确保ASM实例已添加ACK集群。具体操作,请参见添加集群到ASM实例

ASM版本为1.12.4.50以下

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格实例 > 基本信息,然后在页面右侧,单击功能设置

  3. 功能设置更新面板,选中开启采集 Prometheus 监控指标,按需选择Prometheus类型并进行相关操作。

    Prometheus类型

    操作

    可观测监控Prometheus版

    选中使用可观测监控Prometheus版采集监控指标,然后选中启用ASM网格拓扑提升网格可观测。关于如何集成可观测监控Prometheus版和计费说明,请参见集成可观测监控Prometheus版实现网格监控产品计费

    自建Prometheus

    选中集成自建Prometheus实现监控,然后选中启用ASM网格拓扑提升网格可观测,输入ASM网格拓扑使用的Prometheus服务地址(即自建Prometheus服务的访问地址)。关于如何集成自建Prometheus,请参见集成自建Prometheus实现网格监控

  4. 配置完成后,在功能设置更新面板下方,单击确定

ASM版本为1.12.4.50及以上

说明

网格拓扑依赖服务网格集成Prometheus监控指标。如果您尚未集成Prometheus实现网格监控,请先对Prometheus进行集成。具体操作,请参见集成可观测监控Prometheus版实现网格监控集成自建Prometheus实现网格监控。关于可观测监控Prometheus版的计费说明,请参见产品计费

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 网格拓扑,在启用ASM网格拓扑区域,按照ASM版本进行以下操作。

    • ASM版本为1.18.2.112以下:单击开始启用

    • ASM版本为1.18.2.112及以上:任选以下部署模式。关于两种模式的差异以及如何配置托管模式,请参见开启托管模式的网格拓扑

      • 单击数据面Kubernetes集群内部署模式,输入ASM网格拓扑使用的Prometheus服务地址,单击开始启用

      • 单击托管模式,单击开始启用,在弹出的对话框,配置相关信息,单击确定

步骤二:访问网格拓扑

您可以通过以下三种方式访问网格拓扑。直接访问网格拓扑的方式需ASM版本为1.12.4.50及以上;自定义方式访问网格拓扑的方式需ASM版本为1.16.4.5及以上。

方式一:直接访问网格拓扑

如果您的ASM版本为1.12.4.50及以上,您可以选择自动创建CLB访问ASM网格拓扑,并直接访问网格拓扑服务。

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 网格拓扑

  3. 访问方式区域,按ASM实例版本选择以下操作。

    • ASM版本为1.15.3.120以下:选中自动创建公网负载均衡CLB访问ASM网格拓扑

    • ASM版本为1.15.3.120及以上,1.17.2.19以下:打开自动创建公网负载均衡CLB访问ASM网格拓扑右侧的开关,在弹出的对话框,单击确定

    • ASM版本为1.17.2.19及以上:打开创建负载均衡CLB访问ASM网格拓扑右侧的开关,在弹出的对话框,按需进行相关配置,然后单击确定

    开启访问网格拓扑后,服务网格将进入短暂的更新状态。

  4. 查看服务网格是否更新完成。

    1. 在左侧导航栏,选择网格实例 > 基本信息

    2. 基本信息区域,查看服务网格状态

      状态更新中,表示正在更新;若状态运行中,表示更新完成。

  5. 网格拓扑页面的访问方式区域,单击点击此处在新页面访问ASM网格拓扑或者复制Token并在新页面打开ASM网格拓扑,进入网格拓扑的登录页面。

方式二:使用ASM网关访问网格拓扑

  1. 创建入口网关,并为入口网关添加支持网格拓扑访问的端口配置。具体操作,请参见创建入口网关服务使用KubeAPI管理入口网关

    端口配置的YAML示例如下。

    - name: http-kiali
      port: 20001
      protocol: TCP
      targetPort: 20001

    端口配置

  2. 使用以下YAML,创建网关规则。具体操作,请参见管理网关规则

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: kiali-gateway
      namespace: istio-system
    spec:
      selector:
        istio: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 20001
            protocol: HTTP
  3. 使用以下YAML,创建虚拟服务。具体操作,请参见管理虚拟服务

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: kiali-vs
      namespace: istio-system
    spec:
      gateways:
        - kiali-gateway
      hosts:
        - '*'
      http:
        - route:
            - destination:
                host: kiali
                port:
                  number: 20001
  4. 登录网格拓扑。

    1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

    2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择网格实例 > 基本信息

    3. 配置信息区域,单击启用ASM网格拓扑右侧的通过入口网关访问,进入网格拓扑的登录页面。

方式三:自定义方式访问网格拓扑

在启用网格拓扑后,网格拓扑将在Kubernetes集群的istio-system命名空间下创建名为Kiali的Service。您可以通过为该Service创建代理服务等方式访问网格拓扑。例如,为Kiali Service创建一个Nginx反向代理,并通过Nginx访问网格拓扑。您可以通过自定义访问方式设置来设定访问Kiali Service的具体方法。该方式需ASM版本为1.16.4.5及以上。关于升级ASM版本的具体操作,请参见升级ASM实例

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 网格拓扑

  3. 登录鉴权方式区域下方,单击展开高级选项,然后在自定义访问方式设置区域,配置相关信息,单击保存网格拓扑配置

    配置项

    说明

    自定义访问域名

    定义网格拓扑所服务的自定义域名。如果您在访问网格拓扑时使用自定义域名,建议您配置此项,否则可能影响网格拓扑的OIDC登录流程。当您通过OIDC方式登录网格拓扑时,网格拓扑会将Redirect URI中的域名替换为您的自定义域名,以保证和OIDC应用的正常对接。

    自定义访问端口

    定义网格拓扑服务监听的端口,默认为20001。当您设定此项时,网格拓扑服务将监听您指定的自定义端口。

    自定义访问服务根路径

    定义网格拓扑所服务的根路径,默认为/。当您设定此项时,网格拓扑将以您设定的路径为根路径提供服务。当您在访问网格拓扑时,需要在原有访问地址中添加自定义的根路径。

    自定义访问协议(https/http)

    定义网格拓扑所服务的协议,仅支持填写httphttps。如果您在访问网格拓扑时使用HTTPS协议,建议您配置此项,否则可能影响网格拓扑的OIDC登录流程。当您通过OIDC方式登录网格拓扑时,网格拓扑会将Redirect URI中的协议部分替换为您的自定义协议,以保证和OIDC应用的正常对接。

步骤三:登录网格拓扑

您可以通过以下三种方式登录网格拓扑。OIDC的方式登录需ASM版本为1.15.3.120及以上;阿里云账号身份的方式需ASM版本为1.16.4.5及以上。

方式一:通过Token方式登录网格拓扑

ASM版本为1.12.4.50以下

您可以登录ACK控制台获取Token,然后通过Token方式登录网格拓扑。

  1. 登录容器服务管理控制台,在左侧导航栏单击集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择配置管理 > 保密字典

  3. 保密字典页面,命名空间选择istio-system,单击kiali-service-account-token-****,然后单击token行的token图标,复制Token。

  4. 在网格拓扑的登录页面,粘贴Token,单击Log in,进入网格拓扑控制台。

ASM版本为1.12.4.50及以上

您可以登录ASM控制台获取Token,然后通过Token方式登录网格拓扑。

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 网格拓扑

  3. 网格拓扑页面的访问方式区域,单击复制Token并在新页面打开ASM网格拓扑

  4. 在网格拓扑的登录页面,粘贴Token,单击登录,进入网格拓扑控制台。

方式二:通过OIDC方式登录网格拓扑

OIDC(OpenID Connect)是一种身份认证与授权的协议,通常用于实现单点登录(SSO)。您可以通过OIDC协议与IdP(身份提供商)对接,登录网格拓扑。使用该方式,ASM版本需为1.15.3.120及以上。关于升级ASM版本的具体操作,请参见升级ASM实例

  1. 配置IdP。具体操作,请参见ASM集成阿里云IDaaS实现网格内应用单点登录的步骤一和步骤二。

    登录 Redirect URI配置为网格拓扑的负载均衡CLB的IP访问地址(直接通过CLB访问网格拓扑)或者ASM网关的地址(使用ASM网关访问网格拓扑)。配置示例如下:

    • 如果通过CLB访问网格拓扑,且网格拓扑的负载均衡CLB的IP为xxx.xxx.xxx.xxx,则登录 Redirect URI配置为http://xxx.xxx.xxx.xxx:2000120001末尾不能携带//xxx等路径。

    • 如果通过ASM网关访问网格拓扑,且ASM网关的IP为yyy.yyy.yyy.yyy,则登录 Redirect URI配置为http://yyy.yyy.yyy.yyy:2000120001末尾不能携带//xxx等路径。

  2. 通过OIDC方式登录网格拓扑。

    1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

    2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 网格拓扑

    3. 登录鉴权方式区域,选中OIDC登录,配置相关信息,单击保存网格拓扑配置,然后单击在新页面打开ASM网格拓扑

    4. 在网格拓扑的登录页面,单击Log In with OpenID,跳转到OIDC应用的登录页面进行登录。

方式三:通过阿里云账号身份登录网格拓扑

您可以通过OIDC协议与阿里云RAM OAuth应用对接,实现通过阿里云账号身份登录网格拓扑。更多信息,请参见Web应用登录阿里云

使用此方式时,服务网格ASM将自动为您创建名称以asm-kiali开头的阿里云RAM OAuth应用,并将此应用与网格拓扑进行集成。该方式需ASM版本为1.16.4.5及以上。关于升级ASM版本的具体操作,请参见升级ASM实例

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 网格拓扑

  3. 登录鉴权方式区域,选中阿里云账号身份登录,在弹出的对话框中,单击添加回调地址,输入回调地址,然后单击确定

    网格将进行短暂的更新,请等待网格更新完成后进行下一步操作。

    说明
    • 回调地址格式请参见方式二:通过OIDC方式登录网格拓扑页签中的登录 Redirect URI。

    • 若您采用直接访问网格拓扑的访问方式,回调地址会自动填写。

  4. 在网格拓扑的登录页面,单击Log In with OpenID,以阿里云账号身份进行登录。

FAQ

为什么使用ARMS Prometheus采集监控指标,网格拓扑无法加载?

如果您的服务网格ASM选择使用ARMS Prometheus采集监控指标,并为ARMS Prometheus实例开启了鉴权Token,网格拓扑将会无法访问您的ARMS Prometheus实例,造成网格拓扑无法加载。您可以任选以下两种方案进行处理。更多信息,请参见将Prometheus的监控数据接入本地Grafana

  • 方案一:在ARMS控制台设置页面关闭Token。更多信息,请参见HTTP API地址使用说明

  • 方案二:将ARMS Prometheus鉴权Token配置到网格拓扑,以对接ARMS Prometheus实例。

    说明

    该操作需ASM版本为1.15.3.120及以上。

    1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

    2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择可观测管理中心 > 网格拓扑

    3. 对接ARMS Prometheus监控实例区域的文本框,输入ARMS Prometheus配置的鉴权Token,然后单击保存网格拓扑配置,为网格拓扑配置访问ARMS Prometheus实例的鉴权Token。

为什么网格拓扑只能看到部分流量?

您可以按照如下步骤进行排查。

  1. 配置问题

    确认ASM网格拓扑观测是否在流量显示设置中选择了正确类型的流量,例如gRPC、HTTP、TCP。未选中这些选项可能导致无法查看全部流量信息。

  2. 命名空间限制

    在网格拓扑中,确认是否选择了正确的命名空间,部分流量可能位于未被选择的命名空间内。

  3. 数据采集与更新

    • 确认Prometheus实例的指标采集是否正常,ASM可能只显示已成功收集到的数据,部分流量数据可能由于各种原因(如延迟、丢包等)未能及时显示在拓扑图上。

    • 确认集群中的所有工作负载是否都注入了网格代理,只有注入了网格代理的工作负载会上报流量监控指标数据。

    • 确认网格拓扑页面是否实时刷新,或者尝试手动刷新以获取最新的流量数据。

  4. Sidecar代理配置、流量配置影响

    某些流量可能受到ASM内的Sidecar代理配置或Sidecar代理流量配置的影响,导致其不通过网格代理因而无法被观测。检查Sidecar代理配置中是否配置了按端口或地址来禁用Sidecar代理,或者Sidecar流量配置中是否配置了正确的出入站流量目标。

相关文档

  • 如果您发现某些请求耗时异常,可以通过访问日志定位请求异常延迟的原因。具体操作,请参见通过访问日志定位请求异常延迟的原因

  • 如果您需要在客户端对一个目标服务的访问过程中,使流量尽可能的在同一个可用区内流转,以保证服务间的调用延迟最低,可以使用同可用区优先路由功能。具体操作,请参见使用网格拓扑观测同可用区优先路由

  • 如果您需要观测多个集群的流量拓扑,可以使用托管模式的网格拓扑功能。整个网格实例只需要部署一个网格拓扑服务,减少配置的工作量。具体操作,请参见开启托管模式的网格拓扑

  • Sidecar的请求拦截机制可能会干扰网格内应用的健康检查,导致检查失败。您可以启用健康检查重定向,以确保检查正确执行。具体操作,请参见为网格内应用开启健康检查重定向