[关闭]
@rzzx 2017-08-02T07:43:51.000000Z 字数 7279 阅读 595

掌上听云客户端Browser API接口-警报图表调用逻辑

(因为chartID也属于逻辑的一部分,所以这里警报的chartID和其它所有的逻辑都在这里)

Browser

文档中主机名需要参考以下配置:

内网:http://192.168.5.73:8084/tingyun-api-browser
外网:



1.大概逻辑介绍

判断是应用分析模块还是关键页面、关键AJAX模块分别去请求不同的detailjsons

detailjsons的响应数据(下文有)

  1. {
  2. "browserAppId" : 7098,
  3. "keyPageId" : 0,
  4. "keyAjaxId" : 0,
  5. "eventId" : 210191,
  6. "targetTypeId" : 52,
  7. "eventTypeId" : 64,
  8. "hostId" : "123798",
  9. "uriId" : "0",
  10. "regionId" : "0",
  11. "carrierId" : "0",
  12. "endTime" : "2017-08-01 19:20:03",
  13. "timePeriod" : 1831,
  14. "chartType" : 0,
  15. "chartId" : "browser-alarm-page-performance",
  16. "chartTitle" : "browser.chart.alarm.serverTime",
  17. "chartTip" : "browser.chart.alarm.serverTime.tip",
  18. "relatedListType" : 0,
  19. "chartBaseonId" : 404,
  20. "groupType" : 4
  21. }

根据返回的各种参数来判断请求图表的参数和url

其中有两个图表,这里分成上下图表,上面的图表的url是动态改变的,下面的图表一般是吞吐率曲线图,写死的,但是请求的参数都会改变

扩展:
targetType >= 51 && targetType <= 54 => 应用分析
targetType == 55 =>关键页面
targetType == 56 => 关键AJAX

