全部產品
Search
文件中心

Alibaba Cloud Service Mesh:開啟網格拓撲提高可觀測性

更新時間:Jun 30, 2024

當您需要可視化監控服務間的互動時,可以開啟網格拓撲功能。通過網格拓撲圖,您可以即時監測服務的健康狀態,分析服務間的延遲和通訊問題,瞭解流量在服務間的分布和流轉,以便您快速發現和解決問題,確保服務的可靠性和高效能水平。

功能介紹

網格拓撲作為一個服務網格可觀測性工具,能夠提供網格流量的強大可視化功能,將即時請求流量與網格配置資訊相結合,提供對服務調用行為及健康狀態的即時洞察,協助您快速查明問題。網格拓撲主要提供以下能力:

  • 流量調用拓撲圖:網格拓撲提供強大的網格流量可視化功能,將即時請求流量以拓撲圖形式展示。

  • 網格配置可視化:網格拓撲能夠根據服務網格中各項配置,對拓撲圖上的節點進行修飾,協助您一目瞭然地瞭解當前生效的配置。這些配置包括對等身份認證、虛擬服務、目標規則、ASM熔斷限流等等。

  • 健康狀態可視化:網格拓撲以節點或邊的顏色代表格服務或請求的健康狀態,協助您快速找到出現問題的節點或請求。

  • 流量重放:流量重放允許您重放過去選中時間段內的流量狀況,這使您有能力徹底檢查感興趣的時間段內的應用流量。

步驟一:啟用網格拓撲

方式一:建立ASM執行個體

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊建立新網格

  3. 可觀測性地區,選中開啟採集 Prometheus 監控指標,按需選擇Prometheus類型並進行相關操作。

    Prometheus類型

    操作

    可觀測監控Prometheus版

    選中使用可觀測監控Prometheus版採集監控指標,然後選中啟用ASM網格拓撲提升網格可觀測。關於如何整合可觀測監控Prometheus版和計費說明,請參見整合可觀測監控Prometheus版實現網格監控產品計費

    自建Prometheus

    選中整合自建Prometheus實現監控,然後選中啟用ASM網格拓撲提升網格可觀測,輸入ASM網格拓撲使用的Prometheus服務地址(即自建Prometheus服務的訪問地址)。關於如何整合自建Prometheus,請參見整合自建Prometheus實現網格監控

    說明
    • 選中開啟採集 Prometheus 監控指標,表示開啟採集Service Mesh執行個體指標功能,不會自動建立ARMS執行個體或者自建的Prometheus執行個體。

    • 取消選中開啟採集 Prometheus 監控指標啟用ASM網格拓撲提升網格可觀測,表示關閉網格拓撲。

  4. 配置相關資訊,仔細閱讀並選中服務合約,然後在頁面下方,單擊建立服務網格

    關於配置項的說明,請參見建立ASM執行個體

  5. 將ACK叢集添加到建立的ASM執行個體。具體操作,請參見添加叢集到ASM執行個體

方式二:使用已有ASM執行個體

請確保ASM執行個體已添加ACK叢集。具體操作,請參見添加叢集到ASM執行個體

ASM版本為1.12.4.50以下

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇網格執行個體 > 基本資料,然後在頁面右側,單擊功能設定

  3. 功能設定更新面板,選中開啟採集 Prometheus 監控指標,按需選擇Prometheus類型並進行相關操作。

    Prometheus類型

    操作

    可觀測監控Prometheus版

    選中使用可觀測監控Prometheus版採集監控指標,然後選中啟用ASM網格拓撲提升網格可觀測。關於如何整合可觀測監控Prometheus版和計費說明,請參見整合可觀測監控Prometheus版實現網格監控產品計費

    自建Prometheus

    選中整合自建Prometheus實現監控,然後選中啟用ASM網格拓撲提升網格可觀測,輸入ASM網格拓撲使用的Prometheus服務地址(即自建Prometheus服務的訪問地址)。關於如何整合自建Prometheus,請參見整合自建Prometheus實現網格監控

  4. 配置完成後,在功能設定更新面板下方,單擊確定

ASM版本為1.12.4.50及以上

說明

