ARMS企业级场景被集成场景介绍

阿里云开发者
English
简介:ARMS企业级场景被集成场景介绍

 title=

通过本次最佳实践内容,您可以看到ARMS OpenAPI可以灵活的被集成到客户链路监控场景,并对其进行可视化图形展示监控信息。

1. 背景信息

应用实时监控服务ARMS(Application Real-Time Monitoring Service)是一款应用性能管理产品,能帮助你实现全栈式的性能监控和端到端的全链路追踪诊断,让应用运维更加高效。

本次最佳实践是基于调用ARMS OpenAPI的形式来实现客户应用场景链路监控的可视化图形展示,使用环境为专有云V3.10版本ASCM控制台,调用ARMS OpenAPI接口通过工具Postman进行测试,在第二章节详细介绍了测试环境及测试工具。第三章节通过一个查询所有应用ARMS OpenAPI接口描述调用过程,并且包含该接口需要请求传入的参数接口列表。最后一章节将对一个复杂应用场景,获取链路监控信息使用到ARMSOpenAPI接口,对每个接口列表字段、调用过程及返回结果详细介绍。

最佳实践价值

通过调用ARMS OpenAPI在应用场景的使用,直观给阅读者了解到ARMS产品的能力,及ARMS提供一套OpenAPI可以容易的集成到客户应用中,快速实现复杂的微服务链路监控能力,由ARMS监控服务能力涵盖范围能力比较广,包含浏览器、小程序、APP、分布式应用和容器环境,因此完整的监控能力,开发过程中不需要集成多开源组件的形式,使微服务程序监控功能开发简单,让应用运维变得容易。

2. 环境

在使用ARMS前您需要按照以下内容对当前的系统环境进行检查。

本次最佳实践基于专有云企业版V3.10.0版本ARMS。

说明:ARMS OpenAPI各个版本变化不大,使用方式保持一致,所以此文档也适用于公共云产品或专有云V3.7.0以上版本。专有云V3.10.0控制台称为ASCM,V3.10.0之前版本为Apsara Stack。

1.登录ASCM控制台。

2.将鼠标指向页面上方导航栏中的产品,单击企业级分布式应用服务EDAS

 title=

图1:ASCM

说明:由于ARMS监控应用数据,需要EDAS产品配合。本次测试先通过EDAS部署一个标准的Spring Boot应用,开通ARMS监控并得到监控数据。

 title=

图 2:EDAS控制台

 title=

图 3:ARMS控制台

3.测试工具检查。

本实践将会在专有云环境中创建win64虚拟机,然后在虚拟机中安装Postman进行测试。

 title=

图4:Postman测试

3. Open API使用

调用URL确认

