總覽
本指南提供 Apigee Hybrid 部署作業的監控指南,說明監控內容和監控方式。 適用於混合式叢集管理員和機構管理員。
如果您是 Google Cloud 監控服務的新手,請參閱 Google Cloud Monitoring 說明文件,瞭解如何使用指標探索器建立圖表,以及快訊運作方式。
Apigee Hybrid 叢集提供服務水準指標 (SLI) 指標,協助您瞭解應用程式和系統服務在任何時間的效能。如要查看完整清單,請參閱「可用指標」。
Google Cloud Monitoring 會使用「資源類型」識別每個 SLI 指標。所有 Apigee Hybrid 指標都使用三種常見的資源類型。
k8s_container適用於系統層級指標。Proxy適用於 Apigee API Proxy 指標。Target適用於 Apigee API 目標指標
資源類型具有適用於所有相關聯指標的通用標籤。舉例來說,除了指標標籤外,所有 k8s_container 資源類型都有 cluster_name、pod_name 和 container_name 標籤可供使用。您應結合使用資源類型標籤和指標標籤,有效監控叢集的健康狀態和效能。
快訊門檻:在理想情況下,快訊門檻應該很明顯,且提供的文件會列出應觸發快訊的值。實際上,Apigee 較難定義可接受的效能,以及服務和基礎架構的危險資源用量。警報門檻值會因特定流量模式和 SLO/SLA 協議而異。
警報門檻最佳化和判斷是持續進行的程序,因為門檻可能會隨著服務和基礎架構的使用情形而變動。使用「警告」和「重大」門檻來傳送通知和快訊。
- 正常:值低於警告門檻。
- 令人擔憂:值大於警告門檻,但小於嚴重門檻。
- 嚴重:值 > 嚴重門檻。
客戶應使用提供的工具 (例如可透過下列 MQL 建立的 Cloud Monitoring 資訊主頁,或 Apigee 的 Analytics) 判斷最佳門檻,找出「正常」狀態,然後據此調整快訊門檻。
混合式叢集監控可分為四個一般群組,例如流量、資料庫、Apigee 控制層和基礎架構監控。以下各節將詳細說明這些群組:
流量
Apigee Proxy 和 Target SLI 指標會提供 API Proxy 和目標的要求/回應計數和延遲時間。Apigee 政策延遲 SLI 指標會提供政策回應延遲。 這些 SLI 指標涵蓋 Apigee API 流量的監控範圍。
要求比率
Proxy 要求數量
用途:使用 proxy/request_count 監控 Proxy 要求計數。「proxy/request_count」圖表會顯示 Proxy 的要求率。這張圖表有助於找出接收較高要求率的 Proxy、要求率模式,以及特定 Proxy 的要求呼叫次數是否出現異常尖峰。API 流量若出現異常尖峰,可能表示 API Proxy 遭到機器人攻擊,因此有安全疑慮。同樣地,整體流量大幅下降可能表示用戶端或 Apigee 上游元件的連線有問題。
| 資源類型 | Proxy |
| 指標 | proxy/request_count |
| 分組依據 | 方法和所有 Proxy 資源類型標籤 |
| 集結網站 | sum |
| 快訊考量 | 例如「異常 request_count 尖峰/下降」快訊 |
| 警告門檻 | 無 |
Cloud Monitoring 資訊主頁 MQL 查詢:
fetch apigee.googleapis.com/Proxy | metric 'apigee.googleapis.com/proxy/request_count' | align rate(1m) | every 1m | group_by [metric.method], [value_request_count_aggregate: aggregate(value.request_count)] |
|
目標要求計數
應用實例:使用 target/request_count 監控 Apigee 執行階段目標要求計數。「目標/要求計數」圖表會顯示 Apigee 目標收到的要求比率。這張圖表有助於瞭解哪個目標的請求率較高、請求率模式,以及特定目標的請求呼叫是否有任何異常尖峰。
| 資源類型 | 目標 |
| 指標 | target/request_count |
| 分組依據 | 方法和所有目標 資源類型標籤 |
| 集結網站 | sum |
| 快訊考量 | 例如「異常 request_count 尖峰/下降」快訊 |
| 警告門檻 | 無 |
Cloud Monitoring 資訊主頁 MQL 查詢:
fetch apigee.googleapis.com/Target | metric 'apigee.googleapis.com/target/request_count' | align rate(1m) | every 1m | group_by [metric.method, metric.type, metric.endpoint], [value_request_count_aggregate: aggregate(value.request_count)] |
|
錯誤率
Proxy 錯誤回應計數
用途:使用 proxy/response_count 監控 Proxy 錯誤回應率。Proxy/response_count 圖表會顯示 API Proxy 的要求率。這張圖表有助於瞭解哪個 Proxy 的要求錯誤率較高,或是特定 Proxy 的要求呼叫次數是否出現任何異常尖峰。
| 資源類型 | Proxy |
| 指標 | proxy/response_count |
| 篩選依據 | response_code != 200
|
| 分組依據 | method、response_code、fault_code、fault_source、apigee_fault,以及所有 Proxy 資源類型標籤 |
| 集結網站 | sum |
| 快訊考量 | Proxy 回應錯誤率:回應錯誤總數 / 回應總數。
|
| 警告門檻 | 這取決於安裝作業的服務水準目標。正式版和非正式版安裝的門檻可能不同。舉例來說,在正式環境中,如果 Proxy 回應 500 錯誤率在 5 分鐘內達到 5%,則觸發事件通知。 |
Cloud Monitoring 資訊主頁 MQL 查詢:
fetch apigee.googleapis.com/Proxy | metric 'apigee.googleapis.com/proxy/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/Proxy::apigee.googleapis.com/proxy/response_count
| {
filter (metric.response_code == 500)
;
ident
}
| group_by drop[metric.response_code ], sliding(5m), .sum
| ratio
| scale '%'
| every (30s)
| condition val() > 5'%'
|
|
目標錯誤回應數量
用途:使用 target/response_count 監控 API 目標錯誤回應率。「目標/回應計數」圖表會顯示 API 目標的要求率。這張圖表有助於找出要求率較高的目標,或要求呼叫中任何異常的錯誤高峰。
| 資源類型 | 目標 |
| 指標 | target/response_count |
| 篩選依據 | response_code != 200
|
| 分組依據 | 方法和所有目標 資源類型標籤 |
| 集結網站 | sum |
| 快訊考量 | Proxy 回應錯誤率,例如:回應錯誤總數 / 回應總數。
|
| 警告門檻 | 取決於安裝作業的服務水準目標。舉例來說:在正式環境中,如果目標回應錯誤率在 3 分鐘內達到 5%,則觸發事件通知。 |
Cloud Monitoring 資訊主頁 MQL 查詢:
fetch apigee.googleapis.com/Target | metric 'apigee.googleapis.com/target/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 延遲
用途:使用 proxy/latencies 監控所有 API Proxy 對要求的延遲時間。您可以使用 Proxy/延遲時間圖表,找出 Apigee API Proxy 的延遲時間,瞭解整體 API Proxy 要求延遲時間。
| 資源類型 | Proxy |
| 指標 | proxy/latencies |
| 分組依據 | 方法和所有 Proxy 資源類型標籤 |
| 集結網站 | p99 (第 99 個百分位數) |
| 快訊考量 | 第 99 個百分位數的延遲時間值偏高。 |
| 警告門檻 | 取決於安裝作業的服務水準目標。例如:在正式環境中,如果 Proxy p99 延遲百分位數的值在 5 分鐘內為 5 秒,則觸發事件通知。 |
Cloud Monitoring 資訊主頁 MQL 查詢:
fetch apigee.googleapis.com/Proxy
| metric 'apigee.googleapis.com/proxy/latencies'
| align delta(1m)
| every 1m
| group_by [metric.method],
[value_latencies_percentile: percentile(value.latencies, 99)]
|
|
目標延遲
用途:使用 target/latencies 監控所有 API Proxy 對要求的目標回應延遲時間。目標/延遲時間圖表會顯示 Apigee API Proxy 目標回應要求所花費的總時間。這個值不含 Apigee API 代理程式的額外負荷。
| 資源類型 | 目標 |
| 指標 | 目標/延遲 |
| 分組依據 | 方法、百分位數和所有目標 資源類型標籤 |
| 集結網站 | p99 (第 99 個百分位數) |
| 快訊考量 | 第 99 個百分位數的延遲時間值偏高。 |
| 警告門檻 | 取決於安裝作業的服務水準目標。舉例來說:在正式環境中,如果目標 p99 延遲百分位數的值為 5 分鐘內 5 秒,則觸發事件通知。 |
Cloud Monitoring 資訊主頁 MQL 查詢:
fetch apigee.googleapis.com/Target
| metric 'apigee.googleapis.com/target/latencies'
| align delta(1m)
| every 1m
| group_by [metric.method],
[value_latencies_percentile: percentile(value.latencies, 99)]
|
|
資料庫
Cassandra
Apigee Cassandra 資料庫服務有多項 Cassandra SLI 指標。這些 SLI 指標可提供 Apigee Cassandra 服務的完整監控資訊。至少應監控用戶端的讀取和寫入要求延遲時間,以及 Cassandra 資源用量 (CPU、記憶體和磁碟區),確保 Cassandra 服務運作正常。
Cassandra 讀取要求率
用途:cassandra/clientrequest_rate (範圍為 Read) SLI 指標可深入瞭解 Cassandra 服務在任何特定時間的讀取要求平均速率。這項指標有助於瞭解客戶讀取要求活動層級的趨勢。
| 資源類型 | k8s_container |
| 指標 | cassandra/clientrequest_rate |
| 篩選依據 | scope = Read 和 unit = 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 = Read 和 unit = 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 = Read 和 unit = 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 = Write 和 unit = 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-synchronizer 和 type = CONTRACT |
| 分組依據 | method、type、container_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 |
| 篩選依據 | method、response_type、container_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-appapigee-prometheus-proxyapigee-prometheus-aggapigee-stackdriver-exporter |
容器 / Pod
重新啟動次數
用途:kubernetes.io/container/restart_count 系統 SLI 指標會提供容器的重新啟動次數。這張圖表有助於判斷容器是否經常當機/重新啟動。您可以透過特定服務容器的指標標籤,篩除特定服務容器,進行監控。
以下顯示如何使用 Cassandra 容器的 kubernetes.io/container/restart_count 指標。您可以在上表中的任何容器使用這項指標。
| 資源類型 | k8s_container |
| 指標 | kubernetes.io/container/restart_count |
| 篩選依據 | namespace_name = apigee 和 container_name =~ .*cassandra.* |
| 分組依據 | cluster_name、namespace_name、pod_name、container_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)] |
|