網格拓撲依賴Service Mesh整合Prometheus監控指標。如果您尚未整合Prometheus實現網格監控,請先對Prometheus進行整合。具體操作,請參見整合可觀測監控Prometheus版實現網格監控整合自建Prometheus實現網格監控。關於可觀測監控Prometheus版的計費說明,請參見產品計費

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 網格拓撲,在啟用ASM網格拓撲地區,按照ASM版本進行以下操作。

    • ASM版本為1.18.2.112以下:單擊開始啟用

    • ASM版本為1.18.2.112及以上:任選以下部署模式。關於兩種模式的差異以及如何配置託管模式,請參見開啟託管模式的網格拓撲

      • 單擊資料面Kubernetes叢集內部署模式,輸入ASM網格拓撲使用的Prometheus服務地址,單擊開始啟用

      • 單擊託管模式,單擊開始啟用,在彈出的對話方塊,配置相關資訊,單擊確定

步驟二:訪問網格拓撲

您可以通過以下三種方式訪問網格拓撲。直接存取網格拓撲的方式需ASM版本為1.12.4.50及以上;自訂方式訪問網格拓撲的方式需ASM版本為1.16.4.5及以上。

方式一:直接存取網格拓撲

如果您的ASM版本為1.12.4.50及以上,您可以選擇自動建立CLB訪問ASM網格拓撲,並直接存取網格拓撲服務。

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 網格拓撲

  3. 訪問方式地區,按ASM執行個體版本選擇以下操作。

    • ASM版本為1.15.3.120以下:選中自動建立公網負載平衡CLB訪問ASM網格拓撲

    • ASM版本為1.15.3.120及以上,1.17.2.19以下:開啟自動建立公網負載平衡CLB訪問ASM網格拓撲右側的開關,在彈出的對話方塊,單擊確定

    • ASM版本為1.17.2.19及以上:開啟建立負載平衡CLB訪問ASM網格拓撲右側的開關,在彈出的對話方塊,按需進行相關配置,然後單擊確定

    開啟訪問網格拓撲後,Service Mesh將進入短暫的更新狀態。

  4. 查看Service Mesh是否更新完成。

    1. 在左側導覽列,選擇網格執行個體 > 基本資料

    2. 基本資料地區,查看Service Mesh狀態

      狀態更新中,表示正在更新;若狀態運行中,表示更新完成。

  5. 網格拓撲頁面的訪問方式地區,單擊點擊此處在新頁面訪問ASM網格拓撲或者複製Token並在新頁面開啟ASM網格拓撲,進入網格拓撲的登入頁面。

方式二:使用ASM網關訪問網格拓撲

  1. 建立入口網關,並為入口網關添加支援網格拓撲訪問的連接埠配置。具體操作,請參見建立入口網關服務使用KubeAPI管理入口網關

    連接埠配置的YAML樣本如下。

    - name: http-kiali
      port: 20001
      protocol: TCP
      targetPort: 20001

    連接埠配置

  2. 使用以下YAML,建立網關規則。具體操作,請參見管理網關規則

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: kiali-gateway
      namespace: istio-system
    spec:
      selector:
        istio: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: http
            number: 20001
            protocol: HTTP
  3. 使用以下YAML,建立虛擬服務。具體操作,請參見管理虛擬服務

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: kiali-vs
      namespace: istio-system
    spec:
      gateways:
        - kiali-gateway
      hosts:
        - '*'
      http:
        - route:
            - destination:
                host: kiali
                port:
                  number: 20001
  4. 登入網格拓撲。

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇網格執行個體 > 基本資料

    3. 配置資訊地區,單擊啟用ASM網格拓撲右側的通過入口網關訪問,進入網格拓撲的登入頁面。

方式三:自訂方式訪問網格拓撲

