叢集監控指南

總覽

本指南提供 Apigee Hybrid 部署作業的監控指南,說明監控內容和監控方式。 適用於混合式叢集管理員和機構管理員。

如果您是 Google Cloud 監控服務的新手,請參閱 Google Cloud Monitoring 說明文件,瞭解如何使用指標探索器建立圖表,以及快訊運作方式

Apigee Hybrid 叢集提供服務水準指標 (SLI) 指標,協助您瞭解應用程式和系統服務在任何時間的效能。如要查看完整清單,請參閱「可用指標」。

Google Cloud Monitoring 會使用「資源類型」識別每個 SLI 指標。所有 Apigee Hybrid 指標都使用三種常見的資源類型。

資源類型具有適用於所有相關聯指標的通用標籤。舉例來說,除了指標標籤外,所有 k8s_container 資源類型都有 cluster_namepod_namecontainer_name 標籤可供使用。您應結合使用資源類型標籤和指標標籤,有效監控叢集的健康狀態和效能。

快訊門檻:在理想情況下,快訊門檻應該很明顯,且提供的文件會列出應觸發快訊的值。實際上,Apigee 較難定義可接受的效能,以及服務和基礎架構的危險資源用量。警報門檻值會因特定流量模式和 SLO/SLA 協議而異。

警報門檻最佳化和判斷是持續進行的程序,因為門檻可能會隨著服務和基礎架構的使用情形而變動。使用「警告」和「重大」門檻來傳送通知和快訊。

  • 正常:值低於警告門檻
  • 令人擔憂:值大於警告門檻,但小於嚴重門檻
  • 嚴重:值 > 嚴重門檻

客戶應使用提供的工具 (例如可透過下列 MQL 建立的 Cloud Monitoring 資訊主頁,或 Apigee 的 Analytics) 判斷最佳門檻,找出「正常」狀態,然後據此調整快訊門檻。

混合式叢集監控可分為四個一般群組,例如流量資料庫Apigee 控制層基礎架構監控。以下各節將詳細說明這些群組:

流量

Apigee Proxy 和 Target SLI 指標會提供 API Proxy 和目標的要求/回應計數和延遲時間。Apigee 政策延遲 SLI 指標會提供政策回應延遲。 這些 SLI 指標涵蓋 Apigee API 流量的監控範圍。

要求比率

Proxy 要求數量

使用案例:使用 proxyv2/request_count 監控 Proxy 要求計數。「proxyv2/request_count」圖表會顯示 Proxy 的要求率。這張圖表有助於找出接收較高要求率的 Proxy、要求率模式,以及特定 Proxy 的要求呼叫次數是否出現異常尖峰。API 流量若出現異常尖峰,可能表示 API Proxy 遭到機器人攻擊,因此有安全疑慮。同樣地,整體流量大幅下降可能表示用戶端或 Apigee 上游元件的連線有問題。

資源類型 ProxyV2
指標 proxyv2/request_count
分組依據 方法和所有 ProxyV2 資源類型標籤
集結網站 sum
快訊考量 例如「異常 request_count 尖峰/下降」快訊
警告門檻
Cloud Monitoring 資訊主頁 MQL 查詢
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/request_count'
| align rate(1m)
| every 1m
| group_by [metric.method],
  [value_request_count_aggregate: aggregate(value.request_count)]

目標要求計數

應用實例:使用 targetv2/request_count 監控 Apigee 執行階段目標要求計數。targetv2/request_count 圖表會顯示 Apigee 目標收到的要求率。這張圖表有助於瞭解哪個目標的請求率較高、請求率模式,以及特定目標的請求呼叫是否有任何異常尖峰。

