meituan-raptor

概述:本文简单记录了Raptor服务端的功能和使用规范

概述

Raptor服务端融合改进了CAT和Falcon的功能,提供了java,c/c++、node、python、go等多语言客户端,已经在基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度继承,为各业务线提供系统丰富的性能指标、健康状况、实时告警等。

Raptor的优势:

  • Raptor是一个实时系统,大部分系统时分钟级统计,但是从数据生成到服务端处理结束是秒级别;Raptor在一些核心业务指标监控上,支持秒级监控,秒级整体端端延迟10s
  • 监控数据是全量统计,客户端预计算;链路数据是采样计算,大约有5%的项目链路是采样统计

Raptor服务端监控主要分为两大类:

  • 应用层监控:主要面向的是聚合指标,应用要接入cat-client包,通过cat-client进行埋点上报数据,是一种侵入式监控
  • 系统层监控:主要面向的是非聚合类的时序指标,比如:机器cpu、内存使用率的监控

快速入门

基本使用流程:

  • SDK(Software Development Kit,软件开发工具包)埋点接入:Raptor服务端监控通过SDK进行数据埋点
  • 查看监控数据,完成接入后,可在对应网页中查看监控数据:
    • Transaction:查看项目中一段代码运行情况数据
    • Event:查看项目中一段代码运行次数数据
    • Problem:查看项目在运行过程中出现的问题数据
    • Business:查看项目业务指标数据
    • Host:查看项目机器系统指标数据
    • Stack:查看项目堆栈、jar包信息

服务端指标说明

Raptor服务端相关指标包括:Transaction、Event、Metric、Heartbeat等

  • 统一框架埋点:新美大所有的中间件上都继承了Raptor埋点,比如RPC框架Pigeon、Mtthrift,数据访问层框架Zebra,缓存框架Celler、Squirrel,消息中间件Mafka、Swallow等。业务方只需要升级对应监控,并且继承了统一项目命名规范就可以看到中间件访问相关监控
  • Transaction埋点:主要记录一些跨项目,跨模块的一些调用,记录一些复杂的比较耗时代码通缉,建议如果是本地代码的Transaction,建议平均执行时间要相对比较长,比如至少超过5ms,不少业务方用了Transaction,基本平均耗时基本都是1ms都不到,可能仅仅只是用统计功能,这个可以用Event来代替,Event相比Transaction开销要很低,并且埋点的代码也更加精简。Transaction支持AppKey、IP、Type、Name四个维度的聚合,统计指标有总数、失败数、成功率、TP90、TP95、TP99等丰富的性能指标。注意Transaction有IP维度的聚合,这样可以根据单台机器看性能指标,很多场景下,机器维度数据是非常有用的。
  • Event埋点: 主要记录用于记录事件。最常见的场景就是当埋Transaction时候,需要Event作为补充,比如记录当时访问参数等。代码一些特殊诡异路径的分析,还有异常信息记录。Event可以解决一些业务统计问题,它更加侧重于业务一些简单统计。Event埋点支持Appkey、IP、Type、Name四个维度的聚合,统计指标相比Transaction少一些,只有总数、失败、以及成功率,Event也支持机器维度的统计。
  • Metric埋点: 主要用于记录了一些实际的业务指标,用于运维监控,比如订单量,支付等这类case,Metric侧重于实时,侧重于非常重要关键业务指标,Metric侧重于实时监控,不做统计分析。这边有部分业务将一些某个失败作为一个Metric的指标,后续还想统计这个失败总数等,其实这个非常不适合用Metric来做,这类异常点的统计最好就是封装一个特定场景的业务异常,用logError的api即可。异常可以支持异常告警,也可以根据天等做统计。注意,业务指标没有机器维度的聚合,很大程度上因为业务指标比如订单和具体的某台机器没有关系。Metric业务指标最新版本支持多维度的tag,比如订单指标,可以额外加上来源、渠道等tag,这样当出现问题时候,可以根据来源、渠道等多种选择条件来看业务指标查询。每个Metric允许的多维度的tag乘积总数限制是1w,其实相比于一些faclon的指标上报,多tag一个指标最多可以充当1w个指标情况,每个不同的指标可以支持不一样的tag,这样可以极大解决业务指标监控和分析功能。
  • Heartbeat: 是cat客户端主动上报一些jvm等指标,不需要业务埋点。 Heartbeat默认每台机器每分钟上报一次,借助该指标可判断该appkey下正常运行的机器数量。

