您可以使用 Google Cloud 控制台或 Cloud Monitoring API 監控 Pub/Sub。
本文說明如何使用 Monitoring,在 Google Cloud 控制台中監控 Pub/Sub 使用情形。
如要查看其他 Google Cloud 資源的指標 (除了 Pub/Sub 指標),請使用 Monitoring。
如需在自動調度資源中運用指標的最佳做法,請參閱將 Pub/Sub 指標做為調度訊號的最佳做法。
事前準備
請在使用 Monitoring 之前,確認您已準備好下列項目:
Cloud Billing 帳戶
已啟用計費功能的 Pub/Sub 專案
如要確認您是否兩者都擁有,請完成使用 Cloud 控制台的快速入門導覽課程。
查看現有資訊主頁
您可以在同一個環境中查看及分析不同來源的資料。Google Cloud 提供預先定義和自訂資訊主頁。舉例來說,您可以查看預先定義的 Pub/Sub 資訊主頁,也可以建立自訂資訊主頁,顯示與 Pub/Sub 相關的指標資料、快訊政策和記錄項目。
如要使用 Cloud Monitoring 監控 Pub/Sub 專案,請按照下列步驟操作:
前往 Google Cloud 控制台的「Monitoring」頁面。
如果尚未在頁面頂端選取專案名稱,請立即選取。
按一下導覽選單中的「資訊主頁」。
在「資訊主頁總覽」頁面中,建立新的資訊主頁,或選取現有的「Pub/Sub」資訊主頁。
如要搜尋現有的 Pub/Sub 資訊主頁,請在「所有資訊主頁」的篩選器中選取「名稱」屬性,然後輸入
Pub/Sub。
如要進一步瞭解如何建立、編輯及管理自訂資訊主頁,請參閱「管理自訂資訊主頁」一文。
查看單一 Pub/Sub 指標
如要使用 Google Cloud 控制台查看單一 Pub/Sub 指標,請按照下列步驟操作:
前往 Google Cloud 控制台的「Monitoring」頁面。
在導覽窗格中,選取「指標探索器」。
在「設定」部分中,按一下「選取指標」。
在篩選條件中輸入
Pub/Sub。在「Active resources」(有效資源) 中,選取「Pub/Sub Subscription」(Pub/Sub 訂閱) 或「Pub/Sub Topic」(Pub/Sub 主題)。
向下鑽研至特定指標,然後按一下「套用」。
系統會開啟特定指標的頁面。
如要進一步瞭解監控資訊主頁,請參閱 Cloud Monitoring 說明文件。
查看 Pub/Sub 指標和資源類型
如要查看 Pub/Sub 報告給 Cloud Monitoring 的指標,請參閱 Cloud Monitoring 說明文件中的 Pub/Sub 指標清單。
如要查看
pubsub_topic、pubsub_subscription或pubsub_snapshot受監控資源類型的詳細資料,請參閱 Cloud Monitoring 說明文件中的「受監控資源類型」。
存取 PromQL 編輯器
Metrics Explorer是 Cloud Monitoring 內建的介面,專門用於探索及視覺化呈現指標資料。在 Metrics Explorer 中,您可以使用 Prometheus 查詢語言 (PromQL) 查詢及分析 Pub/Sub 指標。
如要在Metrics Explorer中存取程式碼編輯器,並使用 PromQL 查詢 Cloud Monitoring 指標,請參閱「使用程式碼編輯器進行 PromQL 查詢」。
舉例來說,您可以輸入 PromQL 查詢,監控在過去 1 小時內傳送至特定訂閱項目的訊息數量:
sum(
increase({
"__name__"="pubsub.googleapis.com/subscription/sent_message_count",
"monitored_resource"="pubsub_subscription",
"project_id"="your-project-id",
"subscription_id"="your-subscription-id"
}[1h])
)
監控配額用量
您可針對特定專案使用 IAM 與管理員配額資訊主頁,檢視目前的配額及用量。
您可以使用下列指標查看歷來配額使用量:
這些指標會使用受監控的consumer_quota資源類型。如需更多配額相關指標,請參閱「指標清單」。
舉例來說,下列 PromQL 查詢會建立圖表,顯示每個區域使用的發布商配額比例:
sum by (quota_metric, location) (
rate({
"__name__"="serviceruntime.googleapis.com/quota/rate/net_usage",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com",
"quota_metric"="pubsub.googleapis.com/regionalpublisher"
}[${__interval}])
)
/
(max by (quota_metric, location) (
max_over_time({
"__name__"="serviceruntime.googleapis.com/quota/limit",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com",
"quota_metric"="pubsub.googleapis.com/regionalpublisher"
}[${__interval}])
) / 60 )
如果您預期用量會超過預設配額限制,請為所有相關配額建立快訊政策。當用量達到限制的某個比例時,系統就會觸發這些快訊。舉例來說,如果任何 Pub/Sub 配額用量超過 80%,下列 PromQL 查詢就會觸發警告政策:
sum by (quota_metric, location) (
increase({
"__name__"="serviceruntime.googleapis.com/quota/rate/net_usage",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com"
}[1m])
)
/
max by (quota_metric, location) (
max_over_time({
"__name__"="serviceruntime.googleapis.com/quota/limit",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com"
}[1m])
)
> 0.8
如要進一步自訂配額指標的監控和快訊,請參閱使用配額指標。
如要進一步瞭解配額,請參閱「配額與限制」。
維持有效的訂閱方案
如要維持訂閱項目的良好狀態,可以使用 Pub/Sub 提供的指標監控多項訂閱項目屬性。舉例來說,您可以監控未確認訊息的數量、訊息確認期限到期情形等。您也可以檢查訂閱項目是否正常運作,確保訊息傳送延遲時間較短。
如要進一步瞭解特定指標,請參閱下文。
監控待處理訊息
如要確保訂閱者能跟上訊息的流動,請建立資訊主頁。資訊主頁會顯示所有訂閱項目的下列積壓工作指標,並依資源匯總:
未確認訊息 (
subscription/num_unacked_messages_by_region):查看未確認訊息的數量。最舊未確認訊息存在時間 (
subscription/oldest_unacked_message_age_by_region):查看訂閱項目待處理訊息中最舊未確認訊息的存在時間。傳遞延遲時間健康狀態分數 (
subscription/delivery_latency_health_score):檢查與傳遞延遲時間相關的整體訂閱項目健康狀態。如要進一步瞭解這項指標,請參閱本文的相關章節。
建立警告政策,在這些值超出系統可接受的範圍時觸發。舉例來說,未確認訊息的絕對數量不一定有意義。如果訂閱的訊息量為每秒一百萬則,積壓一百萬則訊息或許可以接受,但如果訂閱的訊息量為每秒一則,就無法接受。
常見的待處理事項問題
| 問題 | 問題 | 解決方案 |
|---|---|---|
oldest_unacked_message_age_by_region 和 num_unacked_messages_by_region 雙雙成長。 |
訂閱者跟不上訊息量 |
|
如果積壓工作量穩定且不大,但 oldest_unacked_message_age_by_region 持續增加,可能表示有幾則訊息無法處理。 |
無法傳送的訊息 |
|
oldest_unacked_message_age_by_region超過訂閱訊息保留時間。 |
永久遺失資料 |
|
監控傳遞延遲時間健康狀態
在 Pub/Sub 中,傳送延遲時間是指發布的訊息傳送至訂閱端所需的時間。如果訊息待處理量增加,可以使用「傳送延遲健康狀態分數」 (subscription/delivery_latency_health_score) 檢查導致延遲時間增加的因素。
這項指標會衡量單一訂閱項目在 10 分鐘的滾動時間範圍內的健康狀態。這項指標可深入瞭解下列條件,訂閱項目必須符合這些條件,才能持續保持低延遲:
可忽略的搜尋要求。
可忽略的負面確認訊息 (NACK) 訊息。
過期訊息確認期限可忽略不計。
確認延遲時間一律少於 30 秒。
使用率持續偏低,表示訂閱項目有足夠容量處理新訊息。
「傳遞延遲時間健康狀態分數」指標會針對每個指定條件回報 0 或 1 分。1 分代表健康狀態良好,0 分則代表健康狀態不良。
搜尋要求:如果訂閱項目在過去 10 分鐘內有任何搜尋要求,分數會設為 0。訂閱可能會導致舊訊息在首次發布後很久才重新傳送,進而增加傳送延遲。
負面確認 (nack) 的訊息:如果訂閱項目在過去 10 分鐘內有任何負面確認 (nack) 要求,分數會設為 0。如果收到負面確認,系統會重新傳送訊息,但傳送延遲時間會增加。
過期的確認期限:如果訂閱項目在過去 10 分鐘內有任何過期的確認期限,分數會設為 0。如果訊息的確認期限已過,系統會重新傳送訊息,但傳送延遲時間會增加。
確認延遲:如果過去 10 分鐘內所有確認延遲的第 99.9 個百分位數曾大於 30 秒,分數就會設為 0。確認延遲時間過長表示訂閱端用戶端處理訊息的時間異常長。這個分數可能代表訂閱端有錯誤或資源限制。
用量偏低:系統會根據各訂閱方案類型,以不同方式計算用量。
StreamingPull:如果開啟的串流不足,分數會設為 0。開啟更多串流,確保有足夠的容量來處理新訊息。
推送:如果發送端有太多待處理的訊息,分數會設為 0。增加推送端點的容量,以便接收新訊息。