2. 代码实现:

  1. detailjsons的响应数据(下文有)
  2. /*成功响应*/
  3. {
  4. "status":200,
  5. "data": {
  6. "browserAppId" : 7098,
  7. "keyPageId" : 0,
  8. "keyAjaxId" : 0,
  9. "eventId" : 210191,
  10. "targetTypeId" : 52,
  11. "eventTypeId" : 64,
  12. "hostId" : "123798",
  13. "uriId" : "0",
  14. "regionId" : "0",
  15. "carrierId" : "0",
  16. "endTime" : "2017-08-01 19:20:03",
  17. "timePeriod" : 1831,
  18. "chartType" : 0,
  19. "chartId" : "browser-alarm-page-performance",
  20. "chartTitle" : "browser.chart.alarm.serverTime",
  21. "chartTip" : "browser.chart.alarm.serverTime.tip",
  22. "relatedListType" : 0,
  23. "chartBaseonId" : 404,
  24. "groupType" : 4
  25. }
  26. }
  1. if ( targetType > 50 ) {
  2. if ( targetType < 55 ) { //应用分析
  3. 请求detailjsons,返回的对象设为obj
  4. if(obj.groupType == 0){
  5. upChartParams = {
  6. baseonId : obj.chartBaseonId
  7. };
  8. }else if(obj.groupType == 1){
  9. upChartParams = {
  10. baseonId : obj.chartBaseonId,
  11. regionId : obj.regionId
  12. };
  13. downChartParams = {
  14. regionId : obj.regionId
  15. };
  16. }else if(obj.groupType == 2){
  17. upChartParams = {
  18. baseonId : obj.chartBaseonId,
  19. carrierId : obj.carrierId
  20. };
  21. downChartParams = {
  22. carrierId : obj.carrierId
  23. };
  24. }else if(obj.groupType == 3){
  25. upChartParams = {
  26. baseonId : obj.chartBaseonId,
  27. carrierId : obj.carrierId,
  28. regionId : obj.regionId
  29. };
  30. downChartParams = {
  31. regionId : obj.regionId,
  32. carrierId : obj.carrierId
  33. };
  34. }else if(obj.groupType == 4){
  35. upChartParams = {
  36. baseonId : obj.chartBaseonId,
  37. host_id : obj.hostId
  38. };
  39. downChartParams = {
  40. host_id : obj.hostId
  41. };
  42. }else if(obj.groupType == 5){
  43. upChartParams = {
  44. baseonId : obj.chartBaseonId,
  45. host_id : obj.hostId,
  46. uri_id : obj.uriId
  47. };
  48. downChartParams = {
  49. host_id : obj.hostId,
  50. uri_id : obj.uriId
  51. };
  52. }
  53. if(obj.chartType == 1){
  54. apdex图表
  55. }else {
  56. 不是apdex图表
  57. }
  58. if(obj.targetTypeId == 54){
  59. 下面chartId = browser-alarm-ajax-throughput;
  60. }else {
  61. 下面chartId = browser-alarm-throughput;
  62. }
  63. 上面图表的请求: 请求参数:browserAppId,upChartParams,timePeriod,endTime,timeType
  64. 请求的chartIdobj.chartId
  65. 下面图表的请求: 请求参数:browserAppId,downChartParams,timePeriod,endTime,timeType
  66. 请求的chartId:下面chartId
  67. } else if ( targetType == 55 ) { //关键页面
  68. 请求detailjsons,返回的对象设为obj
  69. if(obj.groupType == 0){
  70. upChartParams = {
  71. baseonId : obj.chartBaseonId
  72. };
  73. }else if(obj.groupType == 1){
  74. upChartParams = {
  75. baseonId : obj.chartBaseonId,
  76. regionId : obj.regionId
  77. };
  78. downChartParams = {
  79. regionId : obj.regionId
  80. };
  81. }else if(obj.groupType == 2){
  82. upChartParams = {
  83. baseonId : obj.chartBaseonId,
  84. carrierId : obj.carrierId
  85. };
  86. downChartParams = {
  87. carrierId : obj.carrierId
  88. };
  89. }else if(obj.groupType == 3){
  90. upChartParams = {
  91. baseonId : obj.chartBaseonId,
  92. regionId : obj.regionId,
  93. carrierId : obj.carrierId
  94. };
  95. downChartParams = {
  96. carrierId : obj.carrierId,
  97. regionId : obj.regionId
  98. };
  99. }
  100. if(obj.chartType == 1){
  101. apdex图表
  102. }else {
  103. 不是apdex图表
  104. }
  105. 上面图表的请求: 请求参数:browserAppId,browserKeyPageId,upChartParams,,timePeriod,endTime,timeType
  106. 请求的chartIdobj.chartId
  107. 下面图表的请求: 请求参数:browserAppId,browserKeyPageId,downChartParams,timePeriod,endTime,timeType
  108. 请求的chartIdbrowser-alarm-throughput
  109. } else if ( targetType == 56 ) { //关键AJAX
  110. 请求detailjsons,返回的对象设为obj
  111. if(obj.groupType == 0){
  112. upChartParams = {
  113. baseonId : obj.chartBaseonId
  114. };
  115. }else if(obj.groupType == 1){
  116. upChartParams = {
  117. baseonId : obj.chartBaseonId,
  118. regionId : obj.regionId
  119. };
  120. downChartParams = {
  121. regionId : obj.regionId
  122. };
  123. }else if(obj.groupType == 2){
  124. upChartParams = {
  125. baseonId : obj.chartBaseonId,
  126. carrierId : obj.carrierId
  127. };
  128. downChartParams = {
  129. carrierId : obj.carrierId
  130. };
  131. }else if(obj.groupType == 3){
  132. upChartParams = {
  133. baseonId : obj.chartBaseonId,
  134. regionId : obj.regionId,
  135. carrierId : obj.carrierId
  136. };
  137. downChartParams = {
  138. carrierId : obj.carrierId,
  139. regionId : obj.regionId
  140. };
  141. }
  142. if(obj.chartType == 1){
  143. apdex图表
  144. }else {
  145. 不是apdex图表
  146. }
  147. 上面图表的请求: 请求参数:browserAppId,browserKeyAjaxId,upChartParams,,timePeriod,endTime,timeType
  148. 请求的chartIdobj.chartId
  149. 下面图表的请求: 请求参数:browserAppId,browserKeyAjaxId,downChartParams,timePeriod,endTime,timeType
  150. 请求的chartIdbrowser-alarm-throughput
  151. }
  152. }

3.detailjsons(xiesn2的账号)

应用分析URL

/browser/application/{browserAppId}/alarm/detailjsons

关键页面URL

/browser/keypage/{uriId}/alarm/detailjsons

关键AJAXURL

/browser/keyajax/{uriId}/alarm/detailjsons

应用分析示例URL

http://192.168.5.73:8084/tingyun-api-browser/browser/application/7098/alarm/detailjsons?_ty_auth_token=84udvgrxpb389wf7q2rcgdcorm2krgud&browserAppId=7098&targetTypeId=52&eventId=210191&eventTypeId=64&regionId=0&carrierId=0&hostId=123798&uriId=0&beginTimeMills=1501476540000&endTimeMills=1501586403000

关键页面示例URL