Transaction

1.主要功能:

Transaction主要用于监控一段代码的运行情况:运行次数、QPS、错误次数、失败率、响应时间统计(平均响应时间、Tp9XXX分位值)等等。

应用启动后默认会打点的部分如下,具体打点信息可以参考基础架构组件Raptor打点统计,来源组件非cat的打点问题咨询,可以提TT向各组件部门咨询。

2.报表介绍

2.1 Transaction统计界面

Type统计界面展示了一个Transaction的第一层分类的视图(👉 Type统计),可以知道这段时间里面一个分类运行的次数,平均响应时间,延迟,95线以及99线。

从上而下分析报表查询功能及Type介绍:

  1. 输入Appkey,查看项目数据:页面会默认打开上次查看的appkey数据,如果需要切换其他项目数据,输入Appkey,回车即可。
  2. 点击切换报表时间类型:小时、天、周、月等维度查看对应时间跨度报表;
  3. 在对应时间类型下,切换对应查看的起始时间;或通过快捷按钮【-1小时】、【+1小时】、【当前】进行调整;
  4. 可通过选择机器,查看具体机器或指定部分机器的报表;默认为All(即该Appkey的所有机器),还包括单机器、机房、自定义等维度的机器选择;
  5. 可选择type类型进行某类数据查看;
  6. 报表界面具体展示相应Type的:调用总次数、失败次数、失败率、最大耗时、平均耗时、90线耗时、95线耗时、99线耗时、999线耗时以及QPS信息;
2.2 报表分钟级数据查看
  1. 点击报表的【[::show::]】可查看该Type的分钟级数据统计。
  1. 分钟级统计主要包括:耗时分布、分钟级调用量、分钟平均耗时、分钟成功率、分钟最大耗时、分钟失败数、调用量机器分布、错误量机器分布以及机器维护报表;如下图:
2.3 查看Type下二级分类数据
  1. 点击对应Type的名称,可查看该Type下的二级分类(Name)数据
  1. Transaction的埋点的Type和Name由业务自己定义,当打点了Cat.newTransaction(type, name)时,第一层分类是type,第二级分类是name;
  2. 第二级分类数据是统计相同type下的所有name数据,点开展示界面的数据均与第一级(type)一样的展示风格。
2.4 LogView数据查看

点击LogView下的【L】最新、【S】最慢可查看当前时间段最新或最慢的一条链路日志信息,如下图:

Event

1.主要功能:

监控一段代码运行次数:例如记录程序中一个事件记录了多少次,错误了多少次。Event报表的整体结构与Transaction报表几乎一样,只缺少响应时间的统计

应用启动后默认会打点的部分如下,具体打点信息可以参考基础架构组件Raptor打点统计,来源组件非cat的打点问题咨询,可以提TT向各组件部门咨询。

2.报表介绍

2.1 数据统计逻辑

第一级分类(Type)统计界面

Type统计界面展示了一个Event的第一层分类的视图(👉 Type统计),Event相对于Transaction少了运行时间统计。可以知道这段时间里面一个分类运行的次数,失败次数,失败率,采样logView,QPS。

第二级分类(Name)统计界面

第二级分类在Type统计界面中点击具体的Type进入,具体视图(👉 Name统计),展示的是相同type下所有的name数据,可以理解为某type下更细化的分类。

2.2 界面功能详细介绍

