全部產品
Search
文件中心

Alibaba Cloud Service Mesh:在ASM中自訂監控指標

更新時間:Jun 30, 2024

Service MeshASM開啟採集Prometheus監控指標後,Envoy會輸出預設的監控指標。ASM支援使用自訂Metric的功能針對性輸出監控指標,支援自訂網格層級、命名空間層級、工作負載層級的監控指標。本文介紹如何在Service MeshASM中自訂監控指標。

前提條件

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

背景資訊

Istio會預設產生監控指標,每個監控指標包含標籤。以下介紹Istio會產生的指標:

  • 對於HTTP、HTTP/2和GRPC流量,Istio會產生以下指標:

    Request Count (istio_requests_total): This is a COUNTER incremented for every request handled by an Istio proxy.
    Request Duration (istio_request_duration_milliseconds): This is a DISTRIBUTION which measures the duration of requests.
    Request Size (istio_request_bytes): This is a DISTRIBUTION which measures HTTP request body sizes.
    Response Size (istio_response_bytes): This is a DISTRIBUTION which measures HTTP response body sizes.
    gRPC Request Message Count (istio_request_messages_total): This is a COUNTER incremented for every gRPC message sent from a client.
    gRPC Response Message Count (istio_response_messages_total): This is a COUNTER incremented for every gRPC message sent from a server.
  • 對於TCP流量,Istio產生以下指標:

    Tcp Bytes Sent (istio_tcp_sent_bytes_total): This is a COUNTER which measures the size of total bytes sent during response in case of a TCP connection.
    Tcp Bytes Received (istio_tcp_received_bytes_total): This is a COUNTER which measures the size of total bytes received during request in case of a TCP connection.
    Tcp Connections Opened (istio_tcp_connections_opened_total): This is a COUNTER incremented for every opened connection.
    Tcp Connections Closed (istio_tcp_connections_closed_total): This is a COUNTER incremented for every closed connection.

每個指標都會包含標籤,以下為每個Istio指標預設包含的標籤:

