本文介绍ARMS支持的多种调用链采样策略,帮助您根据自身场景选择合适的调用链采样策略,从而以较低成本获取想要的调用链数据。

调用链采样适用于访问量比较高的大流量应用,能够帮助您以较低的成本和性能开销记录最有价值的链路数据。调用链采样的基本原则是优先记录您最关心、最有可能访问的调用链。ARMS提供的调用链采样策略如下:

说明 您可以组合使用以上调用链采样策略,以充分满足个性化的采样需求。

基于链路特征采样

基于链路特征采样是指根据调用链本身的属性进行采样,例如耗时、状态等。ARMS支持按照固定比例采样和线程剖析慢调用采样。

固定比例采样

固定比例采样就是根据TraceId顺序号记录一定比例的调用链数据。例如,固定比例为10%,则每10条调用链数据记录1条。固定比例采样不会导致调用链数据本身不完整,要么保留整条链路数据,要么丢弃整条链路数据。

基于固定比例采样适用于以下场景:

  • 压测或大促峰值期间流量过大,为了避免调用链全量日志上报影响客户端性能,建议调低固定采样率比例至1%~10%。
  • 日常态全量调用链日志上报导致网络带宽成本高,可以考虑按需调整固定采样率的比例。

基于固定比例采样的基本原理如下:

dg_part

设置固定比例采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择应用监控 > 应用列表,并在顶部菜单栏选择目标地域。
  3. 应用列表页面单击目标应用的名称。
  4. 在左侧导航栏中单击应用设置,并在右侧页面单击自定义配置页签。
  5. 调用链采样设置区域,可以打开或关闭调用链采样开关,并设置采样率。采样率设置字段输入百分比的数字部分即可,例如输入10代表采样10%。
    注意 修改即时生效,无需重启应用。如果关闭采样,则调用链数据将不会被采集,请谨慎操作。
    Chain sampling

线程剖析慢调用采样

线程剖析慢调用采样就是记录触发线程剖析慢调用监听的调用链数据。开启线程剖析后,ARMS在记录慢调用的同时会向下传递一个采样标记,并保留该次慢调用的下游链路。不过,为了避免影响客户端性能,线程剖析监听数是有限的,如果有多个慢调用同时发生,仅会记录部分满足条件的慢调用及其下游调用链路。

线程剖析慢调用采样适用于以下场景:

  • 系统出现偶发性慢调用,例如夜间服务响应耗时从0.5s突增到10s。如果提前打开线程剖析(默认触发阈值为2s),ARMS会自动记录该次请求2s至10s之间的慢调用本地方法栈,及其下游调用链路。
  • 秒杀或周期性大促峰值期间系统响应慢,线程剖析会记录满足触发阈值的慢调用本地方法栈,及其下游调用链路。

线程剖析慢调用采样的基本原理如下:

dg_slow

设置线程剖析慢调用采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择应用监控 > 应用列表,并在顶部菜单栏选择目标地域。
  3. 应用列表页面单击目标应用的名称。
  4. 在左侧导航栏中单击应用设置,并在右侧页面单击自定义配置页签。
  5. 线程设置区域,可以打开或关闭线程诊断方法栈开关、线程剖析总控开关,并设置慢调用监听触发阈值。
    Thread Settings
    说明 服务调用耗时超过慢调用监听触发阈值(默认值为1000毫秒)时才会启动监听,并一直持续到该次调用结束或超过15秒。建议将此阈值设为调用耗时的第99百分位数。假设有100次调用,则按耗时从小到大排序,排在第99位的耗时就是第99百分位数。

基于业务特征采样

基于业务特征采样是指根据应用的业务流量特征进行采样。ARMS支持针对入口应用的HTTP流量特征进行规则配置。业务特征提取支持针对Header/Method/Cookie/Parameter信息进行过滤筛选,满足多场景业务特征匹配条件。开启全量开关后满足业务条件的调用链数据可以优先全量采集。配置后及时生效并支持运行期动态修改。

基于业务特征采样适用于以下场景:

  • 业务人员需要监控所关注的业务,但已有的监控系统无法表达业务语义。
  • 应用系统包含很多业务语义,运维人员需要快速配置并监控各个业务的流量数据。
  • 新业务接口上线后,接口不稳定导致出现异常或错误,开发人员需要针对此接口的每个调用分析定位问题。
  • 业务负责人需要梳理某个业务的依赖情况,并基于业务依赖进行相关业务优化,保障重点业务的稳定性。

基于业务特征的基本原理如下:

dg_scenario

