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

通过本次最佳实践内容,您可以看到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

图1:ASCM

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

图 2:EDAS控制台

图 3:ARMS控制台

3.测试工具检查。

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

图4:Postman测试

3. Open API使用

调用URL确认

OpenAPI接口均为REST服务,首先确认服务的URL。
每个专有云环境域名不同,会导致URL不同。请根据具体环境信息修改URL信息,前缀及端口不变。
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

参数列表

字段名称 字段类型 字段含义 是否必选 备注
_userId String 用户id 用户名称(如arms_admin)

返回格式示例

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

Postman调用结果

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

图5:Postman调用结果

4. 应用描述

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

图6:DataV展示

5. 查询接口调用次数

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

API说明

字段名称 字段类型 字段含义 是否必选 备注
startTime Long 查询数据的起始时间
endTime Long 查询数据的截止时间
intervalInSec Integer 时间间隔 建议填写
metric String metric字段 详细填写参考参数填写示范
filters List[String] 过滤字段 详细填写参考参数填写示范
measures List[String] 指标 详细填写参考参数填写示范
dimensions List[String] 维度 详细填写参考参数填写示范
orderBy String 排序字段
sortOrder String 排序 默认不排序(ASC或者DESC)
limit Integer 返回条数
_userId String 用户id 用户名称(如arms_admin)

调用示例

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

参数填写示范:

字段名称 字段类型 字段含义 必选 示例值 值来源
startTime Long 查询数据的起始时间 1578199319898 系统时间
endTime Long 查询数据的截止时间 1578804119898 系统时间
intervalInSec Integer 时间间隔 默认3600秒,即1小时 人工设置
metric String metric字段,查询的指标 APPSTAT.DETAIL 人工设置
filters List[String] 过滤字段,严格按照格式,否则调用出错 [{key=pid,value=1218274334230390@db61f75c2f******},{key=regionId,value=cn-******-d01}] Pid、regionid来自于专有云环境
measures List[String] 指标 [rt,count,error,errrate] API文档
dimensions List[String] 维度 [pid,rpcType,rootIp] API文档
orderBy String 排序字段
sortOrder String 排序 默认不排序(ASC或者DESC)
limit Integer 返回条数
_userId String 用户id 121827433423****

查询结果

参数设置:

图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说明

字段名称 字段类型 字段含义 是否必选 备注
startTime Long 查询数据的起始时间
endTime Long 查询数据的截止时间
intervalInSec Integer 时间间隔 建议填写
metric String metric字段 详细填写参考下文
filters List[String] 过滤字段 详细填写参考下文
measures List[String] 指标 详细填写参考下文
dimensions List[String] 维度 详细填写参考下文
orderBy String 排序字段
sortOrder String 排序 默认不排序(ASC或者DESC)
limit Integer 返回条数
_userId String 用户id 用户名称(如arms_admin)

调用示例

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

参数填写示范:

字段名称 字段类型 字段含义 必选 示例值 值来源
startTime Long 查询数据的起始时间 1577980826988 系统时间
endTime Long 查询数据的截止时间 1578585626989 系统时间
intervalInSec Integer 时间间隔 默认3600秒,即1小时 人工设置
metric String metric字段,查询的指标 APPSTAT.EXCEPTION 人工设置
filters List[String] 过滤字段,严格按照格式,否则调用出错。 [{key=pid,value=1218274334230390@db61f75c2f******},{key=regionId,value=cn-******-d01}] Pid、regionid来自于专有云环境
measures List[String] 指标 [count] API 文档
dimensions List[String] 维度 [pid,rpc,endpoint,exceptionInfo] API文档
orderBy String 排序字段
sortOrder String 排序 默认不排序(ASC或者DESC)
limit Integer 返回条数
_userId String 用户id 1218274334230390

查询结果

参数设置:

图8:参数设置

查询结果:

图9:查询结果

结果说明:

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

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

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

API说明