資源類型 TargetV2
指標 targetv2/request_count
分組依據 方法和所有 TargetV2 資源類型標籤
集結網站 sum
快訊考量 例如「異常 request_count 尖峰/下降」快訊
警告門檻
Cloud Monitoring 資訊主頁 MQL 查詢
fetch apigee.googleapis.com/TargetV2
| metric 'apigee.googleapis.com/targetv2/request_count'
| align rate(1m)
| every 1m
| group_by [metric.method, metric.type, metric.endpoint],
  [value_request_count_aggregate: aggregate(value.request_count)]

錯誤率

Proxy 錯誤回應計數

用途:使用 proxyv2/response_count 監控 Proxy 錯誤回應率。proxyv2/response_count 圖表會顯示 API Proxy 的要求率。這張圖表有助於瞭解哪個 Proxy 的要求錯誤率較高,或是特定 Proxy 的要求呼叫次數是否出現任何異常尖峰。

資源類型 ProxyV2
指標 proxyv2/response_count
篩選依據 response_code != 200

使用規則運算式排除所有 2xx 和 3xx response_code,例如:

"response_code !=~ 1.*| 2.*|3.*"
分組依據 methodresponse_codefault_codefault_sourceapigee_fault, 以及所有 ProxyV2 資源類型標籤
集結網站 sum
快訊考量 Proxy 回應錯誤率:回應錯誤總數 / 回應總數。
  • 回應錯誤總數 = proxyv2/response_count (篩選條件為 response_code != 200) 的總和
  • 總回應數 = proxyv2/response_count 的總和
警告門檻 這取決於安裝作業的服務水準目標。正式版和非正式版安裝的門檻可能不同。舉例來說,在正式環境中,如果 Proxy 回應 500 錯誤率在 5 分鐘內達到 5%,則觸發事件通知。
Cloud Monitoring 資訊主頁 MQL 查詢
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/response_count'
| filter (metric.response_code != '200')
| align rate(1m)
| every 1m
| group_by
  [metric.method, metric.response_code, metric.fault_code,
   metric.fault_source, metric.apigee_fault],
  [value_response_count_aggregate: aggregate(value.response_count)]
Google Cloud 作業快訊政策 MQL 範例
fetch apigee.googleapis.com/ProxyV2::apigee.googleapis.com/proxyv2/response_count
| {
   filter (metric.response_code == '500')
   ;
   ident
}
| group_by drop[metric.response_code ], sliding(5m), .sum
| ratio
| scale '%'
| every (30s)
| condition val() > 5'%'

目標錯誤回應數量

用途:使用 targetv2/response_count 監控 API 目標錯誤回應率。targetv2/response_count 圖表會顯示 API Target 的要求率。這張圖表有助於找出要求率較高的目標,或要求呼叫中任何異常的錯誤高峰。

資源類型 TargetV2
指標 targetv2/response_count
篩選依據 response_code != 200

使用規則運算式排除所有 2xx 和 3xx response_code,例如:

"response_code !=~ 1.*| 2.*|3.*"
分組依據 方法和所有 TargetV2 資源類型標籤
集結網站 sum
快訊考量 Proxy 回應錯誤率,例如:回應錯誤總數 / 回應總數。
  • 回應錯誤總數 = targetv2/response_count (篩選條件為 response_code != 200) 的總和
  • 回應總數 = targetv2/response_count 的總和
警告門檻 取決於安裝作業的服務水準目標。舉例來說:在正式環境中,如果目標回應錯誤率在 3 分鐘內達到 5%,則觸發事件通知。
Cloud Monitoring 資訊主頁 MQL 查詢
fetch apigee.googleapis.com/TargetV2
| metric 'apigee.googleapis.com/targetv2/response_count'
| filter (metric.response_code != '200')
| align rate(1m)
| every 1m
| group_by
  [metric.method, metric.type, metric.endpoint,
   metric.response_code],
  [value_response_count_aggregate: aggregate(value.response_count)]

延遲

Proxy 延遲百分位數

用途:使用 proxyv2/latencies_percentile 監控所有 API Proxy 回應要求的延遲百分位數 (第 50、90、95 和 99 個百分位數)。proxyv2/latencies_percentile 圖表有助於找出 Apigee API Proxy 的延遲時間,進而瞭解整體 API Proxy 要求延遲時間。