设置业务特征采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择业务监控 > 应用接入,并在页面顶部选择目标地域。
  3. 应用接入页面的右上角单击创建业务监控
  4. 新建业务监控页面的基础信息区域,设置以下信息,单击高级设置,在高级设置区域,设置以下信息,然后单击保存
    pg_business
    参数 描述 示例
    业务名称 业务监控任务的名称,必填。 业务特征测试。
    入口应用 入口应用列表显示所有已安装应用监控探针的Java应用,必选。选中所需应用后,ARMS自动检测其应用探针的版本号。
    说明 应用探针升级至2.6.2+版本才能使用业务监控功能,若检测到探针版本非2.6.2+时,请您先升级探针,具体操作,请参见升级探针
    mall-center。
    服务类型 设置服务类型,必选。ARMS目前仅支持HTTP入口,适用于按HTTP流量特征进行业务链路染色场景。 HTTP入口
    服务名称 即应用提供的接口名称,必填。ARMS会根据您设置的入口应用自动匹配出该应用最近提供的接口列表以便您选择。如果推荐的接口不满足需求时,您也可以编辑修改。
    服务名称的匹配模式支持以下4种类型:
    • 等于:完全匹配服务名称的业务接口,默认匹配模式。
    • 开始等于:匹配以服务名称为前缀的业务接口。若您需要监控具备相同前缀的业务接口时,可选择此模式。
    • 包含:匹配包含服务名称的业务接口。若您的应用提供大量业务接口时,可选择此模式快速监控您所需的业务接口。
    • 结束等于:匹配以服务名称为后缀的业务接口。以“.do”和“.action”配置结尾的典型Web框架比较适合使用此模式。
    • 模式匹配:匹配动态URI Path,支持Ant-style路径模式匹配规则,可实现对某一类模式的URI的监控及分析。
    等于 /api/buy。
    过滤规则关系 可以选择同时满足下述规则满足下述一条规则 同时满足下述规则
    过滤规则 对配置的业务接口进一步筛选过滤,选填。过滤规则需要设置匹配参数(ParameterCookieMethodPathVariableHeader)、匹配Key值、匹配方式(==!=contains)和阈值,其中,只有在服务名称选择模式匹配时,且输入的字符串中包含占位符大括号({}),则匹配参数会出现PathVariable选项。支持设置多条过滤规则,多条过滤规则之间逻辑关系由您设置的过滤规则关系决定。 假设您的应用提供 /api/buy?brand=*** 这样的URL,您希望监控brand=Alibaba的接口调用时,可在表单中设置过滤规则Parameter brand == Alibaba。
    是否全量采集 是否对带染色标记的调用链进行全量采集。

基于运维特征采样

基于运维特征采样是指根据应用的运维特征进行采样,例如部署环境、网络环境等。ARMS支持根据应用的Kubernetes Pod Metadata特征进行采样。ARMS支持针对入口应用Kubernetes Pod Metadata特征进行运维特征规则配置,能够自动识别应用Pod实例元数据信息(如label/annotation/pod name/namespace等)并进行过滤筛选,满足多场景运维特征匹配条件。开启全量开关后满足运维特征条件的调用链数据可以优先全量采集。配置后及时生效并支持运行期动态修改。

基于运维特征采样适用于以下场景:

  • 应用探针差异如语言、版本、环境变量、启动参数等信息需要针对性采样设置。
  • 应用部署机器差异如规格、机型、区域、可用区等信息需要针对性采样设置。
  • 应用部署环境差异如开发、测试、预发、生产隔离性需求需要针对性采样设置。
  • 应用所处的网络环境如物理机、虚拟机、容器等部署形态差异或经典、VPC网络形式差异需要针对性采样设置。

基于运维特征采样的基本原理如下:

dg_k8s_ts

设置运维特征采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择业务监控 > 应用接入,并在页面顶部选择目标地域。
  3. 应用接入页面的右上角单击创建业务监控
  4. 新建业务监控页面的基础信息区域,设置以下信息,单击高级设置,在高级设置区域,设置以下信息,然后单击保存
    pg_k8s
    参数 描述 示例
    业务名称 业务监控任务的名称,必填。 运维特征测试。
    入口应用 入口应用列表显示所有已安装应用监控探针的Java应用,必选。选中所需应用后,ARMS自动检测其应用探针的版本号。
    说明 应用探针升级至2.6.2+版本才能使用业务监控功能,若检测到探针版本非2.6.2+时,请您先升级探针,具体操作,请参见升级探针
    product-center。
    服务类型 设置服务类型,必选。ARMS目前仅支持Kubernetes Pod Metadata,适用于按照K8s Pod环境特征进行业务链路染色场景。 Kubernetes Pod Metadata
    过滤规则关系 可以选择同时满足下述规则满足下述一条规则 同时满足下述规则
    过滤规则 对配置的业务接口进一步筛选过滤,选填。过滤规则需要设置匹配参数(podLabelpodAnnotationpodNamepodNamespacepodUIDpodIpnodeNamehostIppodServiceAccount)、匹配方式(==!=contains)和阈值。支持设置多条过滤规则,多条过滤规则之间逻辑关系由您设置的过滤规则关系决定。 假设您的应用在dev/test/stagging/prod等环境均有部署,通过Pod label stge标签进行区分,您希望监控dev环境并对调用链全量采集,可在表单中设置过滤规则podLabel stage == dev。
    是否全量采集 是否对带染色标记的调用链进行全量采集。

基于时间特征采样

基于时间特征采样是指根据应用的时间特征进行采样,例如在线诊断和离线分析。不同的诊断场景对于采样率的要求也不尽相同。ARMS支持在线诊断场景临时全量采集,方便您快速定位线上问题。开启实时诊断后,ARMS会持续监控应用5分钟,并在这5分钟内全量上报调用链数据。接下来,您就能以出现性能问题的调用链路为起点,通过方法栈瀑布图和线程剖析等功能定位问题原因。

基于时间特征采样适用于以下场景:

当您需要密切监控一小段时间内的应用性能时,例如发布应用或者对应用进行压测时。

基于时间特征采样的基本原理如下:

dg_temp

设置时间特征采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择应用监控 > 应用列表,并在顶部菜单栏选择目标地域。
  3. 应用列表页面单击目标应用的名称。
  4. 在左侧导航栏选择应用诊断 > 实时诊断

    首次进入实时诊断页面时,默认自动开启实时诊断。其他情况下,如需开启实时诊断,请单击页面右上角的开启实时诊断

    实时诊断将于自动开启5分钟后自动终止。如需提前终止实时诊断,请单击页面右上角的暂停定时刷新