字段名称 字段类型 字段含义 是否必选 备注
startTime Long 查询数据的起始时间
endTime Long 查询数据的截止时间
intervalInSec Integer 时间间隔 建议填写
metric String metric字段 详细填写参考下文
filters List[String] 过滤字段 详细填写参考下文
measures List[String] 指标 详细填写参考下文
dimensions List[String] 维度 详细填写参考下文
orderBy String 排序字段
sortOrder String 排序 默认不排序(ASC或者DESC)
limit Integer 返回条数
_userId String 用户id 用户名称(如arms_admin)

调用示例

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

参数填写示范:

字段名称 字段类型 字段含义 必选 示例值 值来源
startTime Long 查询数据的起始时间 1577980826988 系统时间
endTime Long 查询数据的截止时间 1578585626989 系统时间
intervalInSec Integer 时间间隔 默认3600秒,即1小时 人工设置
metric String metric字段,查询的指标 APPSTAT.DETAIL 人工设置
filters List[String] 过滤字段,严格按照格式,否则调用出错。 [{key=pid,value=1218274334230390@db61f75c2f28609},{key=regionId,value=******}] Pid、regionid来自于专有云环境
measures List[String] 指标 [count] API 文档
dimensions List[String] 维度 [pid,rootIp] API文档
orderBy String 排序字段
sortOrder String 排序 默认不排序(ASC或者DESC)
limit Integer 返回条数
_userId String 用户id 12182743342******

查询结果

参数设置:

图10:参数设置

查询结果:

图11:查询结果

结果说明:

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

8. 查询当前应用拓扑图

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

API说明

字段名称 字段类型 字段含义 是否必选 备注
startTime Long 查询数据的起始时间
endTime Long 查询数据的截止时间
_userId String 用户id 用户名称(如arms_admin)
type String 查询类型 查询全部关系使用ALL;单个应用的关系使用APP
pid String 应用对应的pid 当type=APP时必须填写

调用示例

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

参数填写示范:

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

字段名称 字段类型 字段含义 必选 示例值
startTime Long 查询数据的起始时间 1578199319898 (1月5日)
endTime Long 查询数据的截止时间 1578804119898 (1月12日)
_userId String 用户id 1218274334******
type String 查询类型 APP
pid String 应用对应的pid 1218274334230390@db61f75c******

查询结果

参数设置:

图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
}

实际拓扑图效果如下:

图13:拓扑图

结果说明:

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

原文链接

本文为阿里云原创内容,未经允许不得转载。

ARMS企业级场景被集成场景介绍的更多相关文章

  1. Spring Data JPA系列3:JPA项目中核心场景与进阶用法介绍

    大家好,又见面了. 到这里呢,已经是本SpringData JPA系列文档的第三篇了,先来回顾下前面两篇: 在第1篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring ...

  2. Cocos2d-x场景变化相关功能介绍

    现场由导演级交换机Director实现.之间的相关的功能,如下面: runWithScene(Scene* scene).该函数能够执行场景.仅仅能在启动第一个场景时候调用该函数.假设已经有一个场景执 ...

  3. cocos2dx 3.1从零学习(二)——菜单、场景切换、场景传值

    回想一下上一篇的内容,我们已经学会了创建一个新的场景scene,加入sprite和label到层中.掌握了定时事件schedule. 我们能够顺利的写出打飞机的主场景框架. 上一篇的内容我练习了七个新 ...

  4. Learning Cocos2d-x for WP8(6)——场景切换和场景过渡效果

    原文:Learning Cocos2d-x for WP8(6)--场景切换和场景过渡效果 C#(wp7)兄弟篇 Learning Cocos2d-x for XNA(6)——场景切换和场景过渡效果 ...

  5. loadrunner 场景设计-目标场景设计

    场景设计-目标场景设计 by:授客 QQ:1033553122 A.   概述 Goals Types for Goal-Oriented Scenarios 在以目标为向导的场景中,定义你想实现的测 ...

  6. loadrunner 场景设计-手工场景方案(Schedule)设计

    场景设计-手工场景方案(Schedule)设计 by:授客 QQ:1033553122 A.   定义方案schedule 在 Scenario Schedule面板中,选择一个方案schedule, ...

  7. loadrunner 场景设计-手工场景设计

    场景设计-手工场景设计 by:授客 QQ:1033553122 概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主要是 ...

  8. 基于SketchUp和Unity3D的虚拟场景漫游和场景互动

    这是上学期的一次课程作业,难度不高但是也一并记录下来,偷懒地拿课程报告改改发上来. 课程要求:使用sketchUp建模,在Unity3D中实现场景漫游和场景互动. 知识点:建模.官方第一人称控制器.网 ...

  9. 搭建LoadRunner中的场景(一) 创建场景

    一.创建场景 1. 使用场景创建设置对话框 场景分类: 1. 人工场景:相比面向目标场景,人工场景在实际工作中的应用更为广泛. 2. 面向目标场景:预先定义了一个测试目标,LoadRunner将根据这 ...

  10. 企业级容器管理平台 Rancher 介绍入门及如何备份数据

    企业级容器管理平台 Rancher 介绍入门及如何备份数据 是什么 Rancher 是一个为 DevOps 团队提供的完整的 Kubernetes 与容器管理解决方案的开源的企业级容器管理平台.它解决 ...

