在配置管理页面,支持对各应用的开关、影子规则、Mock规则和监控功能进行配置。本文介绍配置管理页面的基本操作。

前提条件

接入应用探针

管理配置

  1. 登录PTS控制台
  2. 在左侧导航栏选择压测流量隔离 > 应用管理 > 配置管理
  3. 配置管理页面的右上角,从当前环境列表中,选择环境。
  4. 在左侧选择一个应用,在应用级开关页签,开启或关闭各开关,然后单击提交
    参数 说明
    启用PTS探针(总开关) 关闭后AOP空转,探针的所有功能关闭,无压测执行时建议保持关闭状态。
    阻断所有测试流量 开启后所有带压测标的流量会被拒绝,抛出PtsBlockException。
    启用数据路由校验 开启后对压测标和参数进行综合分析校验,防止数据脏写,需要配置偏移规则,存在一定的性能损耗。
    启用监控数据采集 开启探针内置的调用链、接口监控、日志上报功能,若探针端配置文件未开启相关插件则该开关无效。
  5. 配置管理页面,单击影子规则配置页签。
  6. 单击新建规则,选择需要配置的数据库影子规则,然后在规则配置面板中设置相关参数。
    1. 影子策略页签下,配置影子策略。
      参数 说明 示例
      源数据库名 输入源数据库名称。 hello
      隔离方法 选择数据隔离策略,包括以下两种方式:
      • 隔离到影子库:在用一个实例上创建与源数据库同配置的影子库,影子库名通常会在正常库名的基础上加上固定的前后缀,表名保持不变。库级别的隔离是数据源的隔离,隔离相对比较彻底、安全。
      • 隔离到影子表:在生产库建立业务表同结构的影子表,影子表名通常会在正常表名的基础上加上固定的前后缀。表级别的隔离在设计上允许复用一部分只读表,但是梳理难度有所增加。
      • 影子Key隔离:只有创建Redis影子规则时,支持影子Key隔离。一般用在KV缓存、存储组件上(例如Redis),探针会拦截对KV缓存、存储组件的所有操作,根据流量标自动修改Key和过期时间,达到隔离数据和数据清理的目的。
      隔离到影子表
      影子数据库 当隔离方法为隔离到影子库,则需要输入影子数据库名。 __test_db
      影子用户名 当隔离方法为隔离到影子库,则输入设置的影子用户名ID。 111
      影子密码 当隔离方法为隔离到影子库,则输入设置的影子用户密码。 111
      影子表名格式 当隔离方法为隔离到影子表,则需要选择影子表名格式。可以选择在原始表名加上固定的前缀或后缀。
      • 原始表名加前缀
      • __test_
      影子表白名单 使用影子表的表名清单。不填则默认全部使用影子表,影子表间用半角逗号(,)分隔。
      影子表黑名单 不使用影子表的表名清单。影子表间用半角逗号(,)分隔。
      注意
      • 同一个数据库只能配置一条规则。
      • 影子表规则修改实时生效,影子库修改重启后才能确保生效,请谨慎修改配置。
    2. 单击数据校验页签,然后单击新增规则,为相应的表名设置偏移量。

      偏移字段:字段偏移可以极大的保证业务数据的安全。偏移字段一般选择用户ID、商品ID等关联字段,如果有用到Sequence类的分布式ID组件,也需要进行偏移。根据业务的实际增长选择不同的偏移量,一般会选择10年以上都不会用到的值作为偏移量。

      具体的偏移量需要根据业务增长和数据类型确定,常见的偏移方式如下:

      字段类型 偏移量 示例值
      Long/Sequence/分布式ID 900000000000000000 1021 -> 900000000000001021
      手机号 90000000000 13888888888 -> 93888888888
  7. 配置管理页面,单击Mock规则配置页签。然后单击新建规则,选择Mock规则类型,然后在面板中配置Mock规则。

    Mock规则相关的参数说明如下:

    • Mock方法调用
      注意
      • 一个方法签名(类名+方法名+参数类型列表)只能配置一条规则。
      • 修改方法调用拦截点必须手动重启应用后才能生效。
      表 1. Mock方法调用
      参数类型 参数 描述
      拦截方法 类/接口名称 输入类或接口全名。
      方法名称 输入方法名称。
      方法返回类型 请输入返回值类型的完整名称,void方法无须填写。
      参数类型列表 一行一个参数类型,请按顺序输入参数类型的完整名称,无参方法无须填写。
      模拟响应 模拟延时(RT) 模拟延时的响应时间。单位ms,范围0~99999。
      模拟响应 选择模拟响应的方式:
      • 模拟固定值。
      • 模拟抛出异常。
      • 劫持到Mock服务。
      返回值内容 当模拟响应为模拟固定值模式时,需要输入JSON格式的响应内容。
      接口地址 当模拟响应为劫持到Mock服务,需要选择接口请求方式,输入接口地址。
      接口参数 格式为参数名称=参数值,支持从方法调用中获取参数值。例如:name=${params[0].username},表示取被mock方法的第0个参数的username属性,作为调用mock服务的name参数。
    • Mock Feign方法调用
      注意
      • 一个方法签名(类名+方法名+参数类型列表)只能配置一条规则。
      • 规则修改实时生效,请谨慎修改配置。
      表 2. Mock Feign方法调用
      参数类型 参数 描述
      拦截方法 类/接口名称 输入类或接口全名。
      方法名称 输入方法名称。
      方法返回类型 请输入返回值类型的完整名称,void方法无须填写。
      参数类型列表 一行一个参数类型,请按顺序输入参数类型的完整名称,无参方法无须填写。
      模拟响应 模拟延时(RT) 模拟延时的响应时间。单位ms,范围0~99999。
      模拟响应 选择模拟响应的方式:
      • 模拟固定值。
      • 模拟抛出异常。
      • 劫持到Mock服务。
      返回值内容 当模拟响应为模拟固定值模式时,需要输入JSON格式的响应内容。
      接口地址 当模拟响应为劫持到Mock服务,需要选择接口请求方式,输入接口地址。
      接口参数 格式为参数名称=参数值,支持从方法调用中获取参数值。例如:name=${params[0].username},表示取被mock方法的第0个参数的username属性,作为调用mock服务的name参数。
    • Mock Kafka消息
      说明
      • 一个Topic只能配置一条生产者规则、一条消费者规则。
      • 规则修改实时生效,请谨慎修改配置。
      表 3. Mock Kafka消息
      参数 描述
      生产者/消费者 选择应用的类型:
      • Kafka Consumer:从消息队列Kafka版接收消息的应用。
      • Kafka Producer:向消息队列Kafka版发送消息的应用。

      更多信息,请参见名词解释

      消息主题(Topic) 消息的主题,用于分类消息。
      模拟延时(RT) 模拟延时的响应时间。单位ms,范围0~99999。
    • Mock Rabbit消息
      注意
      • 一个Exchange+RoutingKey只能配置一条生产者规则。
      • 一个QueueName只能配置一条消费者规则。
      • 规则修改实时生效,请谨慎修改配置。
      表 4. Mock Rabbit消息
      参数 描述
      生产者/消费者 选择程序类型:
      • Rabbit Producer:消息生产者,即投递消息的程序。
      • Rabbit Consumer:消息消费者,即接收消息的程序。
      QueueName 消息队列,每个消息都会被投入到一个或多个Queue里。
      模拟延时(RT) 延时消息是指在指定时间段之后才被消费者消费的消息。更多信息,请参见延时消息
    • Mock HTTP调用
      注意
      • 一个接口地址只能配置一条规则。
      • 规则修改实时生效,请谨慎修改配置。
      表 5. Mock HTTP调用
      参数类型 参数 描述
      拦截请求 接口地址 输入拦截请求的接口地址,例如http://www.abc.com/auth/login
      模拟响应 模拟延时(RT) 模拟延时的响应时间。单位ms,范围0~99999。
      模拟响应 选择模拟响应的方式:
      • 模拟固定返回值。
      • 模拟抛出异常。
      • 劫持到Mock服务。
      响应状态码 当模拟响应为模拟固定返回值时,需要设置HTTP响应状态码。
      响应头信息 当模拟响应为模拟固定返回值时,需要设置响应头信息。一行一个信息,例如content-type=application/json
      响应体内容 当模拟响应为模拟固定返回值时,需要设置响应体内容。
      接口地址 当模拟响应为劫持到Mock服务时,需要设置接口地址。例如http://mock.abc.com/mock_user_login
    • Mock Rocket消息
      注意
      • 一个Topic只能配置一条生产者规则、一条消费者规则。
      • 规则修改实时生效,请谨慎修改配置。
      表 6. Mock Rocket消息
      参数 描述
      生产者/消费者 包括以下两种:
      • Rocket Producer:消息生产者,也称为消息发布者,负责生产并发送消息。
      • Rocket Consumer:消息消费者,也称为消息订阅者,负责接收并消费消息。
      消息主题(Topic) 消息主题,一级消息类型,通过Topic对消息进行分类。更多信息,请参见Topic与Tag最佳实践
      模拟延时(RT) 模拟延时的响应时间。单位ms,范围0~99999。
    • Mock Dubbo调用
      注意 一个Dubbo方法签名(服务接口名+方法名+参数类型列表)只能配置一条规则。
      表 7. Mock Dubbo调用
      参数类型 参数 描述
      拦截方法 服务名称 输入Dubbo的服务名称。
      方法名称 输入Dubbo的方法名称。
      方法返回类型 请输入返回值的类型的完整名称,void方法无须填写。
      参数类型列表 请按顺序输入参数类型的完整名称,无参方法无须填写。一行一个参数类型。
      模拟响应 模拟延时(RT) 模拟延时的响应时间。单位ms,范围0~99999。
      模拟响应 选择模拟响应的方式:
      • 模拟固定返回值。
      • 模拟抛出异常。
      • 劫持到Mock服务。
      返回值内容 当模拟响应为模拟固定返回值时,请输入JSON格式的响应内容。
      接口地址 当模拟响应为劫持到Mock服务,需要选择接口请求方式,输入接口地址。
      接口参数 格式为参数名称=参数值,支持从方法调用中获取参数值。例如:name=${params[0].username},表示取被mock方法的第0个参数的username属性,作为调用mock服务的name参数。
  8. 配置管理页面,单击监控功能配置页签,配置监控参数,然后单击提交
    说明 若探针端配置文件未开启内置Tracing插件则配置项无效,修改Tracing配置动态生效,无需重启应用,请谨慎修改配置。
    参数 说明
    采集调用链 关闭则只传标不采集,开启/关闭均存在性能损耗。
    调用链采样率(千分比) 单机采样率,采样率越高,性能损耗越大。
    调用链采样限流 单机限流,超过阈值则调用链不会被采集。
    仅对测试流量采样 开启则仅对测试流量进行采样和上报。
    • 联调过程中,建议开启此开关,并设置调用链采样率(千分比)为1000‰ ,方便快速调用链查询和问题排查。
    • 压测过程中,建议若开启此开关,将调用链采样率(千分比)设置为1‰或者关闭此开关,避免过多的性能损耗。
    采集异常调用的堆栈 开启则在发生调用异常时采集该异常的堆栈。
    采集无标线程堆栈 建议不要打开此开关,只有在特定情况下的联调才需要打开协助排查问题。
    采集探针日志 不采集应用日志。关闭后仅落盘不上传到控制台,存在一定的性能损耗。
    日志级别过滤 仅控制上报日志的级别,日志本地落盘不受此级别影响。
    日志上传限流 单机限流,超过阈值则排队,队列满则丢弃,不会影响日志本地落盘。
    采集系统指标 采集CPU、GC等监控数据,存在一定的性能损耗。
    采集接口指标 采集接口的TPS、RT等监控数据,存在一定的性能损耗。
    接口数量限制 监控的最大接口数,超过则丢弃,接口数量阈值越大性能损耗越多。
    指标上传限流 单机限流,超过阈值则排队,队列满则丢弃。
    设置接口白名单 多个接口用半角逗号(,)分隔。
    设置接口黑名单 多个接口用半角逗号(,)分隔。