總覽
本指南提供 Apigee Hybrid 部署項目的監控項目和監控方式指南。這份說明文件適用於混合叢集管理員和機構管理員。
如果您是 Google Cloud 監控的新手,請參閱 Google Cloud Monitoring 說明文件:使用 Metrics Explorer 建立圖表和快訊運作方式。
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 協議而有很大差異。
警示門檻的最佳化和判定作業是持續進行的過程,因為這項作業可能會隨著服務和基礎架構的使用情形而變動。使用「警告」和「重大」門檻設定通知和警報。
- 正常:值低於警告門檻。
- 疑慮:值大於警告門檻,但小於危險門檻。
- Critical:值 > Critical threshold。
客戶應使用提供的工具來判斷最佳閾值,無論是使用下方提供的 MQL 建立 Cloud Monitoring 資訊主頁,還是使用 Apigee 的分析工具,都能找出「正常」的情況,然後據此調整快訊閾值。
混合叢集監控可分為四個不同類別,例如流量、資料庫、Apigee 控制層和基礎架構監控。以下各節將詳細說明這些群組:
流量
Apigee Proxy 和 Target SLI 指標會提供 API Proxy 和目標的請求/回應計數和延遲時間。Apigee Policy 延遲 SLI 指標會提供政策回應延遲時間。這些 SLI 指標可用於監控 Apigee API 流量。
要求比率
Proxy 要求次數
用途:使用 proxy/request_count 監控 Proxy 要求數量。proxy/request_count 圖表會顯示 Proxy 的要求率。這張圖表可用於找出哪個 Proxy 收到較高的請求率、請求率模式,以及特定 Proxy 的任何異常尖峰請求呼叫。任何 API 流量異常尖峰都可能與機器人或 API Proxy 攻擊有關,是個安全疑慮。同樣地,整體流量雲端大幅下降,表示客戶或 Apigee 上游元件的連線出現問題。
資源類型 | Proxy |
指標 | proxy/request_count |
Group By | method 和所有 Proxy 資源類型標籤 |
集結網站 | sum |
快訊考量事項 | 異常的 request_count spike/drop 快訊等事件 |
警告門檻 | 無 |
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 執行階段目標要求次數。「target/request_count」圖表會顯示 Apigee 目標收到的要求比率。這張圖表可用於查看哪些目標的請求率較高、請求率模式,以及特定目標的請求呼叫異常尖峰。
資源類型 | 目標 |
指標 | target/request_count |
Group By | method 和所有 Target 資源類型標籤 |
集結網站 | sum |
快訊考量事項 | 異常的 request_count spike/drop 快訊等事件 |
警告門檻 | 無 |
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
|
Group By | method、response_code 、fault_code 、fault_source 、apigee_fault 和所有Proxy資源類型標籤 |
集結網站 | sum |
快訊考量事項 | 代理伺服器回應錯誤率:回應錯誤總數 / 回應總數。
|
警告門檻 | 取決於安裝作業的服務水準目標。實際工作環境和非實際工作環境的裝置安裝作業可能有不同的門檻。例如:如果代理伺服器回應的 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 目標錯誤回應率。「target/response_count」圖表會顯示 API Target 的要求率。這張圖表可能有助於找出哪個目標的請求率較高,或是在請求呼叫中出現任何異常錯誤高峰。
資源類型 | 目標 |
指標 | target/response_count |
篩選依據 | response_code != 200
|
Group By | method 和所有 Target 資源類型標籤 |
集結網站 | sum |
快訊考量事項 | 代理程式回應錯誤比率,例如:回應錯誤總數 / 回應總數。
|
警告門檻 | 取決於安裝作業的服務水準目標。舉例來說:如果目標回應錯誤率在 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 對要求的回應延遲時間。如要找出 Apigee API Proxy 的延遲時間,進而瞭解整體 API Proxy 要求的延遲時間,Proxy/延遲時間圖表可能會很有幫助。
資源類型 | Proxy |
指標 | Proxy/延遲 |
Group By | method 和所有 Proxy 資源類型標籤 |
集結網站 | p99 (第 99 個百分位數) |
快訊考量事項 | p99 延遲時間百分位數值偏高。 |
警告門檻 | 取決於安裝作業的服務水準目標。例如:如果 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 代理的額外負擔。
資源類型 | 目標 |
指標 | 目標/延遲時間 |
Group By | method、百分位數和所有Target資源類型標籤 |
集結網站 | p99 (第 99 個百分位數) |
快訊考量事項 | p99 延遲時間百分位數值偏高。 |
警告門檻 | 取決於安裝作業的服務水準目標。例如:如果目標第 99 百分位延遲百分比的值為 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 服務健康情況,並檢查 Cassandra 資源用量 (CPU、記憶體和磁碟磁區) 和用戶端的讀取和寫入要求延遲時間。
Cassandra 讀取要求率
用途:cassandra/clientrequest_rate (範圍=Read) SLI 指標可深入瞭解 Cassandra 服務在任何特定時間點的讀取要求平均速率。這項指標可協助您瞭解用戶端的讀取要求活動層級趨勢。
資源類型 | k8s_container |
指標 | cassandra/clientrequest_rate |
篩選依據 | scope = Read 和 unit = OneMinuteRate |
Group By | scope、unit 和所有 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 (範圍=Write) SLI 指標可讓您瞭解 Cassandra 服務在任何特定時間點的寫入要求平均速率。這項指標有助於瞭解用戶端的寫入要求活動層級趨勢。
資源類型 | k8s_container |
指標 | cassandra/clientrequest_rate |
篩選依據 | scope = Read 和 unit = OneMinuteRate |
Group By | scope、unit 和所有 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 |
Group By | scope、unit 和所有 k8s_container 資源類型標籤 |
集結網站 | sum |
快訊考量事項 | 如果讀取要求延遲時間 SLI 持續顯示第 99 個百分位數的延遲時間持續上升。 |
警告門檻 | 取決於 Cassandra 服務的服務等級目標。例如:在實際環境中,如果讀取的 clientrequest_latency 值的 99thPercentile 為 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 |
Group By | scope、unit 和所有 k8s_container 資源類型標籤 |
集結網站 | sum |
快訊考量事項 | 如果寫入要求延遲時間 SLI 持續顯示第 99 百分位數延遲時間持續上升。 |
警告門檻 | 取決於 Cassandra 服務的服務等級目標。例如:在實際環境中,如果寫入 clientrequest_latency 值的 99thPercentile 為 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 控制層和混合式執行階段層之間的要求和回應計數,以及延遲時間。在執行階段平面中執行的同步器執行個體應定期輪詢控制平面、下載合約,並將合約提供給本機執行階段執行個體。
要求比率
上游要求次數
用途:upstream/request_count 指標代表 Synchronizer 服務向 Apigee 控制平面提出的要求數量。
資源類型 | k8s_container |
指標 | upstream/request_count |
篩選依據 | container_name = apigee-synchronizer 和 type = CONTRACT |
Group By | 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 資源類型標籤 |
Group By | |
集結網站 | sum |
快訊考量事項 | 如果 upstream/response_count 指標出現錯誤,且從 Apigee 控制平面傳回的回應代碼不是 200,則需要進一步調查這些錯誤。 |
警告門檻 | 取決於 Cassandra 服務的服務等級目標。舉例來說,如果在實際環境中,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 = apigee 和 container_name =~ .*cassandra.* |
Group By | 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)] |