业务系统配置

业务系统配置作用于每个独立的业务系统。如果您希望业务系统的配置情况与全局配置完全一致,可以选择从全局配置中继承设置值。您也可以单独配置每个业务系统自己的独立配置。

除分位数、用户溯源自定义嵌码、数据项和自定义指标外,其他的业务系统配置项和全局配置的的配置项完全相同,具体介绍请参见全局配置

常规选项

分位数:对于指定的业务系统,您可以单独设置要显示的分位值曲线,即勾选单独配置后进行设置。业务系统相关的分位值统计图表默认展示50、80、95和99分位值曲线。

用户溯源

当需要追踪某一个事务是哪个用户进行的,请先设置用户信息获取方式。当发生慢事务追踪时,应用与微服务会根据您设置的数据源按照优先级抓取用户标识,直到获取到为止。当您在事务追踪页面查看列表时,只需查看用户标识一列,就可以知道慢事务是由哪个用户触发的。

注意:Java Agent 在配置用户溯源时,当应用中存在跨应用或开启基调听云Web嵌码时,会向Header或Cookie中写入数据,当应用本身写入Header或Cookie的数据加上Java Agent写入的数据长度大于Header或Cookie限制的长度时,导致应用写Header或Cookie失败,进而导致应用报错。Java Agent 3.6.2.1对写入Header或Cookie的数据做了长度限制,默认为50个字符。这种修改方式不能完全避免问题,但能大大降低问题发生的可能性。

配置获取方式

配置用户溯源,单击添加数据源,在下拉列表中选择获取方式,包括以下几种方式:

  • Java method parameter(s):从方法参数获取,该方式为默认方式。通过该方式获取参数会自动生成一条自定义嵌码,并自动执行,显示在自定义嵌码页签中。在Class搜索框中输入类名的关键字,找到类名后,在Method部分选择要获取用户标识参数所在的方法,然后选择要获取的参数。

  • p1:xxxx或p2:xxxx代表当前方法的参数,按方法入参的顺序排序。

  • this:当前Class的this对象。

  • Getter Chain:方法调用链,可以获取对象中一个具体的值,例如getPerson().getName()。

  • Web request query parameter:从请求的URL参数获取。在文本框中输入代表用户信息的参数名称。

  • HTTP request header:从HTTP请求头中的参数获取。在文本框中输入代表用户信息的参数名称。

  • HTTP post parameter:从HTTP请求体中的参数获取。在文本框中输入代表用户信息的参数名称。

  • HTTP response header:从HTTP响应头中的参数获取。在文本框中输入代表用户信息的参数名称。

  • Servlet session attribure:从Session中保存用户标识的参数获取。在Key文本框中输入代表用户信息的属性名称。如果需要获取对象中一个具体的值,请填写Getter Chain方法调用链,例如getPerson().getName()。

  • Web request path:从请求URL的URI部分获取。

  • HTTP cookie:从Cookie中保存用户标识的参数获取。在文本框中输入代表用户信息的参数名称。

数据处理

某些情况下,获取到的参数信息并不是准确的用户信息,例如参数中的某个字段才是真正的用户信息,对于这种情况,您可以勾选数据处理,对参数进行二次精确,包括between、before和after三种方式。例如Web请求为https://help.tingyun.com/document_detail/106690.html?spm=a2c4g-11174359.6.643.54e960f80sE7s8,其中spm这个参数中只有“-”前面的部分为用户信息,那么我们将Substring方式设置为before,内容设置为“-”,基调听云APM获取到的用户信息为a2c4g。您还可以在下方的预览文本框中输入测试内容,单击查看结果进行确认。

管理数据源

单击保存配置后,新添加的数据源将会显示在列表的最上方,即优先级最高。您可以单击顺序列中的箭头来调整数据源的优先级,排列越靠上,优先级越高。表示移到顶部,表示移到底部。表示上移一行,表示下移一行。基调听云APM会按照优先级依次匹配数据源获取用户标识。当您不想使用某个数据源时,可在状态栏中将其关闭。

在搜索框中可根据Key的关键字搜索数据源。

自定义嵌码

用户可以对各种非标准化应用组件的某个方法或者基调听云暂不支持的组件的某个方法进行监控。当方法被调用时,探针将对该方法进行性能数据(如调用次数、平均响应时间等)搜索,获取到的内容将在事务分解表格、事务追踪的调用栈中进行展示。

自定义嵌码状态栏:自定义嵌码状态开关开启后,您所配置的自定义嵌码可以被执行。关闭后,仍然可以配置自定义嵌码,但是不能执行嵌码。

