自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Grafana動態(tài)視圖在轉(zhuǎn)轉(zhuǎn)推送系統(tǒng)中的應(yīng)用

開發(fā)
動態(tài)視圖,即:Flowcharting,是Grafana的一個插件。該插件借助在線圖形庫draw.io繪制、展示復(fù)雜圖表。

1 背景

轉(zhuǎn)轉(zhuǎn)的推送系統(tǒng)為自研產(chǎn)物,實現(xiàn)過程簡述為:對外提供一個接入層,以多次MQ轉(zhuǎn)發(fā)形式進行多系統(tǒng)交互,內(nèi)部包括:推送內(nèi)容過濾、免打擾策略、廠商通道分發(fā)等邏輯,最終發(fā)起http請求至廠商通道,推送至設(shè)備,如圖1所示。一條Push經(jīng)過的邏輯節(jié)點眾多,業(yè)務(wù)側(cè)同學(xué)經(jīng)常反饋Push收不到。每次收到反饋,都需要對鏈路中的每個集群進行排查,費時費力,亟需一種快速定位問題的方式,解放人力。

圖片

圖1 轉(zhuǎn)轉(zhuǎn)推送系統(tǒng)-推送流程

2 idea的誕生

在調(diào)用鏈路層面,一次接口調(diào)用中,traceId貫穿整個調(diào)用鏈路,該能力由Radar(自研能力,負(fù)責(zé)埋點的生成等)+ Zipkin實現(xiàn)。當(dāng)Push發(fā)送失敗時,一定會在某個邏輯節(jié)點終止,如果我們可以將正向邏輯節(jié)點、異常邏輯節(jié)點以可視化的方式呈現(xiàn)出來,以traceId作為查詢問題的線索,則可以在圖中快速定位問題原因。

在數(shù)據(jù)采集方向上,對數(shù)據(jù)上報有嚴(yán)格的耗時、低性能開銷要求。Prometheus監(jiān)控體系的QPS在千萬級別,耗時為納秒級,內(nèi)存占用和資源消耗都相對較小,主要取決于標(biāo)簽的數(shù)量,標(biāo)簽越多,內(nèi)存占用越多。若采用traceId作為查詢條件(對應(yīng)Prometheus中的一個標(biāo)簽),可以通過抽樣、限制收集的環(huán)境,即:只在測試、沙箱環(huán)境收集,降低對內(nèi)存等資源的消耗。

以這兩個層面為出發(fā)點,Grafana動態(tài)視圖與我們訴求不謀而合。

3 什么是動態(tài)視圖

動態(tài)視圖,即:Flowcharting,是Grafana的一個插件。該插件借助在線圖形庫draw.io繪制、展示復(fù)雜圖表。draw.io支持的圖表包括:技術(shù)架構(gòu)方案(Legacy、Cloud、Azure、AWS、GCP、Kubernetes、Terraform)、UML方案、工作流等。

可以用這個插件動態(tài)填充數(shù)據(jù)、自定義數(shù)據(jù)與圖表的交互,它可以/支持:

  • 監(jiān)視狀態(tài)和性能
  • 與圖表交互
  • 根據(jù)數(shù)據(jù)或狀態(tài)更改顯示的對象
  • 向?qū)ο筇砑渔溄?/li>
  • 充分利用變量修改形狀、顏色、鏈接、下載路徑等
  • 支持正則表達式進行匹配和替換

附官方動態(tài)視圖樣例,如圖2所示。

圖片

圖2 官方Grafana動態(tài)視圖樣例

4 構(gòu)建看板

4.1 繪制視圖

我們將一條Push經(jīng)過的每個邏輯節(jié)點繪畫出來,如圖3所示。上方的綠色底色節(jié)點為正向節(jié)點,每個正向節(jié)點正下方對應(yīng)一些異常節(jié)點,即:圖中的土黃色節(jié)點。多個正向節(jié)點之間用箭頭串聯(lián)起來。此外,所有節(jié)點都定義了一個狀態(tài)碼,用來唯一標(biāo)識該節(jié)點。節(jié)點狀態(tài)碼釋義放在了最右側(cè)的灰色底色節(jié)點中,點擊該節(jié)點可以進入狀態(tài)碼說明在線文檔。

圖片

圖3 轉(zhuǎn)轉(zhuǎn)推送系統(tǒng)-鏈路流程圖

4.2 上報數(shù)據(jù)

在公共jar包中定義一個Counter,該Counter中包含了兩個標(biāo)簽:nodeName、traceId。其中,traceId對應(yīng)視圖中每個節(jié)點的名稱。

private static final Counter NODE_COUNTER = Counter.build().name("push_link_graph_node_monitor").help("push鏈路節(jié)點監(jiān)控").labelNames("nodeName", "traceId").disableAutoCreateGraph(true).register();

此外,在jar包中提供上報方法,供各服務(wù)上報數(shù)據(jù)使用。

