日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過(guò)CEL表達(dá)式消除請(qǐng)求路徑維度中的ID信息

更新時(shí)間:

在某些應(yīng)用場(chǎng)景中,請(qǐng)求路徑包含特定信息來(lái)表征用戶(hù)身份或訪問(wèn)對(duì)象。例如,訪問(wèn)某電商后端/buy路徑時(shí),訂單ID被拼接為請(qǐng)求路徑 /buy/{order_id}。這會(huì)導(dǎo)致訪問(wèn)同一后端的不同訂單請(qǐng)求時(shí),會(huì)產(chǎn)生大量監(jiān)控指標(biāo),增大數(shù)據(jù)面并影響 Prometheus 性能。為避免這種情況,您可以通過(guò)定義更高級(jí)的CEL (Common Expression Language)表達(dá)式,定制指標(biāo)維度生成規(guī)則,消除請(qǐng)求路徑中訂單ID等信息,從而有效收斂監(jiān)控指標(biāo)。本文介紹如何通過(guò)CEL表達(dá)式消除監(jiān)控指標(biāo)請(qǐng)求路徑維度中的ID信息。

前提條件

步驟一:?jiǎn)⒂帽O(jiān)控指標(biāo)并添加自定義維度

  1. 登錄ASM控制臺(tái),在左側(cè)導(dǎo)航欄,選擇服務(wù)網(wǎng)格 > 網(wǎng)格管理

  2. 網(wǎng)格管理頁(yè)面,單擊目標(biāo)實(shí)例名稱(chēng),然后在左側(cè)導(dǎo)航欄,選擇可觀測(cè)管理中心 > 可觀測(cè)配置

  3. 監(jiān)控指標(biāo)設(shè)置列表中開(kāi)啟REQUEST_SIZECLIENT側(cè)指標(biāo)SERVER側(cè)指標(biāo),并分別添加自定義維度request_path,取值為request.path。

    image

步驟二:訪問(wèn)httpbin服務(wù)

  1. 執(zhí)行以下命令,查看應(yīng)用運(yùn)行狀態(tài)。

    kubectl get pod

    預(yù)期輸出:

    NAME                      READY   STATUS    RESTARTS   AGE
    httpbin-fd68xxxxx-xxxxx   2/2     Running   0          44m
    sleep-5488dxxxxx-xxxxx    2/2     Running   0          43m
  2. 執(zhí)行以下命令,從sleep應(yīng)用Pod訪問(wèn)httpbin應(yīng)用,請(qǐng)求路徑中加入了ID信息。

    kubectl exec -it deploy/sleep -- curl httpbin:8000/buy/id1 > /dev/null
    kubectl exec -it deploy/sleep -- curl httpbin:8000/buy/id2 > /dev/null
    kubectl exec -it deploy/sleep -- curl httpbin:8000/sell/id1 > /dev/null
    kubectl exec -it deploy/sleep -- curl httpbin:8000/sell/id2 > /dev/null
  3. 執(zhí)行以下命令,查看監(jiān)控指標(biāo)信息。

    kubectl exec -it deploy/httpbin -c istio-proxy -- curl localhost:15020/stats/prometheus | grep request_bytes_count

    預(yù)期輸出:

    istio_request_bytes_count{reporter="destination",source_workload="sleep",...request_path="/buy/id1"} 2
    istio_request_bytes_count{reporter="destination",source_workload="sleep",...request_path="/buy/id2"} 2
    istio_request_bytes_count{reporter="destination",source_workload="sleep",...request_path="/sell/id1"} 2
    istio_request_bytes_count{reporter="destination",source_workload="sleep",...request_path="/sell/id2"} 2

    可以看到記錄了所有請(qǐng)求的 request_path

步驟三:修改監(jiān)控指標(biāo)自定義維度以消除ID信息

當(dāng)前的自定義維度配置狀態(tài)下,會(huì)記錄每個(gè)請(qǐng)求的 request_path,每個(gè)請(qǐng)求中都包含特定的 ID 信息,這會(huì)為Prometheus帶來(lái)一些性能壓力。您可以通過(guò)修改自定義維度request_path的取值為以下CEL表達(dá)式,以消除ID信息。

matches(request.path, "/sell/.*") ? "/sell/{order_id}" : 
    (matches(request.path, "/buy/.*") ? "/buy/{order_id}" : 
    "/default")
說(shuō)明

該 CEL 表達(dá)式的含義為:

  • 如果請(qǐng)求路徑以/sell開(kāi)頭,返回/sell/{order_id}

  • 如果請(qǐng)求路徑以/buy開(kāi)頭,返回/buy/{order_id}。

  • 如果請(qǐng)求路徑不符合以上兩種情況,則返回/default。

  1. 執(zhí)行以下命令,再次訪問(wèn)httpbin應(yīng)用。

    kubectl exec -it deploy/sleep -- curl httpbin:8000/buy/id1 > /dev/null
    kubectl exec -it deploy/sleep -- curl httpbin:8000/buy/id2 > /dev/null
    kubectl exec -it deploy/sleep -- curl httpbin:8000/sell/id1 > /dev/null
    kubectl exec -it deploy/sleep -- curl httpbin:8000/sell/id2 > /dev/null
    kubectl exec -it deploy/sleep -- curl httpbin:8000/product > /dev/null
  2. 執(zhí)行以下命令,查看監(jiān)控指標(biāo)信息。

    kubectl exec -it deploy/httpbin -c istio-proxy -- curl localhost:15020/stats/prometheus|grep request_bytes_count

    預(yù)期輸出:

    istio_request_bytes_count{reporter="destination",source_workload="sleep",...request_path="/buy/{order_id}"} 3
    istio_request_bytes_count{reporter="destination",source_workload="sleep",...request_path="/default"} 2
    istio_request_bytes_count{reporter="destination",source_workload="sleep",...request_path="/sell/{order_id}"} 4

    可以看到,此時(shí)請(qǐng)求路徑前綴為/buy的請(qǐng)求request_path維度變?yōu)?code data-tag="code" code-type="xCode" class="code">/buy/{order_id},前綴為/sell的請(qǐng)求變?yōu)?code data-tag="code" code-type="xCode" class="code">/sell/{order_id},其它請(qǐng)求則變?yōu)?code data-tag="code" code-type="xCode" class="code">/default。

相關(guān)文檔

更多關(guān)于CEL表達(dá)式的使用方法,請(qǐng)參見(jiàn)cel-spec。