http://192.168.5.73:8084/tingyun-api-browse/browser/keypage/479/alarm/detailjsons?_ty_auth_token=84udvgrxpb389wf7q2rcgdcorm2krgud&browserAppId=7135&targetTypeId=55&eventId=210484&eventTypeId=45&regionId=0&carrierId=0&hostId=0&uriId=479&beginTimeMills=1501570560000&endTimeMills=1501641747370

关键AJAX示例URL

http://192.168.5.73:8084/tingyun-api-browser/browser/keyajax/148/alarm/detailjsons?_ty_auth_token=84udvgrxpb389wf7q2rcgdcorm2krgud&browserAppId=7135&targetTypeId=56&eventId=210448&eventTypeId=65&regionId=0&carrierId=0&hostId=0&uriId=148&beginTimeMills=1501569840000&endTimeMills=1501571315000

警报列表的单个json

  1. {
  2. agreementId = 1760;
  3. alarmSettingsId = 2716;
  4. beginTime = 1500973260000;
  5. beginTimeMills = 1500972660000; //需要传
  6. carrierId = 0; //需要传
  7. carrierName = "<null>";
  8. cityId = 0;//需要传(regionId)
  9. cityName = "<null>";
  10. cityTwoId = "<null>";
  11. connectTypeId = "<null>";
  12. cost = 66480000;
  13. count = 20;
  14. ctime = 1500974226000;
  15. endTime = 1501039740000;
  16. endTimeMills = 1501040340000; //需要传
  17. endTimePeriod = "2017-07-26 11:39:00";
  18. eventDetailUrl = "/7281/alarmDetail/209001?targetType=51";
  19. eventLevel = 2;
  20. eventTraceId = 1107402;
  21. eventType = 1;
  22. externalProtocolType = 0;
  23. historyState = "<null>";
  24. hostId = 123801;//需要传
  25. icon = c;
  26. id = 209001;//需要传(eventId)
  27. instanceId = 0;
  28. instanceName = "<null>";
  29. message = "<null>";
  30. metricId = 63;//需要传(eventTypeId)
  31. minuteCost = 1108;
  32. name = "test_\U7b2c\U4e09\U65b9\U63a8\U9001_b";
  33. notify = "<null>";
  34. readStatus = 0;
  35. relatedEventId = 63;
  36. relatedEventType = 63;
  37. releaseThreshold = "<null>";
  38. releaseValue = "<null>";
  39. sampleGroup = 1;
  40. status = 0;
  41. targetId = 7281;
  42. targetName = "test_\U7b2c\U4e09\U65b9\U63a8\U9001_b";
  43. targetParentId = 7281;
  44. targetType = 51;//需要传(targetTypeId)
  45. threshold = 4;
  46. thresholdType = "<null>";
  47. timeCost = "<null>";
  48. timePeriod = 1128;
  49. unit = "%";
  50. uriId = 19531322; //需要传
  51. url = "/7281/overview";
  52. value = 5;
  53. }

请求参数

参数 必选 类型 说明
_ty_auth_token true string token从authlocal.tingyun.com:10886/auth/api/auth/login获取
browserAppId true int browserAppID
targetTypeId true int targetType
eventId true int id
eventTypeId true int metricId
regionId true int cityId
carrierId true int carrierId
hostId true int hostId
uriId true int uriId
beginTimeMills true int beginTimeMills
endTimeMills true int endTimeMills

响应数据(三个的响应格式是一样的)

  1. /*成功响应*/
  2. {
  3. "status":200,
  4. "data": {
  5. "browserAppId" : 7098,
  6. "keyPageId" : 0,
  7. "keyAjaxId" : 0,
  8. "eventId" : 210191,
  9. "targetTypeId" : 52,
  10. "eventTypeId" : 64,
  11. "hostId" : "123798",
  12. "uriId" : "0",
  13. "regionId" : "0",
  14. "carrierId" : "0",
  15. "endTime" : "2017-08-01 19:20:03",
  16. "timePeriod" : 1831,
  17. "chartType" : 0,
  18. "chartId" : "browser-alarm-page-performance",
  19. "chartTitle" : "页面渲染", //chart标题
  20. "chartTip" : "browser.chart.alarm.serverTime.tip",
  21. "relatedListType" : 0,
  22. "chartBaseonId" : 404,
  23. "groupType" : 4
  24. }
  25. }
  26. /*错误响应*/
  27. {
  28. "status":-1,
  29. "data":"_ty_auth_token is NULL"
  30. }
  31. /*错误响应*/
  32. {
  33. "status":-500,
  34. "message":"system error."
  35. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注