未执行的嵌码列表:显示配置完成但还未执行嵌码的自定义嵌码配置。单击右上方的添加自定义嵌码按钮,您可以通过代码包添加和手工录入两种方式配置。

通过代码包添加

当您不能准确的输入具体的类名和方法名时,可以在应用的代码中按层级来定位方法,基础包不会显示在此处。在下拉菜单中选择应用,可以通过类名、方法名或者参数名来搜索,匹配到的内容将会显示为蓝色,搜索到的方法会自动被展开展示。您也可直接单击可展开包和类,以便定位到方法。括号中是方法的参数类型,最后显示的是返回值类型。勾选忽略方法参数后,方法中的参数会显示为省略号,如下图所示,重载的方法会合并显示为一个。

在左侧确定一个或多个方法后,右侧面板中会显示嵌码选项当调用方法时忽略事务两个选项按钮

  • 嵌码选项

    • 包含子类:勾选后,当前方法所在的类的所有子类都会被监控到。

    • 入口方法:有些方法由于没有入口方法,就算自定义嵌码了也不会作为一个事务显示,因此这类方法如果要作为一个事务来监控,必须要勾选该项。

    • 命名事务/业务接口:勾选后,该方法的名称将作为事务名称或服务接口名称。事务或服务接口的命名方式为:Custom/类名/方法名。如果不勾选,事务名称是默认的一些方法名。

    • 采集方法参数:勾选后,可以采集当前方法的参数。属性名称是给参数一个命名,默认会生成一个数据项,并展示在数据项页签列表中。只有配置了属性名称的参数才会被采集。当参数类型为对象时,如果您还想采集具体的一个值,请配置Getter Chain。如果需要在命名事务后的名称中继续加入参数的值,请勾选参数命名复选框,该复选框只有在命名事务/业务接口和采集方法参数功能同时开启的情况下才可勾选。命名方式为:Custom/类名/方法名?key=参数值。

  • 当调用方法时忽略事务:当该方法被调用时,该方法所涉及的事务不会被监控到,即事务列表或者事务追踪列表中不会再出现上述事务。

手工录入

如果您对应用代码非常熟悉,可以使用该方式。包含5种匹配规则(即Match Type),说明如下:

  • Class method by signature:请准确的输入类名(包括包名)和方法名。

    • 忽略方法参数:不管该方法有几个参数,所有参数都会被采集。

    • 指定方法参数:由于在Java代码中会出现方法重载的情况,因此需要指定参数类型来唯一确定一个方法。在重载的情况下,只采集与配置的参数个数一样的方法。例如拥有相同方法名称的方法有3个,分别有1个参数、2个参数和3个参数,我们只配置了一个参数类型,则基调听云APM只采集1个参数的方法。

    • 嵌码选项:请参见通过代码包添加下的嵌码选项说明。

    • 当调用方法时忽略事务:当该方法被调用时,该方法所涉及的事务不会被监控到,即事务列表或者事务追踪列表中不会再出现上述事务。

  • Class method by return type:请准确的输入类名(包括包名)和返回值类型。

    • 包含子类:勾选后,只要是包含该返回值类型的方法所在的类的所有子类都会被监控到。

    • 入口方法:有些方法由于没有入口方法,就算自定义嵌码了也不会作为一个事务显示,因此这类方法如果要作为一个事务来监控,必须要勾选该项。

    • 命名事务/业务接口:勾选后,该方法的名称将作为事务名称或服务接口名称。事务或服务接口的命名方式为:Custom/类名/方法名。如果不勾选,事务名称是默认的一些方法名。

    • 采集方法返回值:勾选后,可以采集该类中包含该返回值类型的方法的返回值。属性名称是给返回值一个命名,默认会生成一个数据项,并展示在数据项页签列表中。当返回值类型为对象时,如果您还想采集具体的一个值,请配置Getter Chain。

    • 当调用方法时忽略事务:当该类中包含该返回值类型的方法被调用时,所涉及的事务不会被监控到,即事务列表或者事务追踪列表中不会再出现上述事务。

  • Interface method by signature:请准确的输入接口名和方法名。

    • 忽略方法参数:不管该方法有几个参数,所有参数都会被采集。

    • 指定方法参数:在重载的情况下,只采集与配置的参数个数一样的方法。例如拥有相同方法名称的方法有3个,分别有1个参数、2个参数和3个参数,我们只配置了一个参数类型,则基调听云APM只采集1个参数的方法。

    • 嵌码选项:请参见通过代码包添加下的嵌码选项说明。

    • 当调用方法时忽略事务:当该方法被调用时,该方法所涉及的事务不会被监控到,即事务列表或者事务追踪列表中不会再出现上述事务。

  • Interface method by signature:请准确的输入接口名和返回值类型。

    • 入口方法:有些方法由于没有入口方法,就算自定义嵌码了也不会作为一个事务显示,因此这类方法如果要作为一个事务来监控,必须要勾选该项。

    • 命名事务/业务接口:勾选后,该方法的名称将作为事务名称或服务接口名称。事务或服务接口的命名方式为:Custom/类名/方法名。如果不勾选,事务名称是默认的一些方法名。

    • 采集方法返回值:勾选后,可以采集包含该返回值类型的方法的返回值。属性名称是给返回值一个命名,默认会生成一个数据项,并展示在数据项页签列表中。当返回值类型为对象时,如果您还想采集具体的一个值,请配置Getter Chain。

    • 当调用方法时忽略事务:当包含该返回值类型的方法被调用时,所涉及的事务不会被监控到,即事务列表或者事务追踪列表中不会再出现上述事务。

  • Method annotation for class:请准确输入注解名。

    • 入口方法:有些方法由于没有入口方法,就算自定义嵌码了也不会作为一个事务显示,因此这类方法如果要作为一个事务来监控,必须要勾选该项。

    • 命名事务/业务接口:勾选后,该方法的名称将作为事务名称或服务接口名称。事务或服务接口的命名方式为:Custom/类名/方法名。如果不勾选,事务名称是默认的一些方法名。

    • 当调用方法时忽略事务:当包含该注解名的方法被调用时,所涉及的事务不会被监控到,即事务列表或者事务追踪列表中不会再出现上述事务。