DefaultStatTags=["reporter","source_namespace","source_workload","source_workload_namespace","source_principal","source_app","source_version","source_app","source_version","source_cluster",destination_namespace","destination_principal","destination_app","destination_version","destination_service","destination_service_name","destination_service_namespace","destination_port","destination_cluster","request_protocol","request_operation","request_host","response_flags","grpc_response_status","connection_security_policy","source_canonical_service","destination_canonical_service","source_canonical_revision","destination_canonical_revision"]

標籤說明

標籤

說明

reporter

請求的上報者,不同的上報者標籤值不同:

  • 如果上報者來自伺服器Istio代理,則標籤值為destination

  • 如果上報者來自用戶端Istio代理或網關,則標籤值為source

source_workload

源工作負載的名稱。如果沒有採集到標籤值,則標籤值為unknown

source_workload_namespace

源工作負載的名稱空間。如果沒有採集到標籤值,則標籤值為unknown

source_principal

流量源的對等主體。只有建立了對等身分識別驗證時,才可以採集到該標籤的值。

source_app

根據源工作負載的應用程式標籤標識源應用程式。如果沒有採集到標籤值,則標籤值為unknown

source_version

源工作負載的版本。如果沒有採集到標籤值,則標籤值為unknown

source_cluster

源工作負載的叢集。

destination_namespace

目標工作負載的名稱空間。如果沒有採集到標籤值,則標籤值為unknown

destination_workload

目標工作負載的名稱。如果沒有採集到標籤值,則標籤值為unknown

destination_workload_namespace

目標工作負載的名稱空間。如果沒有採集到標籤值,則標籤值為unknown

destination_principal

通訊目的地的對等主體。只有建立了對等身分識別驗證時,才可以採集到該標籤的值。

destination_app

根據目標工作負載的應用程式標籤標識目標應用程式。如果沒有採集到標籤值,則標籤值為unknown

destination_version

目標工作負載的版本。如果沒有採集到標籤值,則標籤值為unknown

destination_service

負責傳入請求的目標服務主機。

destination_service_name

目標服務名稱。

destination_service_namespace

目標服務的名稱空間。

destination_port

目標連接埠。

destination_cluster

目標工作負載的叢集。

request_protocol

請求的協議。

request_operation

請求的操作。

request_host

請求的主機。

response_flags

有關來自代理的響應或串連的其它詳細資料。

grpc_response_status

GRPC返回狀態。

connection_security_policy

請求的服務身分識別驗證策略。

操作步驟

ASM執行個體版本為1.15.3.65以下

  1. 可選:開啟Prometheus監控。

    說明

    如果您已開啟Prometheus監控,無需執行此步驟。

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

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

    3. 基本資料頁面,單擊右上方的功能設定

    4. 功能設定更新面板,選中開啟採集 Prometheus 監控指標,按需選擇開啟方式,然後單擊確定

  2. 自訂指標。

    1. 在網格管理頁面左側導覽列,選擇可觀測性管理中心 > 自訂Metrics,然後單擊建立

    2. 建立頁面,進行相關配置,然後單擊建立

      配置項

      說明

      匹配標籤

      配置名稱為標籤的名稱,為應用的名稱。ASM將會根據配置的值匹配應用,自訂指標僅對該應用生效。

      inboundSidecar

      單擊inboundSidecar,然後單擊新增指標,配置入口流量的自訂標籤。

      • 指標名稱:配置為空白,表示對所有指標生效。

      • 指標維度:單擊新增指標維度,配置標籤運算式

      • 刪除指標緯度的標籤:配置需要刪除指標維度標籤。

      outboundSidecar

      單擊outboundSidecar,然後單擊新增指標,配置出口流量的自訂標籤。

      • 指標名稱:配置為空白,表示對所有指標生效。

      • 指標維度:單擊新增指標維度,配置標籤運算式

      • 刪除指標緯度的標籤:配置需要刪除指標維度標籤。

      gateway

      單擊gateway,然後單擊新增指標,配置網關的自訂標籤。

      • 指標名稱:配置為空白,表示對所有指標生效。

      • 指標維度:單擊新增指標維度,配置標籤運算式

      • 刪除指標緯度的標籤:配置需要刪除指標維度標籤。

      配置inboundSidecar

      說明

      如果您只配置了inboundSidecar,沒有配置outboundSidecargateway,表示僅入口流量採用自訂標籤,出口流量和網關仍然使用預設的方式產生指標。

ASM執行個體版本為1.15.3.65及以上,1.17.2.35以下

ASM對原有的自訂Metrics頁面進行了升級,更名為監控指標,提供更便捷的UI介面,提高您的配置效率。使用此功能需要您的ASM執行個體版本為v1.15.3.65-g97cc18dd-aliyun及以上。關於升級執行個體的具體操作,請參見升級ASM執行個體

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

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

  3. 監控指標頁面,單擊指標設定頁簽,按需配置全域自訂指標。

    • 配置全域指標

      ASM預設提供了一些全域指標,預設為開啟狀態。您可以按需選擇是否啟用相關指標,或對指標的維度進行修改。關於指標的說明,請參見指標說明

      操作

      說明

      開啟或關閉全域指標

      • 開啟全域指標:單擊全域頁簽,在目標指標右側,選中CLIENT側指標SERVER側指標列下的啟用,然後單擊儲存

      • 關閉全域指標:單擊全域頁簽,在目標指標右側,取消選中CLIENT側指標SERVER側指標列下的啟用,然後單擊儲存

      修改指標維度

      1. 單擊全域頁簽,在目標指標右側,單擊CLIENT側指標SERVER側指標列下的編輯維度

      2. 自訂CLIENT 維度配置對話方塊,按需選中目標維度,單擊確認,然後單擊儲存

      全域指標

    • 配置自訂指標

      單擊自訂頁簽,單擊建立,進行相關配置,然後在頁面下方,單擊建立。關於指標的說明,請參見指標說明

      配置項

      說明

      命名空間

      選擇自訂監控指標生效的命名空間。

      名稱

      輸入自訂標籤的名稱。

      工作負載選擇

      單擊新增匹配標籤,配置標籤的名稱和工作負載的名稱。ASM將會根據配置項匹配應用,自訂指標僅對該應用生效。

      指標設定

      ASM預設提供了一些全域指標,預設為開啟狀態。您可以選擇是否啟用相關指標,或對指標的維度進行修改。

      • 開啟或關閉全域指標:

        • 開啟全域指標:在目標指標右側,選中CLIENT側指標SERVER側指標列下的啟用

        • 關閉全域指標:在目標指標右側,取消選中CLIENT側指標SERVER側指標列下的啟用

      • 修改維度:

        1. 在目標指標右側,單擊CLIENT側指標SERVER側指標列下的編輯維度

        2. 自訂CLIENT 維度配置對話方塊,按需選中目標維度,然後單擊確認

      自訂指標

重要
  • 通過選取器可以選擇一個命名空間內的單個工作負載的指標配置。該選取器支援基於標籤選擇工作負載。

  • 同一命名空間下,以下配置無效:

    • 使用選取器,為同一個工作負載建立多個自訂指標(Telemetry CR)。

    • 建立多個自訂指標,但未指定選取器。

更多資訊,請參見Workload Selection

ASM執行個體版本為1.17.2.35及以上

具體操作,請參見可觀測配置

指標說明

ASM監控指標的說明如下。更多資訊,請參見MetricSelector.IstioMetric

說明

ASM網關僅支援匯出CLIENT側指標,Sidecar可以匯出CLIENT側和SERVER側指標。

指標

說明

在Prometheus下對應的指標

ALL_METRICS

表示所有Istio預設指標。

-

REQUEST_COUNT

為HTTP、HTTP/2和GRPC流量產生的應用程式請求計數器。

istio_requests_total

REQUEST_DURATION

為HTTP、HTTP/2和GRPC流量產生的請求期間長條圖。

istio_request_duration_milliseconds

REQUEST_SIZE

為HTTP、HTTP/2和GRPC流量產生的請求Body大小的長條圖。

istio_request_bytes

RESPONSE_SIZE

為HTTP、HTTP/2和GRPC流量產生的響應Body大小的長條圖。

istio_response_bytes

TCP_OPENED_CONNECTIONS

在工作負載的生命週期內開啟的TCP串連計數器。

istio_tcp_connections_opened_total

TCP_CLOSED_CONNECTIONS

在工作負載的生命週期內關閉的TCP串連計數器。

istio_tcp_connections_closed_total

TCP_SENT_BYTES

在通過TCP串連進行響應期間發送的位元組計數器。

istio_tcp_sent_bytes_total

TCP_RECEIVED_BYTES

通過TCP串連請求期間接收的位元組數。

istio_tcp_received_bytes_total

GRPC_REQUEST_MESSAGES

從用戶端發送的每條gRPC訊息,計數器都會遞增。

istio_request_messages_total

GRPC_RESPONSE_MESSAGES

從伺服器發送的每條gRPC訊息,計數器都會遞增。

istio_response_messages_total