資源類型 ProxyV2
指標 proxyv2/latencies_percentile
篩選依據 percentile = p99
分組依據 方法、百分位數和所有 ProxyV2 資源類型標籤
集結網站 p99 (第 99 個百分位數)
快訊考量 p99 latencies_percentile 的值偏高。
警告門檻 取決於安裝作業的服務水準目標。例如:針對生產環境觸發事件通知,如果 Proxy p99 延遲百分位數的值為 5 秒 (5 分鐘)。
Cloud Monitoring 資訊主頁 MQL 查詢
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.method, metric.percentile],
  [value_latencies_percentile_mean_percentile:
     percentile(value_latencies_percentile_mean, 99)]

目標延遲百分位數

用途:使用 targetv2/latencies_percentile 監控所有 API Proxy 目標對要求的延遲百分位數 (第 50、90、95 和 99 個百分位數)。targetv2/latencies_percentile 圖表會顯示 Apigee API Proxy 目標回應要求所花費的總時間。這個值不含 Apigee API 代理程式的額外負荷。

資源類型 TargetV2
指標 targetv2/latencies_percentile
篩選依據 percentile = p99
分組依據 方法、百分位數和所有 TargetV2 資源類型標籤
集結網站 p99 (第 99 個百分位數)
快訊考量 p99 latencies_percentile 的值偏高。
警告門檻 取決於安裝作業的服務水準目標。舉例來說:在正式環境中,如果目標 p99 延遲百分位數的值為 5 分鐘內 5 秒,則觸發事件通知。
Cloud Monitoring 資訊主頁 MQL 查詢
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.method, metric.percentile],
  [value_latencies_percentile_mean_percentile:
     percentile(value_latencies_percentile_mean, 99)]

政策延遲百分位數

用途:使用 policyv2/latencies_percentile 監控所有 Apigee 政策的處理延遲時間百分位數 (第 50、90、95 和 99 個百分位數)。policyv2/latencies_percentile 圖表有助於找出 Apigee API 政策中的延遲時間,進而瞭解客戶整體 API Proxy 要求延遲時間。

資源類型 ProxyV2
指標 proxyv2/latencies_percentile
篩選依據 percentile = p99
分組依據 方法、百分位數和所有 ProxyV2 資源類型標籤
集結網站 p99 (第 99 個百分位數)
快訊考量 p99 latencies_percentile 的值偏高。
警告門檻 取決於安裝作業的服務水準目標。例如:針對生產環境觸發事件通知,如果 Proxy p99 延遲百分位數的值為 5 秒 (5 分鐘)。
Cloud Monitoring 資訊主頁 MQL 查詢
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/policyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.policy_name, metric.percentile],
  [value_latencies_percentile_mean_aggregate:
     aggregate(value_latencies_percentile_mean)]

資料庫

Cassandra

Apigee Cassandra 資料庫服務有多項 Cassandra SLI 指標。這些 SLI 指標可提供 Apigee Cassandra 服務的完整監控資訊。至少應監控用戶端的讀取和寫入要求延遲時間,以及 Cassandra 資源用量 (CPU、記憶體和磁碟區),確保 Cassandra 服務運作正常。

Cassandra 讀取要求率

用途cassandra/clientrequest_rate (範圍為 Read) SLI 指標可深入瞭解 Cassandra 服務在任何特定時間的讀取要求平均速率。這項指標有助於瞭解客戶讀取要求活動層級的趨勢。

資源類型 k8s_container
指標 cassandra/clientrequest_rate
篩選依據 scope = Readunit = OneMinuteRate
分組依據 範圍單位和所有 k8s_container 資源類型標籤
集結網站 sum
快訊考量 如果用戶端查詢模式有任何潛在問題或重大變化,例如讀取要求率突然大幅增加或減少。
警告門檻
Cloud Monitoring 資訊主頁 MQL 查詢
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Read' && metric.unit == 'OneMinuteRate')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Cassandra 寫入要求率

