圖解JanusGraph系列 - JanusGraph指標監控報警(Monitoring JanusGraph)
阿新 • • 發佈:2020-12-23
大家好,我是`洋仔`,JanusGraph圖解系列文章,`實時更新`~
#### 圖資料庫文章總目錄:
* **整理所有圖相關文章,請移步(超鏈):**[圖資料庫系列-文章總目錄 ](https://liyangyang.blog.csdn.net/article/details/111031257)
> 原始碼分析相關可檢視**github**(`碼文不易,求個star~`): [https://github.com/YYDreamer/janusgraph](https://github.com/YYDreamer/janusgraph)
**轉載文章請保留以下宣告:**
>作者:洋仔聊程式設計、微信公眾號:匠心Java、原文地址:[https://liyangyang.blog.csdn.net/](https://liyangyang.blog.csdn.net/)
>
## 正文
JanusGraph框架提供了一些可監控的指標,用於我們在使用janus圖資料庫時可以對一些指標進行監控,下面我們看下如何配置使用Janusgraph監控!
**本文主要講解了3部分:**
1. 監控的指標型別和配置
2. 監控指標資料展示儲存的位置(Reporter)
3. 實戰應用案例,並對打印出的指標進行了分析
4. 最後給出一個監控設計的架構圖
## 一:監控的底層實現
**JanusGraph通過支援Metrics來實現指標資料收集,什麼是`Metrics`?**
Metrics是框架Dropwizard提供的一個lib包,主要用於專案指標的收集作用,JanusGraph就是基於Metrics這個元件開發的指標收集模組;
Dropwizard是一個Java框架,用於開發對操作友好的高效能RESTful Web服務,將來自Java生態系統的穩定,成熟的庫彙集到一個簡單的程式包中,使我們可以專注於完成工作。
Dropwizard對複雜的配置,應用程式指標,日誌記錄,操作工具等提供了開箱即用的支援;
## 二:JanusGraph中的指標
JanusGraph可以收集以下指標:
- begin,commit和 roll back的事務數
- 每種儲存後端操作型別的 請求次數 和 失敗次數
- 每種儲存後端操作型別的響應時間分佈
### 2.1 配置指標收集
要啟用指標標準收集,需要在JanusGraph的屬性檔案中設定以下內容:
```
# Required to enable Metrics in JanusGraph
metrics.enabled = true
```
此設定使JanusGraph在執行時使用計時器、計數器、直方圖等Metrics類記錄測量結果。
#### 自定義預設指標名稱
預設情況下,JanusGraph為所有度量標準名稱新增“ org.janusgraph”字首。可以通過`metrics.prefix`配置屬性設定此字首。例如,將預設的“ org.janusgraph”字首縮短為“ janusgraph”:
```
# Optional
metrics.prefix = janusgraph
```
#### 特定事務指標名稱
每個JanusGraph事務都可以選擇指定其自己的指標名稱字首,從而覆蓋預設的指標名稱字首和 `metrics.prefix`配置屬性。例如,可以將字首更改為開啟JanusGraph事務的前端應用程式的名稱。
請注意,Metrics在記憶體中維護度量標準名稱及其相關物件的ConcurrentHashMap,因此,保持不同度量標準字首的數量較小可能是個好主意。
下面使用案例:
```java
JanusGraph graph = ...; // 獲取圖例項連線
TransactionBuilder tbuilder = graph.buildTransaction(); // 開啟一個事務構建器
JanusGraphTransaction tx = tbuilder.groupName("foobar").start(); // 開啟一個事務,並開啟指標收集,Metrics字首為foobar
```
下面為`groupName`的方法定義:
```java
* Sets the name prefix used for Metrics recorded by this transaction. If
* metrics is enabled via {@link GraphDatabaseConfiguration#BASIC_METRICS},
* this string will be prepended to all JanusGraph metric names.
*
* @param name Metric name prefix for this transaction
* @return Object containing transaction prefix name property
*/
TransactionBuilder groupName(String name);
```
#### 分開指標統計
JanusGraph在預設情況下組合了其各種內部儲存後端控制代碼的指標,也就是說:會將所有的操作統一收集為一種型別指標;
儲存後端互動的所有指標標準都遵