从上而下分析报表查询功能及Type介绍:

  1. 输入Appkey,查看项目数据:页面会默认打开上次查看的appkey数据,如果需要切换其他项目数据,输入Appkey,回车即可;
  2. 数据粒度时间筛选
    1. 点击切换报表时间类型:小时、天、周、月等维度查看对应时间跨度报表;
    2. 在对应时间类型下,切换对应查看的起始时间;或通过快捷按钮【-1小时】、【+1小时】、【当前】进行调整;
  3. 机器分组:默认已机房对机器进行分组,支持自定义分组;
  4. 可通过选择机器,查看具体机器或指定部分机器的报表;默认为All(即该Appkey的所有机器),还包括单机器、机房、自定义等维度的机器选择;
  5. 报表界面具体展示相应Type的:调用总次数、失败次数、失败率以及QPS信息;
2.3 报表分钟级数据查看

1.点击报表的【[::show::]】可查看该Type的分钟级数据统计

2.分钟级统计主要包括:分钟级调用量、分钟失败数、调用量机器分布、错误量机器分布以及机器维护报表;

2.4 查看Type下二级分类数据
  1. 点击对应Type的名称,可查看该Type下的二级分类(Name)数据:
  2. Event的埋点的Type和Name由业务自己定义,当打点了Cat.newEvent(type, name)时,第一层分类是type,第二级分类是name;
  3. 第二级分类数据是统计相同type下的所有name数据,点开展示界面的数据均与第一级(type)一样的展示风格
2.5 LogView数据查看

点击LogView下的【Logview】查看当前时间段最新的一条链路日志信息

Problem

主要功能

Problem记录整个项目在运行过程中出现的问题,包括一些异常、错误、访问较长的行为。Problem报表是由logview存在的特征整合而成,方便用户定位问题。

来源:

  1. 业务代码显示调用Cat.logError(e) API进行埋点,具体埋点说明可查看埋点文档。
  2. 中间件框架埋点,如SQL出错、RPC调用出错等。
  3. long-sql、long-cache等耗时较长系列。
  4. 与LOG集成,会捕获log日志中有异常堆栈的exception日志。cat-appender集成LOG

报表介绍

Problem报表展示项目相关异常信息及统计,选择【Problem】标签页,项目、时间、机器选择同Transaction报表,如下图:

  1. 选择Problem错误类型,All为展示所有错误,也可选择某一个错误类型type展示。
  2. 对于较长耗时,也认为是problem错误,cat已经接入公司绝大多数组件,现支持url、sql、service(远程服务)、call(远程调用)、cache(缓存接口调用)、mq(消息队列),可以选择不同的耗时阈值。
  3. 选择错误的时间展示维度,默认为小时维度;分钟级分布可以查看某一分钟的所有错误分布统计,如下图:
  1. 点击【[:::show:]】可查看分钟级错误分布以及机器维度分布;如下图:

对于机器分布,在时间轴上可选择开始、结束分钟数,可以看到这段时间内的机器错误分布。 同时,除了机器错误分布,还可展示机房错误分布,如yp表示月浦、dx表示大兴。业务方可通过机房错误分布check是否是机房影响。

Business

Business监控为您提供了自定义监控项和报警规则的功能;

您可以通过上报监控数据接口,将自己关心的业务指标上报至Raptor监控,并在Raptor监控上配置、添加监控图表和设置报警规则,对于故障指标发送报警通知,便于您及时处理故障,保障业务的正常运行。

基本概念

  • AppKey:应用的唯一key

  • BusinessKey:业务指标;business包括普通指标、复合指标两种类型的指标;

    • 普通指标:直接由业务上报数据生成的指标;
    • 复合指标:有多个“普通指标”通过表达式组合而成的指标;
  • Tag:business指标的维度,每个指标可以包括最多20个tag;

    举例:比如一个订单,可以包括status维度(成功、失败、待付款等等)、category维度(母婴、女装、男装等等)、source维度、chennel维度等等;

  • TagValue:Tag对应的值;business指标的每个维度Tag,可以包括多个具体的维度值;

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022 ZHU
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信