public static void reportNodeInfoStrWithTraceId(String nodeName, String traceId) {
    try {
        if (StringUtils.isBlank(traceId)) {
            traceId = com.bj58.zhuanzhuan.radar.util.RadarUtils.getTraceId();
        }

        NODE_COUNTER.labels(nodeName, traceId).inc();
    } catch (Exception e) {
        // DO NOTHING
    }
    return;
}

最后,在業(yè)務(wù)代碼中上報埋點數(shù)據(jù),如圖4所示。

圖片

圖4 上報埋點數(shù)據(jù)

4.3 創(chuàng)建Grafana看板

新建一個Grafana看板如圖5所示。

圖片

圖5 創(chuàng)建Grafana看板

點擊《設(shè)置》按鈕,完善基礎(chǔ)信息、設(shè)置變量,如圖6所示。

圖片

圖6 設(shè)置按鈕圖示

基礎(chǔ)信息的填寫如圖7所示,基礎(chǔ)信息包括:看板名稱、看板標(biāo)簽(可用來標(biāo)記看板所屬的部門信息)、看板數(shù)據(jù)的時間查詢條件等。

圖片

圖7 完善看板基礎(chǔ)信息

設(shè)置變量如圖8所示,該變量用作后續(xù)的數(shù)據(jù)源召回條件。變量的類型支持:即時手動輸入、實時數(shù)據(jù)源、常量等等。這里將traceId設(shè)置為:即時手動輸入類型。

圖片

圖8 設(shè)置變量

4.4 將圖導(dǎo)入Grafana

在已繪制好的流程界面中,選中《其它》tab,勾選其中的《編輯繪圖》選項,如圖9所示。然后復(fù)制XML內(nèi)容到剪貼板中,如圖10所示。最后將復(fù)制好的內(nèi)容粘貼在FlowCharting看板內(nèi),如圖11所示。

圖片

圖9 編輯繪圖

圖片

圖10 復(fù)制XML內(nèi)容

圖片

圖11 粘貼XML內(nèi)容

4.5 完善PromQL數(shù)據(jù)

這一步驟是書寫查詢語句,以獲取視圖中動態(tài)查詢到的數(shù)據(jù)。在《Query》tab中填寫PromQL、數(shù)據(jù)的圖例維度,如圖12所示。圖例維度用作后續(xù)數(shù)據(jù)與圖表的交互條件。

圖片

圖12 完善PromQL與圖例

對當(dāng)前的推送場景來說,PromQL按照traceId聚合,圖例使用nodeName。附,PromQL如下:

increase(push_link_graph_node_monitor{traceId="${traceId}"}[$__rate_interval])

如果對PromQL不了解,可以查閱參考資料中的第4點。

填寫好的PromQL可以通過2種方式驗證結(jié)果,如圖13所示。

  • QL驗證方式一:打開頁面右上角的《Table view》開關(guān),可以觀測到下方有查詢數(shù)據(jù)展示出來。
  • QL驗證方式二:點擊頁面中部靠下的《Query Inspector》按鈕,出現(xiàn)查詢結(jié)果半層,半層中可以看到查詢結(jié)果,如圖14所示。當(dāng)出錯時,會給出提示信息,按提示排查即可。

圖片

圖13 QL驗證方式

圖片

圖14 Query Inspector半層

4.6 定義Mapping

這一步驟是定義數(shù)據(jù)與圖表的交互。Mapping包括:

  • Color/Tooltip Mappings:將數(shù)據(jù)關(guān)聯(lián)drwa.io XML元素,動態(tài)修改圖的顏色、提示。如:訂單數(shù)小于100單將圖變紅。
  • Label/Text Mappings:將計算的數(shù)據(jù)展示到圖上。
  • Link Mappings:將圖配置跳轉(zhuǎn)鏈接,點擊即可跳轉(zhuǎn)。
  • Event/Animation Mappings:用于將圖的數(shù)據(jù)綁定事件,如:訂單數(shù)小于100單,圖的邊框閃爍。

每個場景的使用方式可以參考官方網(wǎng)站,詳見《參考資料》第3點,或點擊每個頁面元素右側(cè)的問號查看幫助信息、樣例,如圖15所示。

圖片

圖15 頁面元素右側(cè)的幫助信息

在推送場景中,我們使用Event/Animation Mappings,當(dāng)數(shù)據(jù)滿足一定條件時,圖中的元素閃爍展示。首先我們配置數(shù)據(jù)的聚合方式與觸發(fā)閾值,配置樣例如圖16所示。

圖片

圖16 配置數(shù)據(jù)的聚合方式與觸發(fā)閾值

其中l(wèi)vl字段0值代表nodeName為21000的第一個不為空的數(shù)據(jù)大于等于0。后面會用到這個lvl值觸發(fā)圖形交互。

