Sentinel(十二)之实时监控
轉載自??實時監控
Sentinel 提供對所有資源的實時監控。如果需要實時監控,客戶端需引入以下依賴(以 Maven 為例):
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>x.y.z</version> </dependency>引入上述依賴后,客戶端便會主動連接 Sentinel 控制臺。通過?Sentinel 控制臺?即可查看客戶端的實時監控。
通常您并不需要關心以下 API,但是如果您對開發控制臺感興趣,以下為監控 API 的文檔。
簇點監控
獲取簇點列表
相關 API:?GET /clusterNode
當應用啟動之后,可以運行下列命令,獲得當前所有簇點(ClusterNode)的列表(JSON 格式):
curl http://localhost:8719/clusterNode結果示例:
[{"avgRt":0.0, //平均響應時間"blockRequest":0, //每分鐘攔截的請求個數"blockedQps":0.0, //每秒攔截個數"curThreadNum":0, //并發個數"passQps":1.0, // 每秒成功通過請求"passReqQps":1.0, //每秒到來的請求"resourceName":"/registry/machine", 資源名稱"timeStamp":1529905824134, //時間戳"totalQps":1.0, // 每分鐘請求數"totalRequest":193}, .... ]查詢某個簇點的詳細信息
可以用下面命令模糊查詢該簇點的具體信息,其中?id?對應 resource name,支持模糊查詢:
curl http://localhost:8719/cnode?id=xxxx結果示例:
idx id thread pass blocked success total aRt 1m-pass 1m-block 1m-all exeption 6 /app/aliswitch2/machines.json 0 0 0 0 0 0 0 0 0 0 7 /app/sentinel-admin/machines.json 0 1 0 1 1 6 0 0 0 0 8 /identity/machine.json 0 0 0 0 0 0 0 0 0 0 9 /registry/machine 0 2 0 2 2 1 192 0 192 0 10 /app/views/machine.html 0 1 0 1 1 2 0 0 0 0簇點調用者統計信息
可以用下列命令查詢該簇點的調用者統計信息:
curl http://localhost:8719/origin?id=xxxx結果示例:
id: nodeA idx origin threadNum passedQps blockedQps totalQps aRt 1m-passed 1m-blocked 1m-total 1 caller1 0 0 0 0 0 0 0 0 2 caller2 0 0 0 0 0 0 0 0其中的 origin 由?ContextUtil.enter(resourceName,origin)?方法中的?origin?指定。
鏈路監控
我們可以通過命令?curl http://localhost:8719/tree?來查詢鏈路入口的鏈路樹形結構:
EntranceNode: machine-root(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0) -EntranceNode1: Entrance1(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0) --nodeA(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0) -EntranceNode2: Entrance1(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0) --nodeA(t:0 pq:1 bq:0 tq:1 rt:0 prq:1 1mp:0 1mb:0 1mt:0)t:threadNum pq:passQps bq:blockedQps tq:totalQps rt:averageRt prq: passRequestQps 1mp:1m-passed 1mb:1m-blocked 1mt:1m-total歷史資源數據
資源的秒級日志
所有資源的秒級監控日志(metric 日志)在?${home}/logs/csp/${appName}-metrics.log.${date}.xx。例如,該日志的名字可能為?my-service-metrics.log.2018-06-22.1。日志示例:
1529573107000|2018-06-21 17:25:07|sayHello(java.lang.String,long)|10|3601|10|0|2|0|0|1格式說明:
| 1 | 1529573107000 | 時間戳 |
| 2 | 2018-06-21 17:25:07 | 日期 |
| 3 | sayHello(java.lang.String,long) | 資源名稱 |
| 4 | 10 | 每秒通過的資源請求個數?(pass QPS) |
| 5 | 3601 | 每秒資源被攔截的個數?(block QPS) |
| 6 | 10 | 每秒完成調用的資源個數 (complete QPS),包括正常結束和異常結束的情況 |
| 7 | 0 | 每秒資源的異常個數 (error QPS) |
| 8 | 2 | 資源平均響應時間(ms) |
| 9 | 0 | 該秒占用未來請求的數目(since 1.5.0) |
| 10 | 0 | 預留用 |
| 11 | 1 | 資源分類(since 1.7.0) |
被攔截的秒級日志
同樣的,每秒的攔截日志(block 日志)也會出現在?<用戶目錄>/logs/csp/sentinel-block.log?文件下。如果沒有發生攔截,則該日志不會出現。
2014-06-20 16:35:10|1|sayHello(java.lang.String,long),FlowException,default,origin|61,0 2014-06-20 16:35:11|1|sayHello(java.lang.String,long),FlowException,default,origin|1,0| 1 | 2014-06-20 16:35:10 | 時間戳 |
| 2 | 1 | 該秒發生的第一個資源 |
| 3 | sayHello(java.lang.String,long) | 資源名稱 |
| 4 | XXXException | 攔截的原因, 通常?FlowException?代表是被限流規則攔截,DegradeException?則表示被降級,SystemBlockException?則表示被系統保護攔截 |
| 5 | default | 生效規則的調用來源(參數限流中代表生效的參數) |
| 6 | origin | 被攔截資源的調用者,可以為空 |
| 7 | 61,0 | 61 被攔截的數量,0 無意義可忽略 |
實時查詢
相關 API:?GET /metric
curl http://localhost:8719/metric?identity=XXX&startTime=XXXX&endTime=XXXX&maxLines=XXXX需指定以下 URL 參數:
- identity:資源名稱
- startTime:開始時間(時間戳)
- endTime:結束時間
- maxLines:監控數據最大行數
返回和?metric 日志?格式一樣的內容。例如:
1529998904000|2018-06-26 15:41:44|abc|100|0|0|0|0 1529998905000|2018-06-26 15:41:45|abc|4|5579|104|0|728 1529998906000|2018-06-26 15:41:46|abc|0|15698|0|0|0 1529998907000|2018-06-26 15:41:47|abc|0|19262|0|0|0 1529998908000|2018-06-26 15:41:48|abc|0|19502|0|0|0 1529998909000|2018-06-26 15:41:49|abc|0|18386|0|0|0 1529998910000|2018-06-26 15:41:50|abc|0|19189|0|0|0 1529998911000|2018-06-26 15:41:51|abc|0|16543|0|0|0 1529998912000|2018-06-26 15:41:52|abc|0|18471|0|0|0 1529998913000|2018-06-26 15:41:53|abc|0|19405|0|0|0總結
以上是生活随笔為你收集整理的Sentinel(十二)之实时监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sentinel(十一)之黑白名单控制
- 下一篇: 如何实现cpu超频如何让电脑cpu超频