管理自定义嵌码规则

自定义嵌码创建完成后,会显示在未执行的嵌码列表中,默认为开启状态。如果您不想在单击执行嵌码按钮后对某一条配置进行嵌码,可以在Enable列关闭该条配置。在搜索框中输入类名、接口名、方法注解名、返回值类型或者方法名,都可以对列表进行搜索。

已执行的嵌码列表:单击最下方的执行嵌码按钮后,开启状态的自定义嵌码配置开始执行,显示在该列表中。包含四种状态:

  • 嵌码成功:业务系统中所有应用的所有实例都执行嵌码成功。

  • 部分成功:业务系统中部分应用的部分实例执行嵌码成功,部分失败。

  • 嵌码失败:业务系统中所有应用的所有实例都执行嵌码失败。

  • 等待执行:按照计划等待执行中。探针5分钟内有心跳才可执行自定义嵌码。

执行完成的自定义嵌码配置可以在Enable列关闭,目的是让探针停止采集该条配置的数据。在搜索框中输入类名、接口名、方法注解名、返回值类型或者方法名,都可以对列表进行搜索。

数据项

用户可以将业务相关的参数定义为一个数据项。数据项可以被自定义指标所使用。单击右上角的添加按钮,进行数据项的配置。

  • 名称:输入数据项的名称。

  • 数据类型:选择数据项的数据类型,包括String、Integer和Double三种类型。

  • 当出现多值时,保留:对于一个请求,同一个方法可能会被调用多次,例如方法的递归调用,每次调用时入口参数的值很可能会不同,这时,您可以设置保留第一个(取第一次调用时参数的值)、最后一个(取最后一次调用时参数的值)或者取出现次数。

  • 添加数据项来源:来源包括以下8种方式。

    • Java method parameter(s):从方法参数获取,该方式为默认方式。通过该方式获取参数会自动生成一条自定义嵌码,并自动执行,显示在自定义嵌码页签中。在Class下拉菜单中选择类名后(支持搜索),在Methods部分选择要作为数据源来源的参数所在的方法,然后选择要获取的数据源。

      • Class name:类名,包含包名。

      • Simple class name:简单类名,不包含包名。

      • Method name:方法名。

      • this:当前Class的this对象。当需要获取对象中一个具体的值时可以填写Getter Chain,例如getPerson().getName()。

      • p1:xxxx或p2:xxxx代表当前方法的参数,按方法入参的顺序排序。

    • Web request query parameter:从请求的URL参数获取。在文本框中输入代表该数据项的参数名称。

    • HTTP request header:从HTTP请求头中的参数获取。在文本框中输入代表该数据项的参数名称。

    • HTTP post parameter:从HTTP请求体中的参数获取。在文本框中输入代表该数据项的参数名称。

    • HTTP response header:从HTTP响应头中的参数获取。在文本框中输入代表该数据项的参数名称。

    • Servlet session attribure:从Session中获取参数。在文本框中输入代表该数据项的属性名称。如果需要获取对象中一个具体的值,请填写Getter Chain方法调用链,例如getPerson().getName()。

    • Web request URL:从请求的URL获取。

    • Web request path:从请求URL的URI部分获取。

数据处理

