通过本次最佳实践内容 您可以看到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说明URL 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****
图5 Postman调用结果
4. 应用描述从ARMS中取得应用拓扑数据、曲线图、应用监控指标数据 将通过大屏DataV展示。
图6 DataV展示
5. 查询接口调用次数通过/metric/Metric.json接口获得应用相关性能数据 查询接口调用次数。
API说明URL http://arms.console.example.com:8099/metric/Metric.json查询指定应用过往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用户id是121827433423****无查询结果参数设置
图7 参数设置
结果说明
返回结果为JSON数据集。数据集会标示查询状态 成功返回200 如果失败会返回相应的错误码和错误原因。典型错误例如缺少必要参数、身份认证错误等 是因为filters参数没按格式要求写好 。OpenAPI返回的结果集组织形式与查询数据的开始时间、结束时间、数据间隔时间有关。本次查询是查询了过往7天 数据间隔时间设置成了24小时 所以这个结果集里返回了7个”data”的集合。每个data里包括在“measure”和”dimension”里指定的查询 以本结果集为例 就包括 Count:0.0通过/metric/Metric.json 接口获得应用相关性能数据 查询异常数量。
API说明URL http://arms.console.example.com:8099/metric/Metric.json查询指定应用过往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用户id是1218274334230390无查询结果参数设置
图8 参数设置
查询结果
图9 查询结果
结果说明
返回结果为JSON数据集。数据集会标示查询状态 成功返回200 如果失败会返回相应的错误码和错误原因。典型错误例如缺少必要参数、身份认证错误等 是因为filters参数没按格式要求写好 。本次查询未查到相关数据 所以exception数量为0。7. 查询当前应用实例数量通过/metric/Metric.json接口获得应用相关性能数据 查询当前应用实例数量。
API说明URL http://arms.console.example.com:8099/metric/Metric.json查询指定应用过往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用户id是12182743342******无查询结果参数设置
图10 参数设置
查询结果
图11 查询结果
结果说明
返回结果为JSON数据集。数据集会标示查询状态 成功返回200 如果失败会返回相应的错误码和错误原因。典型错误例如缺少必要参数、身份认证错误等 是因为filters参数没按格式要求写好 。Openapi返回的结果集组织形式与查询数据的开始时间、结束时间、数据间隔时间有关。本次查询是查询了过往7天 数据间隔时间设置成了24小时 所以这个结果集里返回了7个”data”的集合。每个data里包括在measure和dimension里指定的查询 以本结果集为例 就包括 Count:0.0通过/trace/Dependecies.json接口获得应用拓扑相关数据。
API说明URL http://arms.console.example.com:8099/trace/Dependecies.json查询指定应用过往7天的接口调用次数。
参数填写示范
本测试1月12日进行 查询过去7天的数据。
字段名称字段类型字段含义必选示例值startTimeLong查询数据的起始时间是1578199319898 1月5日 endTimeLong查询数据的截止时间是1578804119898 1月12日 _userIdString用户id是1218274334******typeString查询类型是APPpidString应用对应的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参数没按格式要求写好 。查询结果是一个点线图的节点数据和连接数据 需要使用者自行按照图表控件组装相应数据。我们是阿里云智能全球技术服务-SRE团队 我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队 提供专业、体系化的SRE服务 帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统 提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云 让客户云上业务运行更加稳定可靠的技术 您可用钉钉扫描下方二维码 加入阿里云SRE技术学院钉钉圈子 和更多云上人交流关于云平台的那些事。
【51CTO.com快译】 数据可视化工具不断发展,提供更强大的功能,同时改善可访问...
信息化2.0时代提出开展智慧教育创新发展行动。2019年2月,中共中央、国务院印发...
Docker生成新镜像版本的两种方式 There are two ways Docker can generate new m...
本文整理自直播《Hologres 数据导入/导出实践-王华峰(继儒)》 视频链接: https:/...
2021年3月24日,主题为《数据的世界,世界的数据》的星环科技2021春季新品发布会...
在Python语言中有如下3种方法: 成员方法 类方法(classmethod) 静态方法(staticm...
从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭...
摘要 元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者...
建站 什么 虚拟主机 够用?这要看搭建的是什么类型的网站。比如个人博客类型的网...
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...