全部产品
Search
文档中心

服务网格 ASM:启用控制平面日志采集和日志告警(旧版)

更新时间:Feb 01, 2024

ASM支持采集控制平面日志和日志告警,例如采集ASM控制平面向数据平面Sidecar推送配置的相关日志。本文介绍如何启用控制平面日志采集和日志告警。

背景信息

ASM控制面组件的主要功能之一是推送网格的规则配置到数据面的Sidecar代理或者网关中。如果用户配置的网格规则内容存在一些冲突导致推送失败,代理或者网关就接收不到最新的配置内容。虽然代理或网关在不重启的情况下,可以使用已经接收到的配置继续运行,但是一旦这些Pod重启,很有可能导致Sidecar代理或网关启动失败。在很多实际场景中,经常出现用户误配置引发的网关或代理不可用的问题,因此启用控制面的日志告警,及时发现并解决问题十分必要。

前提条件

  • 阿里云账号已开通阿里云日志服务SLS。具体操作,请参见开通日志服务

    重要

    将日志采集到ASM的日志服务不额外收取任何费用,但日志服务SLS会按照写入数据量计费或按使用功能计费。关于SLS计费的详细说明,请参见计费概述

启用控制平面日志采集

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

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

  3. 基本信息页面的配置信息区域,单击控制面日志采集右侧的启用

    重要

    控制平面日志库会保存最近30天的日志数据,超出30天的日志将会被丢弃。

    • 如果您是第一次开启控制面日志采集,页面会弹出启用控制面日志对话框,您可以选择新建Project或者使用已有Project,然后单击确认

      当您选择新建Project时,可以使用默认Project名称或者自定义Project名称。

      启用控制面日志

    • 如果您之前已开启并禁用过控制面日志采集,当再次开启时,会弹出重要提示对话框,单击确定,会自动选择上次已经指定的Project。

    开启控制面日志采集后,在基本信息页面单击控制面日志采集右侧的查看日志,即可在Project页面查看详细的控制平面日志。

启用控制平面日志告警

重要

启用控制平面日志告警之前必须先启用控制平面日志采集,否则将无法使用该功能。

当控制平面发往数据平面的xDS请求被数据平面拒绝时,数据平面同步失败告警将被触发。此时您的数据平面的Sidecar代理或ASM网关将无法得到最新的配置信息,存在以下两种情况:

  • 如果数据平面Sidecar在此之前收到过成功的配置推送,则该Sidecar将保持最后一次收到的成功推送的配置。

  • 如果数据平面Sidecar在此之前尚未收到过成功的配置推送,则该Sidecar将没有任何配置信息,这意味着该节点可能没有任何监听,也无法处理任何请求和路由规则。

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

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

  3. 基本信息页面的配置信息区域,单击控制面日志采集右侧的告警设置

  4. 控制面日志告警设置对话框的目标行动策略区域,选中服务网格ASM内置行动策略(推荐)自定义行动策略,然后单击开启告警

    行动策略定义了告警触发时的行为,您可以在SLS Project内创建和编辑行动策略。具体操作,请参见创建行动策略

  5. 重要提示对话框,单击确定

配置告警通知人

您可以配置SLS服务网关内置行动策略,设置告警通知接收人,通知模板等。

  1. 登录日志服务控制台

  2. Project列表区域,单击目标Project名称,然后在左侧导航栏,单击告警

  3. 告警中心页面,单击通知对象 > 用户组管理

  4. 用户组管理页签,单击SLS 服务网格内置用户组右侧操作列下的修改

  5. 修改用户组对话框,在待添加成员区域选中目标成员,单击添加图标,将目标成员添加到已添加成员区域,然后单击确认修改用户组

触发告警通知示例

说明

本文限于篇幅无法覆盖每一个告警项,以下例子将通过错误的配置触发从网格控制面推送配置失败

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

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 网关规则,然后单击使用YAML创建

  3. 创建页面,选中目标命名空间和任意场景模板,配置YAML。

    本文以default命名空间为例,配置服务网关,YAML示例如下:

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name:  gateway-test
      namespace: default
    spec:
      selector:
        istio: ingressgateway
      servers:
        - hosts:
            - '*console.aliyun.com'
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            credentialName: not-existing-credential
            mode: SIMPLE
  4. 查看告警通知。

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

    2. 基本信息页面的配置信息区域,单击控制面日志采集右侧的查看日志

    3. 在日志服务控制台,搜索'ACK ERROR',查看告警信息。

      如果您配置了告警通知人的邮箱地址,可以在邮箱中查看告警通知。

告警处理的参考方案

诊断出警告的网格配置

ASM网格诊断在您的集群中发现了潜在有风险的网格配置,这些配置可能会导致ASM的执行结果不符合预期。您可以通过网格诊断页面查看告警内容,并遵照网格诊断页面给出的提示修正错误的配置。

诊断出错误的网格配置

ASM网格诊断在您的集群中发现了错误的网格配置,这些配置有较高的风险引起不符合预期的行为。您应当尽快在网格诊断页面查看告警内容,并遵照网格诊断页面给出的提示修正错误的配置。

网格规则配置不符合规范要求导致从网格控制面推送配置失败

以下表格列出了常见的数据面同步失败错误信息和处理建议,如果您没有找到对应的错误信息,请提交工单

错误信息

处理建议

Internal:Error adding/updating listener(s) 0.0.0.0_443: Failed to load certificate chain from <inline>, only P-256 ECDSA certificates are supported

该告警信息表示数据面集群不支持您为数据面配置的证书,当前仅支持P-256 ECDSA证书。您需要重新配置证书,具体操作,请参见通过ASM网关启用HTTPS安全服务

Internal:Error adding/updating listener(s) 0.0.0.0_443: Invalid path: ****

该告警信息表示您为数据面配置的证书路径有误或证书不存在,您需要检查证书挂载路径是否与Gateway中配置的路径相符。具体操作,请参见通过ASM网关启用HTTPS安全服务

Internal:Error adding/updating listener(s) 0.0.0.0_xx: duplicate listener 0.0.0.0_xx found

该告警信息表示您为网关配置的监听端口重复,请检查您的Gateway,删除重复的端口。

Internal:Error adding/updating listener(s) 192.168.33.189_15021: Didn't find a registered implementation for name: '***'

该告警信息表示在Sidecar和Ingressgateway中无法找到您通过EnvoyFilter针对15021这个Listener patch的配置中引用的***,您需要删除该引用。

Internal:Error adding/updating listener(s) 0.0.0.0_80: V2 (and AUTO) xDS transport protocol versions are deprecated in grpc_service ***

该告警信息表示即将弃用您数据面的XDS V2协议,这通常是因为您的数据面Sidecar的版本与控制平面不符。升级数据平面的Sidecar可以解决该问题,您需要删除Pod,该Pod自动重新创建后会自动注入最新版本的Sidecar。

相关操作

修改控制平面日志Project

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

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

  3. 基本信息页面的配置信息区域,单击控制面日志采集右侧的更改日志Project,在更改日志Project对话框,按需进行修改,然后单击确认