雲計算

ARMS企業級場景被集成場景介紹

56f5ded39bcc4efc94ff1398a9db9782.png

通過本次最佳實踐內容,您可以看到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.jpg

圖1:ASCM

說明:由於ARMS監控應用數據,需要EDAS產品配合。本次測試先通過EDAS部署一個標準的Spring Boot應用,開通ARMS監控並得到監控數據。

2.jpg

圖 2:EDAS控制檯

3.jpg

圖 3:ARMS控制檯

3.測試工具檢查。

本實踐將會在專有云環境中創建win64虛擬機,然後在虛擬機中安裝Postman進行測試。

4.jpg

圖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.jpg

圖5:Postman調用結果

4. 應用描述

從ARMS中取得應用拓撲數據、曲線圖、應用監控指標數據,將通過大屏DataV展示。

6.jpg

圖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.jpg

圖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.jpg

圖8:參數設置

查詢結果:

9.jpg

圖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.jpg

圖10:參數設置

查詢結果:

11.jpg

圖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.jpg

圖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.jpg

圖13:拓撲圖

結果說明:

  • 返回結果為JSON數據集。
  • 數據集會標示查詢狀態,成功返回200,如果失敗會返回相應的錯誤碼和錯誤原因。典型錯誤例如缺少必要參數、身份認證錯誤等(是因為filters參數沒按格式要求寫好)。
  • 查詢結果是一個點線圖的節點數據和連接數據,需要使用者自行按照圖表控件組裝相應數據。

我們是阿里雲智能全球技術服務-SRE團隊,我們致力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基於雲構建更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運行更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿里雲SRE技術學院釘釘圈子,和更多雲上人交流關於雲平臺的那些事。

17e30315-0e5f-4138-be8b-7c3791748a1e1.jpg

Leave a Reply

Your email address will not be published. Required fields are marked *