某些情况下,获取到的参数信息并不是准确的数据源信息,例如参数中的某个字段才是真正的用户信息,对于这种情况,您可以勾选数据处理,对参数进行二次精确,包括between、before和after三种方式。例如Web请求为https://help.tingyun.com/document_detail/106690.html?spm=a2c4g-11174359.6.643.54e960f80sE7s8,其中spm这个参数中只有“-”前面的部分为用户信息,那么我们将Substring方式设置为before,内容设置为“-”,基调听云APM获取到的用户信息为a2c4g。您还可以在下方的预览文本框中输入测试内容,单击查看结果进行确认。

新创建的获取来源会显示在顶部第一条,即优先级最高。从上往下优先级依次降低。基调听云APM会按照优先级依次匹配数据源获取数据项的值。当您不想使用某个获取来源时,可在启用栏中将其关闭。

自定义指标

当用户想从业务角度查看符合某个条件(例如订单金额大于100元)的事务发生次数时,可配置自定义指标来实现。

配置项 说明
指标名称 输入自定义指标的名称。
指标(SELECT) 配置要采集的目标数据项,例如价格和数量两个数据项。该项相当于SQL语句中SELECT的作用,为必填项。 点击新建按钮进行添加,选择数据项和聚合规则,聚合规则即计算方式,会根据数据项类型的不同而改变,例如String类型只包含count,表示计数。勾选一个指标后,点击修改按钮进行修改。勾选一个或多个指标后,点击删除可直接将其删除。
过滤器(WHERE) 配置采集目标数据项数据的条件,当满足过滤器内所有条件时探针才进行采集。该项相当于SQL语句中WHERE的作用,为可选项。 点击新建按钮进行添加,选择数据项、比较条件和数值。勾选一个指标后,点击修改按钮进行修改。勾选一个或多个指标后,点击删除可直接将其删除。
维度(GROUP BY) 配置要采集的目标数据项的统计维度。该项相当于SQL语句中GROUP BY的分组作用,为可选项。 点击新建按钮进行添加,选择数据项即可。勾选一个或多个指标后,点击删除可直接将其删除。

举例说明,如果您想知道订单金额大于100的订单有多少笔,即是要统计提交订单这个业务操作所涉及的事务中金额参数大于100的发生了多少次。如假设订单金额已经被设置成了数据项“金额”,则我们可以定义自定义指标为“订单金额大于100”,指标添加“金额”,聚合规则为count。过滤器添加“金额”,比较条件为大于,值为100。维度不设置。

自定义指标的监控统结果请到应用下的自定义指标页签或者事务下的自定义指标页签查看。

单击具体的指标条目可查看统计详情。

用户可以按维度查询该指标的维度展示详情。

性能诊断

默认情况下,探针监控到的方法有限,而对于一个请求的完整调用链来说,可能会存在某个方法耗时特别长,又无法进一步细粒度的分析。全栈快照通过对请求线程做多次快照剖析,得到更为详细的调用链信息,来更准确地分析性能瓶颈。探针在收到快照采集指令后,会对某一个请求线程开启快照采集诊断会话,采集当前线程的线程名、线程ID等信息。

采集全栈快照对性能有一定的消耗,因此用户可以按需控制是否开启快照采集。开启后,还可以控制单片快照采集的时间间隔。

image-20211216193946998

全栈快照的采集模式有如下三种:

  • 触发采集:有条件的触发全栈快照诊断会话。

    触发条件为:1分钟内慢请求占比超过指定阈值(默认值10%,数据边界:[1,100]%)且慢请求次数超过20时,启动诊断会话。诊断会话的持续时间默认为5分钟(数据边界:[1, 10]),该诊断周期内,会为每个请求,每分钟尝试采集10个(数据边界:[1, 100])快照样本,总的快照样本限制为100个(数据边界:[1, 1000])。

    为了避免因为持续的性能问题而导致过多的采集快照数据,可以配置诊断会话之间的等待时间,默认诊断会话间隔10分钟(数据边界:[5, 30])。

  • 固定周期采集:按照固定周期采集全栈快照。勾选复选框后才能生效。

    触发条件为:每1分钟(数据边界:[1,100])采集10个全栈快照。当处于诊断会话(触发采集)时,固定周期的采集暂停。

  • 强制采集:根据条件强制采集全栈快照。勾选复选框后才能生效。该模式默认关闭。

    触发条件为:当请求执行时间超过3倍慢请求阈值时(数据边界:[慢请求阈值,∞]),开启针对该请求的全栈快照,每分钟最多采集100个快照。

单击底部的保存配置按钮,配置开始生效。用户可在请求追踪详情的全栈快照页签中查看结果。

results matching ""

    No results matching ""