在啟用網格拓撲後,網格拓撲將在Kubernetes叢集的istio-system命名空間下建立名為Kiali的Service。您可以通過為該Service建立代理服務等方式訪問網格拓撲。例如,為Kiali Service建立一個Nginx反向 Proxy,並通過Nginx訪問網格拓撲。您可以通過自訂訪問方式設定來設定訪問Kiali Service的具體方法。該方式需ASM版本為1.16.4.5及以上。關於升級ASM版本的具體操作,請參見升級ASM執行個體

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 網格拓撲

  3. 登入鑒權方式地區下方,單擊展開進階選項,然後在自訂訪問方式設定地區,配置相關資訊,單擊儲存網格拓撲配置

    配置項

    說明

    自訂訪問網域名稱

    定義網格拓撲所服務的自訂網域名。如果您在訪問網格拓撲時使用自訂網域名,建議您配置此項,否則可能影響網格拓撲的OIDC登入流程。當您通過OIDC方式登入網格拓撲時,網格拓撲會將Redirect URI中的網域名稱替換為您的自訂網域名,以保證和OIDC應用的正常對接。

    自訂訪問連接埠

    定義網格拓撲服務監聽的連接埠,預設為20001。當您設定此項時,網格拓撲服務將監聽您指定的自訂連接埠。

    自訂訪問服務根路徑

    定義網格拓撲所服務的根路徑,預設為/。當您設定此項時,網格拓撲將以您設定的路徑為根路徑提供服務。當您在訪問網格拓撲時,需要在原有訪問地址中添加自訂的根路徑。

    自訂訪問協議(https/http)

    定義網格拓撲所服務的協議,僅支援填寫httphttps。如果您在訪問網格拓撲時使用HTTPS協議,建議您配置此項,否則可能影響網格拓撲的OIDC登入流程。當您通過OIDC方式登入網格拓撲時,網格拓撲會將Redirect URI中的協議部分替換為您的自訂協議,以保證和OIDC應用的正常對接。

步驟三:登入網格拓撲

您可以通過以下三種方式登入網格拓撲。OIDC的方式登入需ASM版本為1.15.3.120及以上;阿里雲帳號身份的方式需ASM版本為1.16.4.5及以上。

方式一:通過Token方式登入網格拓撲

ASM版本為1.12.4.50以下

您可以登入ACK控制台擷取Token,然後通過Token方式登入網格拓撲。

  1. 登入Container Service管理主控台,在左側導覽列單擊叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇組態管理 > 保密字典

  3. 保密字典頁面,命名空間選擇istio-system,單擊kiali-service-account-token-****,然後單擊token行的token表徵圖,複製Token。

  4. 在網格拓撲的登入頁面,粘貼Token,單擊Log in,進入網格拓撲控制台。

ASM版本為1.12.4.50及以上

您可以登入ASM控制台擷取Token,然後通過Token方式登入網格拓撲。

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 網格拓撲

  3. 網格拓撲頁面的訪問方式地區,單擊複製Token並在新頁面開啟ASM網格拓撲

  4. 在網格拓撲的登入頁面,粘貼Token,單擊登入,進入網格拓撲控制台。

方式二:通過OIDC方式登入網格拓撲

OIDC(OpenID Connect)是一種身份認證與授權的協議,通常用於實現單點登入(SSO)。您可以通過OIDC協議與IdP(身份供應商)對接,登入網格拓撲。使用該方式,ASM版本需為1.15.3.120及以上。關於升級ASM版本的具體操作,請參見升級ASM執行個體

  1. 配置IdP。具體操作,請參見ASM整合阿里雲IDaaS實現網格內應用單點登入的步驟一和步驟二。

    登入 Redirect URI配置為網格拓撲的負載平衡CLB的IP訪問地址(直接通過CLB訪問網格拓撲)或者ASM網關的地址(使用ASM網關訪問網格拓撲)。配置樣本如下:

    • 如果通過CLB訪問網格拓撲,且網格拓撲的負載平衡CLB的IP為xxx.xxx.xxx.xxx,則登入 Redirect URI配置為http://xxx.xxx.xxx.xxx:2000120001末尾不能攜帶//xxx等路徑。

    • 如果通過ASM網關訪問網格拓撲,且ASM網關的IP為yyy.yyy.yyy.yyy,則登入 Redirect URI配置為http://yyy.yyy.yyy.yyy:2000120001末尾不能攜帶//xxx等路徑。

  2. 通過OIDC方式登入網格拓撲。

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 網格拓撲

    3. 登入鑒權方式地區,選中OIDC登入,配置相關資訊,單擊儲存網格拓撲配置,然後單擊在新頁面開啟ASM網格拓撲

    4. 在網格拓撲的登入頁面,單擊Log In with OpenID,跳轉到OIDC應用的登入頁面進行登入。

方式三:通過阿里雲帳號身份登入網格拓撲

您可以通過OIDC協議與阿里雲RAM OAuth應用對接,實現通過阿里雲帳號身份登入網格拓撲。更多資訊,請參見Web應用登入阿里雲

