更新时间:2024-03-07 GMT+08:00
分享

常见问题

常见问题

  • SDK初始化失败

    SDK初始化失败,graysdk的run和debug日志会打印初始化失败原因,一般原因有如下几种:

    • ETCD服务器配置错误(检查conf/graysdk.properties文件中server配置是否正确)。
    • ETCD未启动或者网络原因不可用(检查网络以及ETCD是否正常)。
    • ETCD中不存在此微服务名称的灰度配置。
    • ETCD未启用用户名/密码认证方式,但是SDK配置了认证(检查conf/graysdk.properties文件是否配置了username)。
    • jsonRuleFilePath没有配置。
  • 灰度规则匹配失败

    调用SDK接口执行灰度规则匹配失败,一般原因有如下几种:

    • 实际传入的参数和值,不满足配置的微服务灰度规则。
    • 灰度开关关闭(检查conf/graysdk.properties文件graySwitch是否为1)。
    • 灰度规则执行异常(检查graysdk的debug日志)。
    • 联系灰度平台开发人员定位。
  • 灰度参数的设置

    消费端需要在CSE的invocation设置想要进行灰度的参数,有两种方法:

    • 确定需要进行灰度的参数 ,在后端的接口中使用@RequestParam参数来指定。
    • 业务直接在消费端设置参数,例如:ContextUtils.getInvocationContext().addContext("x-is-gray", "1")。

    第一种方式直接在请求流量的URL中通过设置参数的值来标识灰度流量,第二种是业务在调用SDK之前改变invocation中参数的值来标识灰度。

  • 后端灰度节点的判断

    后端的节点在自己的microservice.yaml文件中设置参数描述(参照CSE开发网站)。

    • 按照版本筛选灰度节点,需要在yaml中的service_description中先定义版本号,然后在管理台上选择按照版本进行灰度,填入定义的版本。
    • 按照自定义参数筛选灰度节点,需要在yaml中的instance_description中先自定义灰度参数,并填入值,接着在管理台选择按照自定义参数进行灰度,填入自定义的参数。

附录

  • SDK错误码

    在调用SDK接口时,出现异常情况时SDK会返回一个GrayException异常,可以通过e.toString()查看详细的异常说明,通过e.getCode()获取异常错误码,同时通过SDK的debug日志可以看到更详细的异常错误信息。

    表1 SDK错误码

    异常编码

    异常原因

    异常处理方法

    13300

    内部处理错误,一般为配置错误导致。

    查看graysdk的debug日志,查看error日志,同时联系灰度平台开发人员定位。

    13301

    参数错误,一般为传入SDK的微服务名称为空或者空串。

    1. 检查graysdk.properties文件etcd.serviceName配置是否正确。
    2. 检查graysdk的run日志,查看sdk是否初始化成功。

    13302

    cloudsoa security解密密码失败。

    检查graysdk.properties文件etcd.password是否配置正确。

    13303

    操作ETCD失败(读取ETCD配置触发异常)。

    1. 检查graysdk.properties文件etcd.server配置是否正确。
    2. 检查ETCD服务器是否工作正常。
  • 性能统计日志
    日志字段默认采用“|” 分隔,一条日志一行,采用“\n”结尾,默认1s(可配置)打印一条。
    表2 节点级日志

    字段名称

    必选(M)/可选(O)

    字段说明

    时间

    M

    YYYY-MM-DD<1SP>hh:mm:ss[.SSS]

    请求次数

    M

    周期值,每个周期清零,重新计数。

    未进行匹配次数

    M

    未进行灰度匹配的请求次数。一般为灰度完成、灰度暂停、未开启灰度等。

    周期值,每个周期清零,重新计数。

    匹配成功次数

    M

    周期值,每个周期清零,重新计数。

    匹配失败次数

    M

    周期值,每个周期清零,重新计数。

    匹配异常次数

    M

    周期值,每个周期清零,重新计数。

    匹配超时次数

    M

    周期值,每个周期清零,重新计数。

    请求平均时延

    M

    周期内请求的平均时延,单位:微秒。

    请求最大时延

    M

    周期内请求的最大时延,单位:微秒。

    请求最小时延

    M

    周期内请求的最小时延,单位:微秒。

    表3 服务级日志

    字段名称

    必选(M)/可选(O)

    字段说明

    时间

    M

    YYYY-MM-DD<1SP>hh:mm:ss[.SSS]

    微服务名

    M

    被调用的微服务名称。

    灰度服务名

    M

    为被调用的微服务名称,或为被调用的微服务的映射服务名称。

    请求次数

    M

    周期值,每个周期清零,重新计数。

    未进行匹配次数

    M

    未进行灰度匹配的请求次数。一般为灰度完成、灰度暂停、未开启灰度等。

    周期值,每个周期清零,重新计数。

    匹配成功次数

    M

    周期值,每个周期清零,重新计数。

    匹配失败次数

    M

    周期值,每个周期清零,重新计数。

    匹配异常次数

    M

    周期值,每个周期清零,重新计数。

    匹配超时次数

    M

    周期值,每个周期清零,重新计数。

    请求平均时延

    M

    周期内请求的平均时延,单位:微秒。

    请求最大时延

    M

    周期内请求的最大时延,单位:微秒。

    请求最小时延

    M

    周期内请求的最小时延,单位:微秒。

  • 告警日志

    日志字段默认采用“|” 分隔,一条日志一行,采用“\n”结尾。

    字段名称

    必选(M)/可选(O)

    字段说明

    时间

    M

    YYYY-MM-DD<1SP>hh:mm:ss[.SSS]

    告警ID

    M

    graysdk000000001-4

    告警名称

    M

    graysdk000000001:gray servers all down alarm

    graysdk000000002:etcd connect error

    graysdk000000003:gray rule execute exception

    graysdk000000004:gray rule execute timeout

    本机IP

    M

    本机IP

    告警类别

    M

    Firing:告警发生

    Resolved:告警解除

    详细信息

    M

    告警详细信息

    告警方式

    M

    自动告警

    开始时间

    M

    Firing时,为告警发生时间,Resolved时为0。

    结束时间

    M

    Resolved时,为告警解除时间,Firing时为0。

    service.json文件

    {
      "enableGrayMapping": "1",
      "services": [{
         "name": "demoA",
         "wgpServiceName": "demoB" 
      }, 
     { 
        "name": "demoC", 
        "wgpServiceName": "demoB" }]
     } 

    NUWA配置项

    nuwa:   
      wgp:     
        graySwitch: 1     
        jsonRuleFilePath: /opt/huawei/data/     
        serviceName: xxxxxx(业务自己配置)     
        sdkServiceUrl: xxxxxxx    
        enableCseGrayFilter: true     
        enableCommonGrayFilter: false     
        reportUrl: http://10.28.0.181:18080/dispatchProxy/v1

相关文档