接下來,我們配置圖形閃爍的條件,如圖17所示。點擊紅色框中的《鏈接》按鈕,然后在左側(cè)選中要關(guān)聯(lián)的頁面圖形元素,對應(yīng)本圖中的左側(cè)藍色框內(nèi)容。選中之后,該元素的唯一標(biāo)識會出現(xiàn)自動填充在右側(cè)藍色框中。之后,在黃色框里選擇lvl的值,即我們剛剛設(shè)置的lvl為0這個值,代表當(dāng)滿足該條件時,元素會出現(xiàn)動效。最后在綠色框中設(shè)置動效效果為閃爍。

圖片

圖17 圖的數(shù)據(jù)綁定事件示例

以此類推,給頁面上每個元素設(shè)置數(shù)據(jù)交互效果。

5 成果與收效

5.1 成果

通過draw.io繪制出含有Push鏈路中每個邏輯節(jié)點的視圖,然后在Grafana上構(gòu)建數(shù)據(jù)交互規(guī)則,將推送系統(tǒng)鏈路以可視化的方式呈現(xiàn)出來。

當(dāng)我們拿到一個traceId后,輸入到搜索框中,Grafana自動獲取到數(shù)據(jù),觸發(fā)數(shù)據(jù)交互,高亮每一個邏輯節(jié)點,如圖18所示,非常直觀。

圖片

圖18 推送系統(tǒng)動態(tài)視圖演示

當(dāng)異常節(jié)點高亮?xí)r,業(yè)務(wù)側(cè)同學(xué)可以根據(jù)狀態(tài)碼查看說明文檔,找出對應(yīng)的解決方案,如圖19所示,該圖表明是蘋果APNs通道返回了狀態(tài)碼為400,且原因為BadDeviceToken。

圖片

圖19 推送系統(tǒng)動態(tài)視圖-鏈路異常case

我們可以在圖中灰色節(jié)點的在線文檔鏈接中找到解決方案,如圖20所示。

圖片

圖20 推送系統(tǒng)APNs異常狀態(tài)碼釋義

5.2 收效

在動態(tài)視圖出現(xiàn)之前,人均排查時間為0.25小時以上,詢問頻率為每天N次。有了動態(tài)視圖,業(yè)務(wù)側(cè)同學(xué)基本能夠根據(jù)動態(tài)視圖定位到異常原因,實現(xiàn)自助解決問題,沒有再詢問過(排除服務(wù)異常的case,需要人工再次介入),極大降低了人力成本的投入。

6 推廣

只要你的服務(wù)或者業(yè)務(wù),可以用流程圖繪制,都可以通過本文的方式構(gòu)建出一張動態(tài)視圖,以可視化方式展現(xiàn)邏輯,幫助你快速定位正向、異常邏輯節(jié)點,減少排查問題過程中的人力投入。

歡迎大家在評論區(qū)留言,也可添加微信號:zpc_1994,進一步交流。

7 致謝

感謝架構(gòu)部伙伴建新(王建新)同學(xué)、趙浩同學(xué)的答疑解惑,幫助我們深入了解數(shù)據(jù)采集、動態(tài)視圖構(gòu)建相關(guān)的原理,為最終的技術(shù)選型提供了有力的理論支撐。

8 參考資料

[1] 孟維道.轉(zhuǎn)轉(zhuǎn)Push系統(tǒng)設(shè)計及架構(gòu)演進,2023

[2] 苑沖.Prometheus+Grafana:轉(zhuǎn)轉(zhuǎn)如何打造開箱即用的一體化監(jiān)控系統(tǒng)?,https://mp.weixin.qq.com/s/uSgAAsIqFcKf9jPNKH7sOw

[3] flowcharting-repository,https://algenty.github.io/flowcharting-repository/

[4] 初識PromQL,https://www.topgoer.cn/docs/prometheus/prometheus-1ccta9bf6ibdq

責(zé)任編輯:龐桂玉 來源: 轉(zhuǎn)轉(zhuǎn)技術(shù)
相關(guān)推薦

2023-04-19 13:18:41

動態(tài)線程池平臺

2014-08-08 16:50:21

AB 測試安卓推送

2022-11-09 09:00:51

OCR游戲應(yīng)用

2023-03-22 08:32:35

2023-03-08 08:31:35

AB實驗報價系統(tǒng)

2023-08-24 08:11:39

斷路器監(jiān)控報警

2023-12-06 21:44:28

RocksDBvivo

2024-10-16 21:49:24

2009-07-21 10:39:19

動態(tài)Mapped St

2024-11-07 13:35:10

2023-07-19 22:13:25

一體化推送平臺

2023-02-15 08:31:19

2022-10-28 09:15:02

2022-10-28 08:31:43

2013-06-14 13:50:28

iOS開發(fā)移動開發(fā)警告視圖

2009-07-14 17:10:53

綜合布線門禁系統(tǒng)應(yīng)用

2021-09-10 09:58:35

AvlBST時間

2023-06-07 08:32:32

引擎技術(shù)while

2023-04-26 08:34:46

支付通道監(jiān)控系統(tǒng)

2022-11-07 14:45:26

轉(zhuǎn)轉(zhuǎn)價格DDD
點贊
收藏

51CTO技術(shù)棧公眾號