用途cassandra/clientrequest_rate (scope=Write) SLI 指標可提供 Cassandra 服務在任何特定時間的寫入要求平均速率。這項指標有助於瞭解用戶寫入要求活動層級的趨勢。

資源類型 k8s_container
指標 cassandra/clientrequest_rate
篩選依據 scope = Readunit = OneMinuteRate
分組依據 範圍單位和所有 k8s_container 資源類型標籤
集結網站 sum
快訊考量 用戶查詢模式可能出現問題或重大變化,例如寫入要求突然意外暴增或暴跌,需要進一步調查。
警告門檻
Cloud Monitoring 資訊主頁 MQL 查詢
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Write' && metric.unit == 'OneMinuteRate')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Cassandra 讀取要求延遲

用途cassandra/clientrequest_latency (範圍為 Read) SLI 指標會提供 Cassandra 服務的讀取要求延遲時間 (第 99 個、第 95 個或第 75 個百分位數)。這些指標有助於全面瞭解 Cassandra 效能,並指出使用模式的任何變化,或隨著時間推移而顯現的問題。

資源類型 k8s_container
指標 cassandra/clientrequest_latency
篩選依據 scope = Readunit = 99thPercentile
分組依據 範圍單位和所有 k8s_container 資源類型標籤
集結網站 sum
快訊考量 如果讀取要求延遲時間 SLI 持續顯示第 99 個百分位數的延遲時間趨勢向上。
警告門檻 視 Cassandra 服務的 SLO 而定。舉例來說:在正式環境中,如果第 99 個百分位數的讀取 clientrequest_latency 值在 3 分鐘內達到 5 秒,則觸發事件通知
Cloud Monitoring 資訊主頁 MQL 查詢
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Read' && metric.unit == '99thPercentile')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Cassandra 寫入要求延遲

用途cassandra/clientrequest_latency (範圍為 Write) SLI 指標會提供 Cassandra 服務寫入要求延遲時間 (第 99 個百分位數、第 95 個百分位數或第 75 個百分位數)。這些指標有助於全面瞭解 Cassandra 效能,並指出使用模式的任何變化,或一段時間後顯現的問題。

資源類型 k8s_container
指標 cassandra/clientrequest_latency
篩選依據 scope = Writeunit = 99thPercentile
分組依據 範圍單位和所有 k8s_container 資源類型標籤
集結網站 sum
快訊考量 如果寫入要求延遲時間 SLI 持續顯示第 99 個百分位數的延遲時間趨勢向上。
警告門檻 視 Cassandra 服務的 SLO 而定。舉例來說,在正式環境中,如果第 99 個百分位數的寫入 clientrequest_latency 值在 3 分鐘內達到 5 秒,則觸發事件通知
Cloud Monitoring 資訊主頁 MQL 查詢
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Write' && metric.unit == '99thPercentile')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Apigee 控制層

Apigee Synchronizer 服務 SLI 指標會提供 Apigee 控制層和 Hybrid 執行階段層之間的要求和回應計數,以及延遲時間。在執行階段平面中執行的同步器執行個體,應定期輪詢控制平面、下載合約,並提供給本機執行階段執行個體。

要求比率

上游要求計數

用途upstream/request_count 指標會指出 Synchronizer 服務向 Apigee 控制平面發出的要求數。

資源類型 k8s_container
指標 upstream/request_count
篩選依據 container_name = apigee-synchronizertype = CONTRACT
分組依據 methodtypecontainer_name,以及所有 k8s_container 資源類型標籤
集結網站 sum
快訊考量 用於流量異常狀況,例如 request_count 異常暴增或暴跌警報。
警告門檻
Cloud Monitoring 資訊主頁 MQL 查詢
fetch k8s_container
| metric 'apigee.googleapis.com/upstream/request_count'
| filter
  (resource.container_name == 'apigee-synchronizer')
  && (metric.type == 'CONTRACT')
