本頁說明為何您可能無法如預期收到通知,並提供可能的解決方法。
未收到通知
您設定通知管道,並希望在事件發生時收到通知。你不會收到任何通知。
如要收集失敗原因的相關資訊,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
- 選取適當的 Google Cloud 專案。
針對通知管道事件查詢記錄:
- 展開「Log name」選單,然後選取「notification_channel_events」。
- 展開「Severity」選單,然後選取「Error」。
- 選用:如要選取自訂時間範圍,請使用時間範圍選取器。
- 點選「執行查詢」。
先前的步驟會建立下列查詢:
resource.type:"stackdriver_notification_channel" logName="projects/PROJECT_ID/logs/monitoring.googleapis.com%2Fnotification_channel_events" severity=ERROR
摘要行和
jsonPayload
欄位通常包含失敗資訊。舉例來說,發生網關錯誤時,摘要行會包含「failed with 502 Bad Gateway」(失敗,錯誤代碼 502 Bad Gateway)。
未收到 Webhook 通知
您設定 webhook 通知管道,並希望在事件發生時收到通知。你不會收到任何通知。
私人端點
除非端點是公開的,否則您無法使用 webhook 傳送通知。
如要解決這個問題,請使用 Pub/Sub 通知,並搭配提取訂閱該通知主題。
設定 Pub/Sub 通知管道後,事件通知會傳送至具有身分與存取權管理控制項的 Pub/Sub 佇列。任何可查詢或收聽 Pub/Sub 主題的服務,都可以使用這些通知。舉例來說,在 App Engine、Cloud Run 或 Compute Engine 虛擬機器上執行的應用程式可以使用這些通知。
如果您使用提取訂閱,系統會向 Google 傳送要求,等待訊息傳送。這些訂閱項目需要 Google 存取權,但不需要防火牆或傳入存取的規則。
公開端點
如要找出提交失敗的原因,請檢查 Cloud Logging 記錄項目中的失敗資訊。
舉例來說,您可以使用記錄檔探索工具,搭配下列篩選器搜尋通知管道資源的記錄項目:
resource.type="stackdriver_notification_channel"
未收到 Pub/Sub 通知
您設定了 Pub/Sub 通知管道,但沒有收到任何通知。
如要解決這個問題,請嘗試下列操作:
確認通知服務帳戶是否存在。服務帳戶已刪除時,系統不會傳送通知。
如要確認服務帳戶是否存在,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「IAM」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM 與管理」的結果。
搜尋採用下列命名慣例的服務帳戶:
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
如果系統未列出這個服務帳戶,請選取「包含 Google 提供的角色授權」。
如果通知服務帳戶不存在,您必須開始建立監控的 Pub/Sub 通知管道,以便建立服務帳戶:
-
前往 Google Cloud 控制台的 notifications「Alerting」(警告) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 按一下「編輯通知管道」。
在「Pub/Sub」專區中,按一下「新增」。
監控會在沒有通知服務帳戶時建立帳戶。「Create Pub/Sub Channel」對話方塊會顯示通知服務帳戶的名稱。
如果不想新增通知管道,請按一下「取消」。否則請完成建立通知管道,然後按一下「新增管道」。
授予服務帳戶發布 Pub/Sub 主題的權限:
- 在新的瀏覽器分頁中,開啟「建立通知管道」文件。
- 選取「Pub/Sub」分頁,然後按照頁面「授權服務帳戶」部分的步驟操作。
-
請確認通知服務帳戶已獲授權,可針對感興趣的 Pub/Sub 主題傳送通知。
如要查看服務帳戶的權限,您可以使用Google Cloud 控制台或 Google Cloud CLI 指令:
- Google Cloud 控制台的「IAM」頁面會列出每個服務帳戶的角色。
- Google Cloud 控制台的 Pub/Sub「主題」頁面會列出各個主題。選取主題後,「Permissions」分頁會列出授予服務帳戶的角色。
如要列出所有服務帳戶及其角色,請執行下列 Google Cloud CLI 指令:
gcloud projects get-iam-policy PROJECT_ID
以下是這項指令的部分回應:
serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/monitoring.notificationServiceAgent - members: [...] role: roles/owner - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher
指令回應只包含角色,不包含個別主題授權。
如要列出特定主題的 IAM 繫結,請執行下列指令:
gcloud pubsub topics get-iam-policy TOPIC
以下是這個指令的回應範例:
bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com role: roles/pubsub.publisher etag: BwXPRb5WDPI= version: 1
如要瞭解如何授權通知服務帳戶,請參閱「授權服務帳戶」。
未收到運作時間檢查快訊政策的通知
您希望在虛擬機器 (VM) 重新啟動或關機時收到通知,因此建立了快訊政策,用於監控指標 compute.googleapis.com/instance/uptime
。您可以建立並設定條件,在沒有指標資料時產生事件。您未使用 Monitoring 查詢語言 (MQL) 定義條件1。虛擬機器 (VM) 重新啟動或關機時,系統不會通知您。
這項快訊政策只會監控處於 RUNNING
狀態的 Compute Engine VM 執行個體時間序列。系統會在評估條件前,先篩除處於其他狀態 (例如 STOPPED
或 DELETED
) 的 VM 時間序列。由於這項行為,您無法使用快訊政策搭配指標缺少快訊條件,判斷 VM 執行個體是否正在執行。如要瞭解 VM 執行個體狀態,請參閱「VM 執行個體生命週期」。
如要解決這個問題,請建立快訊政策來監控運作時間檢查。針對私人端點,請使用私人正常運作時間檢查。
除了運作時間檢查的快訊功能外,您還可以使用監控資料缺少情況的快訊政策。強烈建議您針對運作時間檢查發出快訊,而非資料缺少:如果監控資料的供應情形出現暫時性問題,指標缺少快訊政策就可能產生誤報。
不過,如果無法使用運作時間檢查,您可以使用 MQL 建立快訊政策,通知您 VM 已關閉。MQL 定義的條件不會根據 VM 執行個體的狀態預先篩選時序資料。由於 MQL 不會依 VM 狀態篩選資料,因此您可以使用 MQL 偵測已關閉的 VM 是否缺少資料。
請考慮下列 MQL 條件,用來監控 compute.googleapis.com/instance/cpu/utilization
指標:
fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
|absent_for 3m
如果這個條件監控的 VM 關機,系統會在三分鐘後產生事件並傳送通知。absent_for
值必須至少為三分鐘。
如要進一步瞭解 MQL,請參閱「使用 MQL 的快訊政策」。
1:MQL 是一種易於表達的文字語言,可用於 Cloud Monitoring API 呼叫和 Google Cloud 主控台。如要使用 Google Cloud 控制台設定 MQL 條件,您必須使用程式碼編輯器。
未收到要求計數快訊政策的通知
您想監控已完成的要求數量。您建立了快訊政策來監控指標 serviceruntime.googleapis.com/api/request_count
,但在要求數量超過所設定的門檻時,您不會收到通知。
要求計數指標的最大對齊期間為 7 小時 30 分鐘。
如要解決這個問題,請檢查警示政策中的對齊期間值。如果這個值超過此指標的最大值,請縮短對齊期間,使其不超過 7 小時 30 分鐘。
未收到簡訊通知訊息或驗證碼
您想接收簡訊通知,或設定使用驗證碼的簡訊通知號碼,但沒有收到任何訊息。
如果您已達到簡訊限制,就不會收到其他簡訊。記錄檔可能會確認這項錯誤。請查看 Denied quota token
的記錄。
一般建議是,請勿只依賴簡訊管道傳送通知。系統會盡力提供簡訊通知。