使用此方式時,服務網格ASM將自動為您建立名稱以asm-kiali開頭的阿里雲RAM OAuth應用,並將此應用與網格拓撲進行整合。該方式需ASM版本為1.16.4.5及以上。關於升級ASM版本的具體操作,請參見升級ASM執行個體

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 網格拓撲

  3. 登入鑒權方式地區,選中阿里雲帳號身份登入,在彈出的對話方塊中,單擊添加回調地址,輸入回調地址,然後單擊確定

    網格將進行短暫的更新,請等待網格更新完成後進行下一步操作。

    說明
    • 回調地址格式請參見方式二:通過OIDC方式登入網格拓撲頁簽中的登入 Redirect URI。

    • 若您採用直接存取網格拓撲的訪問方式,回調地址會自動填寫。

  4. 在網格拓撲的登入頁面,單擊Log In with OpenID,以阿里雲帳號身份進行登入。

FAQ

為什麼使用ARMS Prometheus採集監控指標,網格拓撲無法載入?

如果您的Service MeshASM選擇使用ARMS Prometheus採集監控指標,並為ARMS Prometheus執行個體開啟了鑒權Token,網格拓撲將會無法訪問您的ARMS Prometheus執行個體,造成網格拓撲無法載入。您可以任選以下兩種方案進行處理。更多資訊,請參見將Prometheus的監控資料接入本地Grafana

  • 方案一:在ARMS控制台設定頁面關閉Token。更多資訊,請參見使用HTTP API地址對接Grafana或自建應用中接入Prometheus資料

  • 方案二:將ARMS Prometheus鑒權Token配置到網格拓撲,以對接ARMS Prometheus執行個體。

    說明

    該操作需ASM版本為1.15.3.120及以上。

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 網格拓撲

    3. 對接ARMS Prometheus監控執行個體地區的文字框,輸入ARMS Prometheus配置的鑒權Token,然後單擊儲存網格拓撲配置,為網格拓撲配置訪問ARMS Prometheus執行個體的鑒權Token。

為什麼網格拓撲只能看到部分流量?

您可以按照如下步驟進行排查。

  1. 配置問題

    確認ASM網格拓撲觀測是否在流量顯示設定中選擇了正確類型的流量,例如gRPC、HTTP、TCP。未選中這些選項可能導致無法查看全部流量資訊。

  2. 命名空間限制

    在網格拓撲中,確認是否選擇了正確的命名空間,部分流量可能位於未被選擇的命名空間內。

  3. 資料擷取與更新

    • 確認Prometheus執行個體的指標採集是否正常,ASM可能只顯示已成功收集到的資料,部分流量資料可能由於各種原因(如延遲、丟包等)未能及時顯示在拓撲圖上。

    • 確認叢集中的所有工作負載是否都注入了網格代理,只有注入了網格代理的工作負載會上報流量監控指標資料。

    • 確認網格拓撲頁面是否即時重新整理,或者嘗試手動重新整理以擷取最新的流量資料。

  4. Sidecar代理配置、流量配置影響

    某些流量可能受到ASM內的Sidecar代理配置或Sidecar代理流量配置的影響,導致其不通過網格代理因而無法被觀測。檢查Sidecar代理配置中是否配置了按連接埠或地址來禁用Sidecar代理,或者Sidecar流量配置中是否配置了正確的出入站流量目標。

相關文檔

  • 如果您發現某些請求耗時異常,可以通過訪問日誌定位請求異常延遲的原因。具體操作,請參見通過訪問日誌定位請求異常延遲的原因

  • 如果您需要在用戶端對一個目標服務的訪問過程中,使流量儘可能的在同一個可用性區域內流轉,以保證服務間的調用延遲最低,可以使用同可用性區域優先路由功能。具體操作,請參見使用網格拓撲觀測同可用性區域優先路由

  • 如果您需要觀測多個叢集的流量拓撲,可以使用託管模式的網格拓撲功能。整個網格執行個體只需要部署一個網格拓撲服務,減少配置的工作量。具體操作,請參見開啟託管模式的網格拓撲

  • Sidecar的請求攔截機制可能會干擾網格內應用的健全狀態檢查,導致檢查失敗。您可以啟用健全狀態檢查重新導向,以確保檢查正確執行。具體操作,請參見為網格內應用開啟健全狀態檢查重新導向