OpenAPI接口均为REST服务,首先确认服务的URL。
每个专有云环境域名不同,会导致URL不同。请根据具体环境信息修改URL信息,前缀及端口不变。
[http://arms.console.example.com:8099/](http://arms.console.example.com:8099/)

名称接口
数据集API/dataset/GeneralQuery.json
关键应用性能指标/metric/Metric.json
报警信息
应用监控-应用拓扑/trace/Dependecies.json
事件集/eventset/EventList.json

调用示例-查看所有应用:

API说明

URL:[http://arms.console.example.com:8099/trace/Services.json](http://arms.console.example.com:8099/trace/Services.json)

参数列表

字段名称字段类型字段含义是否必选备注
\_userIdString用户id用户名称(如arms\_admin)

返回格式示例

{
    "code": 200,
    "data": {
        "details": [
            {               
                "pid": "string", //应用对应的pid
                "regionId": "string",                
                "serviceName": "string" //应用名称
            }
        ],
        "services":[ //应用名称列表
           "string",
           "string"
        ]
    },
    "success": true
}

Postman调用结果

参数设置:\_userId= 121827433423****

 title=

图5:Postman调用结果

4. 应用描述

从ARMS中取得应用拓扑数据、曲线图、应用监控指标数据,将通过大屏DataV展示。

 title=

图6:DataV展示

5. 查询接口调用次数

通过/metric/Metric.json接口获得应用相关性能数据,查询接口调用次数。

API说明

  • URL :[http://arms.console.example.com:8099/metric/Metric.json](http://arms.console.example.com:8099/metric/Metric.json)
  • 接口说明:
字段名称字段类型字段含义是否必选备注
startTimeLong查询数据的起始时间
endTimeLong查询数据的截止时间
intervalInSecInteger时间间隔建议填写
metricStringmetric字段详细填写参考参数填写示范
filtersList[String]过滤字段详细填写参考参数填写示范
measuresList[String]指标详细填写参考参数填写示范
dimensionsList[String]维度详细填写参考参数填写示范
orderByString排序字段
sortOrderString排序默认不排序(ASC或者DESC)
limitInteger返回条数
\_userIdString用户id用户名称(如arms\_admin)

调用示例

查询指定应用过往7天的接口调用次数

参数填写示范:

字段名称字段类型字段含义必选示例值值来源
startTimeLong查询数据的起始时间1578199319898系统时间
endTimeLong查询数据的截止时间1578804119898系统时间
intervalInSecInteger时间间隔默认3600秒,即1小时人工设置
metricStringmetric字段,查询的指标APPSTAT.DETAIL人工设置
filtersList[String]过滤字段,严格按照格式,否则调用出错[{key=pid,value=1218274334230390@db61f75c2f******},{key=regionId,value=cn-******-d01}]Pid、regionid来自于专有云环境
measuresList[String]指标[rt,count,error,errrate]API文档
dimensionsList[String]维度[pid,rpcType,rootIp]API文档
orderByString排序字段
sortOrderString排序默认不排序(ASC或者DESC)
limitInteger返回条数
\_userIdString用户id121827433423****

查询结果

参数设置:

 title=

图7:参数设置

结果说明:

  • 返回结果为JSON数据集。
  • 数据集会标示查询状态,成功返回200,如果失败会返回相应的错误码和错误原因。典型错误例如缺少必要参数、身份认证错误等(是因为filters参数没按格式要求写好)。
  • OpenAPI返回的结果集组织形式与查询数据的开始时间、结束时间、数据间隔时间有关。本次查询是查询了过往7天,数据间隔时间设置成了24小时,所以这个结果集里返回了7个”data”的集合。
  • 每个data里包括在“measure”和”dimension”里指定的查询,以本结果集为例,就包括:Count:0.0
    PID:
    rpcDesc: HTTP入口
    rpcType:0(HTTP调用)
  • 调整查询的开始、结束、间隔时间,会影响data数据的条数,调整接口查询参数会影响每条data里的数据。
  • 如果需要计算一些聚合值,比如过往7天总的HTTP调用次数,需要自行把多条data数据进行计算相加后得出结果。

6. 查询异常数量

通过/metric/Metric.json 接口获得应用相关性能数据,查询异常数量。

API说明

  • URL :[http://arms.console.example.com:8099/metric/Metric.json](http://arms.console.example.com:8099/metric/Metric.json)
  • 接口说明:
字段名称字段类型字段含义是否必选备注
startTimeLong查询数据的起始时间
endTimeLong查询数据的截止时间
intervalInSecInteger时间间隔建议填写
metricStringmetric字段详细填写参考下文
filtersList[String]过滤字段详细填写参考下文
measuresList[String]指标详细填写参考下文
dimensionsList[String]维度详细填写参考下文
orderByString排序字段
sortOrderString排序默认不排序(ASC或者DESC)
limitInteger返回条数
\_userIdString用户id用户名称(如arms\_admin)

调用示例

查询指定应用过往7天的接口调用次数。

参数填写示范:

字段名称字段类型字段含义必选示例值值来源
startTimeLong查询数据的起始时间1577980826988系统时间
endTimeLong查询数据的截止时间1578585626989系统时间
intervalInSecInteger时间间隔默认3600秒,即1小时人工设置
metricStringmetric字段,查询的指标APPSTAT.EXCEPTION人工设置
filtersList[String]过滤字段,严格按照格式,否则调用出错。[{key=pid,value=1218274334230390@db61f75c2f******},{key=regionId,value=cn-******-d01}]Pid、regionid来自于专有云环境
measuresList[String]指标[count]API 文档
dimensionsList[String]维度[pid,rpc,endpoint,exceptionInfo]API文档
orderByString排序字段
sortOrderString排序默认不排序(ASC或者DESC)
limitInteger返回条数
\_userIdString用户id1218274334230390

查询结果

参数设置:

 title=

图8:参数设置

查询结果:

 title=

图9:查询结果

结果说明:

  • 返回结果为JSON数据集。
  • 数据集会标示查询状态,成功返回200,如果失败会返回相应的错误码和错误原因。典型错误例如缺少必要参数、身份认证错误等(是因为filters参数没按格式要求写好)。
  • 本次查询未查到相关数据,所以exception数量为0。

7. 查询当前应用实例数量

通过/metric/Metric.json接口获得应用相关性能数据,查询当前应用实例数量。

API说明

  • URL :[http://arms.console.example.com:8099/metric/Metric.json](http://arms.console.example.com:8099/metric/Metric.json)
  • 接口说明:
字段名称字段类型字段含义是否必选备注
startTimeLong查询数据的起始时间
endTimeLong查询数据的截止时间
intervalInSecInteger时间间隔建议填写
metricStringmetric字段详细填写参考下文
filtersList[String]过滤字段详细填写参考下文
measuresList[String]指标详细填写参考下文
dimensionsList[String]维度详细填写参考下文
orderByString排序字段
sortOrderString排序默认不排序(ASC或者DESC)
limitInteger返回条数
\_userIdString用户id用户名称(如arms\_admin)

调用示例

查询指定应用过往7天的接口调用次数。

参数填写示范:

字段名称字段类型字段含义必选示例值值来源
startTimeLong查询数据的起始时间1577980826988系统时间
endTimeLong查询数据的截止时间1578585626989系统时间
intervalInSecInteger时间间隔默认3600秒,即1小时人工设置
metricStringmetric字段,查询的指标APPSTAT.DETAIL人工设置
filtersList[String]过滤字段,严格按照格式,否则调用出错。[{key=pid,value=1218274334230390@db61f75c2f28609},{key=regionId,value=******}]Pid、regionid来自于专有云环境
measuresList[String]指标[count]API 文档
dimensionsList[String]维度[pid,rootIp]API文档
orderByString排序字段
sortOrderString排序默认不排序(ASC或者DESC)
limitInteger返回条数
\_userIdString用户id12182743342******

查询结果

参数设置:

 title=

图10:参数设置

查询结果:

 title=

图11:查询结果

结果说明:

  • 返回结果为JSON数据集。
  • 数据集会标示查询状态,成功返回200,如果失败会返回相应的错误码和错误原因。典型错误例如缺少必要参数、身份认证错误等(是因为filters参数没按格式要求写好)。
  • Openapi返回的结果集组织形式与查询数据的开始时间、结束时间、数据间隔时间有关。本次查询是查询了过往7天,数据间隔时间设置成了24小时,所以这个结果集里返回了7个”data”的集合。
  • 每个data里包括在measuredimension里指定的查询,以本结果集为例,就包括:Count:0.0
    RootIP
  • 本次查询需求是要看此应用一共部署了多少实例,所以对结果中不同IP进行计算,即可以算出共有多少实例数量。另外一个方法是设置intervalInSec的值,让它等查询区间,这样出来的data集合的条数就是实例数量值,因为每个IP都会有条数据。

8. 查询当前应用拓扑图

通过/trace/Dependecies.json接口获得应用拓扑相关数据。

API说明

  • URL :[http://arms.console.example.com:8099/trace/Dependecies.json](http://arms.console.example.com:8099/trace/Dependecies.json)
  • 接口说明:
字段名称字段类型字段含义是否必选备注
startTimeLong查询数据的起始时间
endTimeLong查询数据的截止时间
\_userIdString用户id用户名称(如arms\_admin)
typeString查询类型查询全部关系使用ALL;单个应用的关系使用APP
pidString应用对应的pid当type=APP时必须填写

调用示例

查询指定应用过往7天的接口调用次数。

参数填写示范:

本测试1月12日进行,查询过去7天的数据。

字段名称字段类型字段含义必选示例值
startTimeLong查询数据的起始时间1578199319898 (1月5日)
endTimeLong查询数据的截止时间1578804119898 (1月12日)
\_userIdString用户id1218274334******
typeString查询类型APP
pidString应用对应的pid1218274334230390@db61f75c******

查询结果

参数设置:

 title=

图12:参数设置

查询结果:

{
    "code": 200,
    "data": {
        "link": [{
    "code": 200,
    "data": {
        "link": [
            {
                "callCount": 26997.0,
                "child": "Demo-Service",
                "childNodeId": 731107445,
                "childPid": "1218274334230390@db61f75c2******",
                "elapsed": 16.2328,
                "errorCount": 16.0,
                "parent": "USER",
                "parentNodeId": 812148234,
                "parentPid": "1218274334230390@db61f75c2******",
                "protocol": "HTTP"
            },
            {
                "callCount": 8.0,
                "child": "pdsa_lhh_rocketmq",
                "childNodeId": -1762019072,
                "childPid": "pdsa_lhh_rocketmq",
                "elapsed": 11190.5,
                "errorCount": 8.0,
                "parent": "Demo-Service",
                "parentNodeId": 731107445,
                "parentPid": "1218274334230390@db61f75c2******",
                "protocol": "AliWareMQ"
            }
        ],
        "nodes": [
            {
                "elapsed": 0.0,
                "errorCount": 0.0,
                "id": 812148234,
                "name": "USER",
                "pid": "1218274334230390@db61f75c2******",
                "requestCount": 0.0,
                "type": "USER"
            },
            {
                "elapsed": 0.0,
                "errorCount": 0.0,
                "id": 731107445,
                "name": "Demo-Service",
                "pid": "1218274334230390@db61f75c2******",
                "requestCount": 0.0,
                "type": "MQ_PRODUCER"
            },
            {
                "elapsed": 0.0,
                "errorCount": 0.0,
                "id": -1762019072,
                "name": "pdsa_****_rocketmq",
                "pid": "pdsa_****_rocketmq",
                "requestCount": 0.0,
                "type": "METAQ"
           }
       ]
    },
    "success": true
}

实际拓扑图效果如下:

 title=

图13:拓扑图

结果说明:

  • 返回结果为JSON数据集。
  • 数据集会标示查询状态,成功返回200,如果失败会返回相应的错误码和错误原因。典型错误例如缺少必要参数、身份认证错误等(是因为filters参数没按格式要求写好)。
  • 查询结果是一个点线图的节点数据和连接数据,需要使用者自行按照图表控件组装相应数据。

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阅读 317

阿里巴巴官方技术号,关于阿里巴巴经济体的技术创新、实战经验、技术人的成长心得均呈现于此。

2.8k 声望
6.1k 粉丝
0 条评论
你知道吗?

阿里巴巴官方技术号,关于阿里巴巴经济体的技术创新、实战经验、技术人的成长心得均呈现于此。

2.8k 声望
6.1k 粉丝
宣传栏