随机推荐

  1. 使用Wireshark在RTP流中提取中264数据(针对udp)(转)

    调试rtsp收发流时,经常会需要抓包以确认是网络问题还是程序问题还是其它问题.通过tcpdump或者wireshark抓到的包通常是rtp流,保存为.pcap格式文件后中,可通过wireshark进行 ...

  2. 实时云渲染:流式传输 VR 和 AR 内容

    想象一下无需专用的物理计算机,甚至无需实物连接,就能获得高质量的 AR/VR 体验是种什么样的体验? 过去,与 VR 交互需要专用的高端工作站,并且根据头显.壁挂式传感器和专用的物理空间.VR 中的复 ...

  3. 记录--post为什么会发送两次请求?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在前段时间的一次面试中,被问到了一个如标题这样的问题.要想好好地去回答这个问题,这里牵扯到的知识点也是比较多的. 那么接下来这篇文章我们就 ...

  4. rnacos 版本更新为 v0.1.4

    rnacos是一个用 rust重新实现的nacos. 周一发布 rnacos 后,有收到部分对2.0版本兼容问题的反馈. 主要是nacos2.0版本的注册心跳与1.0不同,rnacos之前没对2.0版 ...

  5. KingbaseES V8R6 集群环境备库不结束旧事务快照将影响主库的vacuum操作

    前言 昨天同事遇到了一个有关vacuum的典型问题. V8R6读写分离集群环境,一主多备. 版本:kingbaseesv008r006c004 问题现象: 主库日常巡检发现日志大量记录: waring ...

  6. #轮廓线dp,博弈论#洛谷 4363 [九省联考 2018] 一双木棋 chess

    题目传送门 分析 菲菲想让答案尽量大,牛牛想让答案尽量小. 很天真的一种想法就是设 \(dp[i][j]\) 表示现在选择 \((i,j)\) 的答案. 但是这样有一个弊端就是并不知道其它位置怎么选择 ...

  7. 两个专栏帮你搞定【图像拼接(image stitching)】

    [图像拼接论文精读]专栏:图像拼接论文精读 [图像拼接源码精读]专栏:图像拼接论文源码精读 前言 图像拼接(image stitching)是计算机视觉中的高级图像处理手段,是一个小众方向,研究的人很 ...

  8. OpenHarmony创新赛|赋能直播第三期

     开放原子开源大赛OpenHarmony创新赛赋能直播间持续邀请众多技术专家一起分享应用开发技术知识,本期推出OpenHarmony应用开发之音视频播放器和三方库的使用和方法,助力开发者掌握多媒体应用 ...

  9. Hive 查看表/分区更新时间

    1.查看分区 hive> show partitions table_name; 2.查看分区更新时间 获取hdfs路径 hive> desc formatted table_name; ...

  10. 报表如何批量导出成 excel 文件

    需求说明 报表展现后可以通过工具栏中的导出按钮将当前展现的报表导出成 excel 文件,但是在实际使用中通常会要求报表不需要展现,直接通过一些操作将报表导出成 excel 文件,并且往往会要求批量导出 ...