| align rate(1m)
| every 1m
| group_by [metric.method, metric.type, resource.container_name],
  [value_request_count_aggregate: aggregate(value.request_count)]

錯誤率

上游回應數

用途upstream/response_count SLI 指標會提供 Synchronizer 服務從 Apigee 控制層收到的回應數量。這張圖表有助於找出 Apigee Hybrid 執行階段層與控制平面之間的連線或設定問題。

資源類型 k8s_container
指標 upstream/request_count
篩選依據 methodresponse_typecontainer_name,以及所有 k8s_container 資源類型標籤
分組依據
集結網站 sum
快訊考量 如果上游/response_count 指標發生錯誤,且 Apigee 控制平面傳回的不是 200 狀態碼,則需要進一步調查這些錯誤。
警告門檻 視 Cassandra 服務的 SLO 而定。舉例來說,在生產環境中,如果 Synchronizer 每三分鐘發生超過一個 response_code 錯誤,請觸發事件通知。
Cloud Monitoring 資訊主頁 MQL 查詢
fetch k8s_container
| metric 'apigee.googleapis.com/upstream/response_count'
| filter
  (resource.container_name == 'apigee-synchronizer')
  && (metric.response_code != '200' && metric.type == 'CONTRACT')
| align rate(1m)
| every 1m
| group_by
  [metric.method, metric.response_code, metric.type, resource.container_name],
  [value_response_count_aggregate: aggregate(value.response_count)]

基礎架構

GKE 和其他 Kubernetes 平台提供系統層級的 SLI 指標。您可以篩選及分組 SLI 指標標籤,監控特定容器及其資源用量。如要監控 Apigee Runtime 叢集基礎架構的健康狀態和可用性,叢集管理員可以監控容器和 Pod 的常見資源用量,例如 CPU、記憶體、磁碟和容器重新啟動次數。如要進一步瞭解可用的指標和標籤,請參閱 GKE 說明文件

下表列出部分服務,以及您可以監控的每個服務容器。

服務名稱 容器名稱
Cassandra apigee-cassandra
訊息處理器(MP) apigee-runtime
Synchronizer apigee-synchronizer
遙測 apigee-prometheus-app
apigee-prometheus-proxy
apigee-prometheus-agg
apigee-stackdriver-exporter

容器 / Pod

重新啟動次數

用途kubernetes.io/container/restart_count 系統 SLI 指標會提供容器的重新啟動次數。這張圖表有助於判斷容器是否經常當機/重新啟動。您可以透過特定服務容器的指標標籤,篩除特定服務容器,進行監控。

以下顯示如何使用 Cassandra 容器的 kubernetes.io/container/restart_count 指標。您可以在上表中的任何容器使用這項指標。

資源類型 k8s_container
指標 kubernetes.io/container/restart_count
篩選依據 namespace_name = apigeecontainer_name =~ .*cassandra.*
分組依據 cluster_namenamespace_namepod_namecontainer_name,以及所有 k8s_container 資源類型標籤
集結網站 sum
快訊考量 如果容器經常重新啟動,則需要進一步調查根本原因。容器可能因多種原因重新啟動,例如 OOMKilled、 資料磁碟已滿和設定問題等。
警告門檻 這取決於安裝作業的服務水準目標。舉例來說,如果容器在 30 分鐘內重新啟動超過 5 次,則觸發正式版事件通知。
Cloud Monitoring 資訊主頁 MQL 查詢
fetch k8s_container
| metric 'kubernetes.io/container/restart_count'
| filter
  (resource.container_name =~ '.*cassandra.*'
   && resource.namespace_name == 'apigee')
| align rate(1m)
| every 1m
| group_by
  [resource.cluster_name, resource.namespace_name, resource.pod_name,
   resource.container_name],
  [value_restart_count_aggregate: aggregate(value.restart_count)]