當您需要可視化監控服務間的交互時,可以開啟網格拓撲功能。通過網格拓撲圖,您可以實時監測服務的健康狀態,分析服務間的延遲和通信問題,了解流量在服務間的分布和流轉,以便您快速發現和解決問題,確保服務的可靠性和高性能水平。
功能介紹
網格拓撲作為一個服務網格可觀測性工具,能夠提供網格流量的強大可視化功能,將實時請求流量與網格配置信息相結合,提供對服務調用行為及健康狀態的即時洞察,幫助您快速查明問題。網格拓撲主要提供以下能力:
流量調用拓撲圖:網格拓撲提供強大的網格流量可視化功能,將實時請求流量以拓撲圖形式展示。
網格配置可視化:網格拓撲能夠根據服務網格中各項配置,對拓撲圖上的節點進行修飾,幫助您一目了然地了解當前生效的配置。這些配置包括對等身份認證、虛擬服務、目標規則、ASM熔斷限流等等。
健康狀態可視化:網格拓撲以節點或邊的顏色代表服務或請求的健康狀態,幫助您快速找到出現問題的節點或請求。
流量重放:流量重放允許您重放過去選中時間段內的流量狀況,這使您有能力徹底檢查感興趣的時間段內的應用流量。
步驟一:啟用網格拓撲
方式一:新建ASM實例
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊創建新網格。
在可觀測性區域,選中開啟采集 Prometheus 監控指標,按需選擇Prometheus類型并進行相關操作。
Prometheus類型
操作
可觀測監控Prometheus版
選中使用可觀測監控Prometheus版采集監控指標,然后選中啟用ASM網格拓撲提升網格可觀測。關于如何集成可觀測監控Prometheus版和計費說明,請參見集成可觀測監控Prometheus版實現網格監控和產品計費。
自建Prometheus
選中集成自建Prometheus實現監控,然后選中啟用ASM網格拓撲提升網格可觀測,輸入ASM網格拓撲使用的Prometheus服務地址(即自建Prometheus服務的訪問地址)。關于如何集成自建Prometheus,請參見集成自建Prometheus實現網格監控。
說明選中開啟采集 Prometheus 監控指標,表示開啟采集服務網格實例指標功能,不會自動創建ARMS實例或者自建的Prometheus實例。
取消選中開啟采集 Prometheus 監控指標和啟用ASM網格拓撲提升網格可觀測,表示關閉網格拓撲。
配置相關信息,仔細閱讀并選中服務協議,然后在頁面下方,單擊創建服務網格。
關于配置項的說明,請參見創建ASM實例。
將ACK集群添加到新建的ASM實例。具體操作,請參見添加集群到ASM實例。
方式二:使用已有ASM實例
請確保ASM實例已添加ACK集群。具體操作,請參見添加集群到ASM實例。
ASM版本為1.12.4.50以下
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇
,然后在頁面右側,單擊功能設置。在功能設置更新面板,選中開啟采集 Prometheus 監控指標,按需選擇Prometheus類型并進行相關操作。
Prometheus類型
操作
可觀測監控Prometheus版
選中使用可觀測監控Prometheus版采集監控指標,然后選中啟用ASM網格拓撲提升網格可觀測。關于如何集成可觀測監控Prometheus版和計費說明,請參見集成可觀測監控Prometheus版實現網格監控和產品計費。
自建Prometheus
選中集成自建Prometheus實現監控,然后選中啟用ASM網格拓撲提升網格可觀測,輸入ASM網格拓撲使用的Prometheus服務地址(即自建Prometheus服務的訪問地址)。關于如何集成自建Prometheus,請參見集成自建Prometheus實現網格監控。
配置完成后,在功能設置更新面板下方,單擊確定。
ASM版本為1.12.4.50及以上
網格拓撲依賴服務網格集成Prometheus監控指標。如果您尚未集成Prometheus實現網格監控,請先對Prometheus進行集成。具體操作,請參見集成可觀測監控Prometheus版實現網格監控和集成自建Prometheus實現網格監控。關于可觀測監控Prometheus版的計費說明,請參見產品計費。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇
,在啟用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網格拓撲,并直接訪問網格拓撲服務。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇
。在訪問方式區域,按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網格拓撲右側的開關,在彈出的對話框,按需進行相關配置,然后單擊確定。
開啟訪問網格拓撲后,服務網格將進入短暫的更新狀態。
查看服務網格是否更新完成。
在左側導航欄,選擇
。在基本信息區域,查看服務網格的狀態。
若狀態為更新中,表示正在更新;若狀態為運行中,表示更新完成。
在網格拓撲頁面的訪問方式區域,單擊點擊此處在新頁面訪問ASM網格拓撲或者復制Token并在新頁面打開ASM網格拓撲,進入網格拓撲的登錄頁面。
方式二:使用ASM網關訪問網格拓撲
創建入口網關,并為入口網關添加支持網格拓撲訪問的端口配置。具體操作,請參見創建入口網關服務或使用KubeAPI管理入口網關。
端口配置的YAML示例如下。
- name: http-kiali port: 20001 protocol: TCP targetPort: 20001
使用以下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
使用以下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
登錄網格拓撲。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇
。在配置信息區域,單擊啟用ASM網格拓撲右側的通過入口網關訪問,進入網格拓撲的登錄頁面。
方式三:自定義方式訪問網格拓撲
在啟用網格拓撲后,網格拓撲將在Kubernetes集群的istio-system命名空間下創建名為Kiali的Service。您可以通過為該Service創建代理服務等方式訪問網格拓撲。例如,為Kiali Service創建一個Nginx反向代理,并通過Nginx訪問網格拓撲。您可以通過自定義訪問方式設置來設定訪問Kiali Service的具體方法。該方式需ASM版本為1.16.4.5及以上。關于升級ASM版本的具體操作,請參見升級ASM實例。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在登錄鑒權方式區域下方,單擊展開高級選項,然后在自定義訪問方式設置區域,配置相關信息,單擊保存網格拓撲配置。
配置項
說明
自定義訪問域名
定義網格拓撲所服務的自定義域名。如果您在訪問網格拓撲時使用自定義域名,建議您配置此項,否則可能影響網格拓撲的OIDC登錄流程。當您通過OIDC方式登錄網格拓撲時,網格拓撲會將Redirect URI中的域名替換為您的自定義域名,以保證和OIDC應用的正常對接。
自定義訪問端口
定義網格拓撲服務監聽的端口,默認為20001。當您設定此項時,網格拓撲服務將監聽您指定的自定義端口。
自定義訪問服務根路徑
定義網格拓撲所服務的根路徑,默認為/。當您設定此項時,網格拓撲將以您設定的路徑為根路徑提供服務。當您在訪問網格拓撲時,需要在原有訪問地址中添加自定義的根路徑。
自定義訪問協議(https/http)
定義網格拓撲所服務的協議,僅支持填寫http或https。如果您在訪問網格拓撲時使用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方式登錄網格拓撲。
登錄容器服務管理控制臺,在左側導航欄單擊集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇
。在保密字典頁面,命名空間選擇istio-system,單擊kiali-service-account-token-****,然后單擊token行的圖標,復制Token。
在網格拓撲的登錄頁面,粘貼Token,單擊Log in,進入網格拓撲控制臺。
ASM版本為1.12.4.50及以上
您可以登錄ASM控制臺獲取Token,然后通過Token方式登錄網格拓撲。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇
。在網格拓撲頁面的訪問方式區域,單擊復制Token并在新頁面打開ASM網格拓撲。
在網格拓撲的登錄頁面,粘貼Token,單擊登錄,進入網格拓撲控制臺。
方式二:通過OIDC方式登錄網格拓撲
OIDC(OpenID Connect)是一種身份認證與授權的協議,通常用于實現單點登錄(SSO)。您可以通過OIDC協議與IdP(身份提供商)對接,登錄網格拓撲。使用該方式,ASM版本需為1.15.3.120及以上。關于升級ASM版本的具體操作,請參見升級ASM實例。
配置IdP。具體操作,請參見ASM集成阿里云IDaaS實現網格內應用單點登錄的步驟一和步驟二。
將登錄 Redirect URI配置為網格拓撲的負載均衡CLB的IP訪問地址(直接通過CLB訪問網格拓撲)或者ASM網關的地址(使用ASM網關訪問網格拓撲)。配置示例如下:
如果通過CLB訪問網格拓撲,且網格拓撲的負載均衡CLB的IP為
xxx.xxx.xxx.xxx
,則登錄 Redirect URI配置為http://xxx.xxx.xxx.xxx:20001
。20001
末尾不能攜帶/
或/xxx
等路徑。如果通過ASM網關訪問網格拓撲,且ASM網關的IP為
yyy.yyy.yyy.yyy
,則登錄 Redirect URI配置為http://yyy.yyy.yyy.yyy:20001
。20001
末尾不能攜帶/
或/xxx
等路徑。
通過OIDC方式登錄網格拓撲。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇
。在登錄鑒權方式區域,選中OIDC登錄,配置相關信息,單擊保存網格拓撲配置,然后單擊在新頁面打開ASM網格拓撲。
在網格拓撲的登錄頁面,單擊Log In with OpenID,跳轉到OIDC應用的登錄頁面進行登錄。
方式三:通過阿里云賬號身份登錄網格拓撲
您可以通過OIDC協議與阿里云RAM OAuth應用對接,實現通過阿里云賬號身份登錄網格拓撲。更多信息,請參見Web應用登錄阿里云。
使用此方式時,服務網格ASM將自動為您創建名稱以asm-kiali開頭的阿里云RAM OAuth應用,并將此應用與網格拓撲進行集成。該方式需ASM版本為1.16.4.5及以上。關于升級ASM版本的具體操作,請參見升級ASM實例。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在登錄鑒權方式區域,選中阿里云賬號身份登錄,在彈出的對話框中,單擊添加回調地址,輸入回調地址,然后單擊確定。
網格將進行短暫的更新,請等待網格更新完成后進行下一步操作。
說明回調地址格式請參見方式二:通過OIDC方式登錄網格拓撲頁簽中的登錄 Redirect URI。
若您采用直接訪問網格拓撲的訪問方式,回調地址會自動填寫。
在網格拓撲的登錄頁面,單擊Log In with OpenID,以阿里云賬號身份進行登錄。
FAQ
為什么使用ARMS Prometheus采集監控指標,網格拓撲無法加載?
如果您的服務網格ASM選擇使用ARMS Prometheus采集監控指標,并為ARMS Prometheus實例開啟了鑒權Token,網格拓撲將會無法訪問您的ARMS Prometheus實例,造成網格拓撲無法加載。您可以任選以下兩種方案進行處理。更多信息,請參見將Prometheus的監控數據接入本地Grafana。
方案一:在ARMS控制臺的設置頁面關閉Token。更多信息,請參見HTTP API地址使用說明。
方案二:將ARMS Prometheus鑒權Token配置到網格拓撲,以對接ARMS Prometheus實例。
說明該操作需ASM版本為1.15.3.120及以上。
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在對接ARMS Prometheus監控實例區域的文本框,輸入ARMS Prometheus配置的鑒權Token,然后單擊保存網格拓撲配置,為網格拓撲配置訪問ARMS Prometheus實例的鑒權Token。
為什么網格拓撲只能看到部分流量?
您可以按照如下步驟進行排查。
配置問題
確認ASM網格拓撲觀測是否在流量顯示設置中選擇了正確類型的流量,例如gRPC、HTTP、TCP。未選中這些選項可能導致無法查看全部流量信息。
命名空間限制
在網格拓撲中,確認是否選擇了正確的命名空間,部分流量可能位于未被選擇的命名空間內。
數據采集與更新
確認Prometheus實例的指標采集是否正常,ASM可能只顯示已成功收集到的數據,部分流量數據可能由于各種原因(如延遲、丟包等)未能及時顯示在拓撲圖上。
確認集群中的所有工作負載是否都注入了網格代理,只有注入了網格代理的工作負載會上報流量監控指標數據。
確認網格拓撲頁面是否實時刷新,或者嘗試手動刷新以獲取最新的流量數據。
Sidecar代理配置、流量配置影響
某些流量可能受到ASM內的Sidecar代理配置或Sidecar代理流量配置的影響,導致其不通過網格代理因而無法被觀測。檢查Sidecar代理配置中是否配置了按端口或地址來禁用Sidecar代理,或者Sidecar流量配置中是否配置了正確的出入站流量目標。
相關文檔
如果您發現某些請求耗時異常,可以通過訪問日志定位請求異常延遲的原因。具體操作,請參見通過訪問日志定位請求異常延遲的原因。
如果您需要在客戶端對一個目標服務的訪問過程中,使流量盡可能的在同一個可用區內流轉,以保證服務間的調用延遲最低,可以使用同可用區優先路由功能。具體操作,請參見使用網格拓撲觀測同可用區優先路由。
如果您需要觀測多個集群的流量拓撲,可以使用托管模式的網格拓撲功能。整個網格實例只需要部署一個網格拓撲服務,減少配置的工作量。具體操作,請參見開啟托管模式的網格拓撲。
Sidecar的請求攔截機制可能會干擾網格內應用的健康檢查,導致檢查失敗。您可以啟用健康檢查重定向,以確保檢查正確執行。具體操作,請參見為網格內應用開啟健康檢查重定向。