本文說明如何設定私人運作時間檢查。有了私人運作時間檢查,您就能透過客戶虛擬私有雲 (VPC) 網路傳送 HTTP 或 TCP 要求,同時強制執行Identity and Access Management (IAM) 限制和 VPC Service Controls 邊界。私人運作時間檢查可透過私人網路,將要求傳送至虛擬機器 (VM) 或 L4 內部負載平衡器 (ILB) 等資源。
私人網路中資源的內部 IP 位址會由啟用私人網路存取權的 Service Directory 服務記錄。如要使用私人運作時間檢查,您必須使用 Service Directory 產品設定私人網路存取權。
儲存私有運作時間檢查的專案 Google Cloud 和儲存 Service Directory 服務的專案 Google Cloud 可以是不同專案。Cloud Monitoring 可讓您使用指標範圍,從一個專案監控多個Google Cloud 專案中的資源。定義運作時間檢查的專案是指標範圍的範圍專案;指標範圍是範圍專案監控的所有專案清單。Service Directory 服務可能是在範圍界定專案中定義,也可能是在指標範圍內的專案中定義。如要進一步瞭解指標範圍,請參閱「指標範圍總覽」。
私人網路及其資源 (例如 VM 或負載平衡器) 也可以位於不同的 Google Cloud 專案。這項專案不一定要在運作時間檢查限定範圍專案的指標範圍內。Service Directory 服務會收集正常運作時間指標,因此必須納入指標範圍,但封裝的資源則不必。
本文說明如何使用 Google Cloud 控制台 Google Cloud 或 API 設定私人網路,並為該網路設定 Service Directory 資源。API 範例假設私人網路和 Service Directory 服務位於正常運作時間檢查的範圍專案中。不過,「建立私人運作時間檢查」一文也說明如何使用 API 建立運作時間檢查,並在指標範圍中使用 Service Directory 服務。
如要瞭解如何設定使用公開 IP 位址的運作時間檢查,請參閱「建立公開運作時間檢查」。如要瞭解如何管理及監控正常運作時間檢查,請參閱本文的「後續步驟」一節。
這項功能僅支援 Google Cloud 專案。 如要進行 App Hub 設定,請選取 App Hub 主機專案或已啟用應用程式的資料夾管理專案。
事前準備
啟用下列 API:
- Cloud Monitoring API:
monitoring.googleapis.com
- Service Directory API:
servicedirectory.googleapis.com
- Service Networking API:
servicenetworking.googleapis.com
- Compute Engine API:
compute.googleapis.com
您可以使用 gcloud CLI 或Google Cloud 控制台啟用 API。以下分頁說明如何安裝 gcloud CLI 及啟用 Cloud Monitoring API:
Google Cloud 控制台
在 Google Cloud 控制台中,選取要啟用 API 的 Google Cloud 專案,然後前往「APIs & Services」(API 和服務) 頁面:
按一下「啟用 API 和服務」按鈕。
搜尋「監控」。
在搜尋結果中,按一下「Stackdriver Monitoring API」。
如果畫面顯示「API enabled」(API 已啟用),代表 API 已啟用。如果沒有,請按一下「啟用」。
gcloud CLI
如果尚未在工作站上安裝 Google Cloud CLI,請參閱「安裝 gcloud CLI」。
如要查看 Monitoring API 是否已啟用,請在工作站上執行下列指令,並將 PROJECT_ID 替換為要啟用 API 的專案 ID:
gcloud services list --project=PROJECT_ID
如果輸出結果中出現
monitoring.googleapis.com
,表示 API 已啟用。如果 API 未啟用,請執行下列指令來啟用:
gcloud services enable monitoring --project=PROJECT_ID
詳情請參閱
gcloud services
。
您可以使用相同步驟啟用其他 API:
- 如要使用 Google Cloud 控制台,請搜尋顯示名稱,例如「Service Directory API」。
- 如要使用 gcloud CLI,請指定
googleapis.com
名稱的第一個元素,例如servicedirectory
。
- Cloud Monitoring API:
設定要用來接收通知的通知管道。建議您建立多種通知管道,詳情請參閱「建立及管理通知管道」。
設定私人網路,並設定 VM 或 ILB,以存取該私人網路。詳情請參閱私人服務存取權。
以 ILB 為目標的私人檢查僅限於有運作時間檢查程式的區域。運作時間檢查區域
USA
包含USA_OREGON
、USA_IOWA
和USA_VIRGINIA
區域。每個USA_*
區域都有一個檢查員,USA
則包含所有三個區域。其他正常運作時間檢查區域 (EUROPE
、SOUTH_AMERICA
和ASIA_PACIFIC
) 各有一個檢查程式。如要移除這項限制,您必須設定負載平衡器的全域存取權。如要進一步瞭解如何設定全域存取權,請參閱本文「設定 Service Directory 資源」一節中的 ILB 分頁。如果您打算檢查不允許全域存取的 ILB,請為 ILB 選取下列其中一個區域:
us-east4
us-central1
us-west1
europe-west1
southamerica-east1
asia-southeast1
決定要使用的介面:
Google Cloud 控制台:可讓您在 VM 處理要求時建立運作時間檢查。這個介面會引導您設定 Service Directory 資源、授權服務帳戶,以及設定網路防火牆規則。
指令列介面:當 ILB 和 VM 處理要求時,您可以使用 Google Cloud CLI 和 Cloud Monitoring API 建立私人運作時間檢查。
如果您打算使用指令列設定私人運作時間檢查,請完成必要步驟。
建立私人運作時間檢查
本節說明如何建立及設定 Service Directory 服務的私有運作時間檢查:
如要使用 Google Cloud 控制台,請選取「Google Cloud 控制台」分頁標籤。
如要使用 Cloud Monitoring API,並將 Service Directory 服務設定為與正常運作時間檢查位於同一個 Google Cloud 專案,請選取「API: Scoping project」分頁標籤。
如要使用 Cloud Monitoring API,並將 Service Directory 服務設定為位於正常運作時間檢查專案的指標範圍所監控的專案中,請選取「API: Monitored project」分頁標籤。
Google Cloud 控制台
如要使用 Google Cloud 控制台建立運作時間檢查,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「運作時間檢查」
頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
按一下「建立運作時間檢查」。
指定私人運作時間檢查:
選取通訊協定,可以是 HTTP、HTTPS 或 TCP。
選擇「內部 IP」資源類型。
如果專案未設定 Service Directory 服務,或是要建立 Service Directory 服務,請按一下「查看」,然後完成「私人運作時間檢查先決條件」窗格:
如果出現提示,請啟用 Compute Engine API 或 Service Directory API。啟用 API 可能需要一分鐘的時間。
展開「服務帳戶」arrow_drop_down (如有顯示),然後按一下「建立服務帳戶」。
如果沒有監控服務帳戶,系統會建立一個。接著,Monitoring 會授予服務帳戶兩個 Service Directory 角色。
展開「Service Directory」(服務目錄) arrow_drop_down 選單,然後執行下列操作:
- 展開「Region」(區域) arrow_drop_down,然後選取處理要求的 VM 所在區域。
- 展開「命名空間」arrow_drop_down,然後選取現有的 Service Directory 命名空間,或按一下「建立命名空間」並建立命名空間。
- 按一下「服務名稱」,然後輸入服務名稱。服務是私人運作時間檢查的目標。
- 按一下「端點名稱」,然後輸入端點名稱。 端點是 IP 位址和通訊埠值的組合,服務可用來處理要求。如果服務包含多個端點,系統會隨機選擇一個端點。
- 展開「網路」arrow_drop_down,然後選取私人網路。
- 展開「執行個體」arrow_drop_down ,然後選取私人網路中處理要求的 VM。選取執行個體後,系統會顯示其內部 IP 位址。
- 按一下 [完成]。
展開「防火牆規則」arrow_drop_down:
展開「Network」(網路) arrow_drop_down,然後選取要附加網路規則的網路。
按一下「建立防火牆規則」。
這項防火牆規則會啟用來自路徑 35.199.192.0/19 的傳入 TCP 流量。35.199.192.0/19 的路徑支援連線至使用私人路由的轉送目標。詳情請參閱「虛擬私有雲路徑」。
在「Private Uptime Check」(私人運作時間檢查) 窗格中,如要指定要使用的 Service Directory 服務,請執行下列其中一項操作:
選取「使用完整服務名稱」,然後輸入服務的完整名稱:
projects/SERVICE_DIRECTORY_PROJECT_ID/locations/REGION/namespaces/PRIVATE_NAMESPACE/services/PRIVATE_SERVICE
使用選單選取「區域」、「命名空間」和「服務」。如果你已建立服務,系統會為你選取這些欄位。
在「Private Uptime Check」(私人運作時間檢查) 窗格中,完成運作時間檢查目標的說明:
選用:輸入要求的路徑元件。
使用 HTTP 或 HTTPS 通訊協定的私人運作時間檢查會將要求傳送至
http://target/path
。在這個運算式中,target
是在 Service Directory 端點中設定的內部 IP 位址。如果將「路徑」欄位留空,或將值設為
/
,系統就會向http://target/
發出要求。選用:如要設定運作時間檢查的執行頻率,請使用「檢查頻率」欄位。
選用:如要選取檢查程式區域,或設定 HTTP 和 HTTPS 檢查的驗證、標頭和其他值,請按一下「更多目標選項」:
- 「Regions」(區域):選取運作時間檢查要接收要求的區域。運作時間檢查至少要有三個檢查程式。 除了美國有三位檢查員外,其他地區都只有一位。預設設定「全球」包含所有區域。
- 要求方法:選取
GET
或POST
。 - 主體:如果是 HTTP
POST
檢查,請輸入經過網址編碼的主體;您必須自行編碼。其他檢查請將這個欄位留空。 - 主機標頭:設定私有運作時間檢查時,請勿設定這個欄位。
- 通訊埠:您在此設定的任何值都會覆寫服務目錄端點設定中的通訊埠。如要使用端點設定,請勿在此設定值。
- 「Custom Headers」(自訂標頭):提供自訂標頭,並視需要進行加密。加密後,表單中會隱藏標頭的值。如果您不希望其他人看到驗證相關的標頭,可以使用加密功能。
- 「Authentication」(驗證):提供單一使用者名稱和密碼。這些值會做為授權標頭傳送。如果您在此處設定值,請不要設定單獨的授權標頭;如果您設定了授權標頭,請勿在此處設定值。表單中一律會隱藏密碼。
按一下「繼續」,然後設定回覆規定。 這個部分的所有設定都有預設值:
如要設定運作時間檢查的逾時時間,請使用「回應逾時」欄位。如果在這段期間內,運作時間檢查未從多個位置收到回應,就會失敗。
如要設定運作時間檢查來執行內容比對,請確認切換按鈕標籤為「已啟用內容比對功能」:
- 從選項選單中選取「回應內容比對類型」。
這個欄位會決定如何比較回應內容與傳回的資料。舉例來說,假設回應內容為
abcd
,且內容比對類型為「包含」。只有在回應資料包含abcd
時,運作時間檢查才會成功。詳情請參閱「驗證回應資料」。 - 輸入回覆內容。回應內容必須是字串,且長度不得超過 1024 個位元組。在 API 中,這個欄位是
ContentMatcher
物件。
- 從選項選單中選取「回應內容比對類型」。
這個欄位會決定如何比較回應內容與傳回的資料。舉例來說,假設回應內容為
如要避免因運作時間檢查而建立記錄項目,請清除「記錄失敗的檢查項目」。
如果是 HTTP 運作時間檢查,請設定可接受的回應代碼。 根據預設,HTTP 運作時間檢查會將任何
2xx
回應標示為成功回應。
按一下「繼續」,然後設定快訊政策和通知。
如要在運作時間檢查失敗時收到通知,請建立快訊政策,並為該政策設定通知管道:
- 選用:更新快訊政策的名稱。
- 選用:在「Duration」(時間長度) 欄位中,選取運作時間檢查必須失敗多久後才會傳送通知。根據預設,如果至少兩個區域回報運作時間檢查失敗,且持續至少一分鐘,系統就會傳送通知。
在標示為「通知管道」的方塊中,展開「選單」arrow_drop_down,選取要新增的管道,然後按一下「確定」。
選單中的通知管道會依管道類型分組,並依字母順序排序。
如不想建立快訊政策,請確認切換按鈕的文字為「不建立警告」。
按一下「繼續」,然後完成運作時間檢查:
輸入運作時間檢查的描述性名稱。
選用:如要將使用者定義的標籤新增至運作時間檢查,請執行下列步驟:
- 按一下 expand_more「顯示使用者標籤」。
- 在「Key」(鍵) 欄位中,輸入標籤名稱。
標籤名稱的開頭須為小寫英文字母,可包含小寫英文字母、數字、底線和破折號。例如,輸入
severity
。 - 在「值」欄位中,輸入標籤的值。標籤值可包含小寫字母、數字、底線和破折號。例如,輸入
critical
。 - 如要新增其他標籤,請按一下「新增使用者標籤」,然後輸入標籤的鍵和值。
如要驗證運作時間檢查設定,請按一下「測試」。 如果結果與您的期望不符,請參閱「疑難排解」,更正設定,然後重複執行驗證步驟。
點選「建立」。
API:設定專案範圍
如要建立私人運作時間檢查的設定,請建立 UptimeCheckConfig
物件,並將該物件傳遞至 Cloud Monitoring API 中的 uptimeCheckConfigs.create
方法。
私人運作時間檢查的 UptimeCheckConfig
物件與公開運作時間檢查的物件不同,差異如下:
運作時間檢查設定中指定的受監控資源必須為
servicedirectory_service
類型。這項資源類型具有下列標籤:project_id
:與 Service Directory 服務相關聯的專案 ID。location
:與服務相關聯的雲端區域。namespace_name
:Service Directory 命名空間。service_name
:Service Directory 服務的名稱。
您不需要在正常運作時間檢查設定中指定
port
值。 Service Directory 端點的通訊埠值會覆寫正常運作時間檢查設定中設定的任何值,如果 Service Directory 設定中未指定任何通訊埠,檢查就會失敗。運作時間檢查設定必須指定
checker_type
欄位,並將值設為VPC_CHECKERS
。進行私人正常運作時間檢查時,必須提供這個值。運作時間檢查預設為公開,因此公開的運作時間檢查不需要指定這個欄位。
下列 JSON 程式碼說明 UptimeCheckConfig
物件,用於透過為私有網路上的 VM 執行個體設定的 Service Directory 資源,進行私人運作時間檢查:
{ "displayName": "private-check-demo", "monitoredResource": { "type": "servicedirectory_service", "labels": { "project_id": "SERVICE_DIRECTORY_PROJECT_ID", "service_name": "PRIVATE_SERVICE", "namespace_name": "PRIVATE_NAMESPACE", "location": "REGION" } }, "httpCheck": { "requestMethod": "GET" }, "period": "60s", "timeout": "10s", "checker_type": "VPC_CHECKERS" }'
如要在 Service Directory 服務與運作時間檢查位於同一個 Google Cloud 專案時建立私人運作時間檢查,請按照下列步驟操作:
設定 gcloud CLI 的預設 Google Cloud 專案:
gcloud config set project PROJECT_ID
建立用於儲存專案 ID 的環境變數:
export PROJECT_ID=$(gcloud config get-value core/project)
建立環境變數來保存存取權杖:
export TOKEN=`gcloud auth print-access-token`
使用
curl
工具叫用uptimeCheckConfigs.create
方法,並將設定物件發布至該方法:curl https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/uptimeCheckConfigs \ -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ --request POST --data '{ "displayName": "private-check-demo", "monitoredResource": { "type": "servicedirectory_service", "labels": { "project_id": "'"$PROJECT_ID"'", "service_name": "PRIVATE_SERVICE", "namespace_name": "PRIVATE_NAMESPACE", "location": "REGION" } }, "httpCheck": { "requestMethod": "GET" }, "period": "60s", "timeout": "10s", "checker_type": "VPC_CHECKERS" }'
如果無法建立運作時間檢查,請確認服務帳戶是否具備必要角色。詳情請參閱「建立運作時間檢查失敗」。
API:受監控的專案
如要建立私人運作時間檢查的設定,請建立 UptimeCheckConfig
物件,並將該物件傳遞至 Cloud Monitoring API 中的 uptimeCheckConfigs.create
方法。
私人運作時間檢查的 UptimeCheckConfig
物件與公開運作時間檢查的物件不同,差異如下:
運作時間檢查設定中指定的受監控資源必須為
servicedirectory_service
類型。這項資源類型具有下列標籤:project_id
:與 Service Directory 服務相關聯的專案 ID。location
:與服務相關聯的雲端區域。namespace_name
:Service Directory 命名空間。service_name
:Service Directory 服務的名稱。
您不需要在正常運作時間檢查設定中指定
port
值。 Service Directory 端點的通訊埠值會覆寫正常運作時間檢查設定中設定的任何值,如果 Service Directory 設定中未指定任何通訊埠,檢查就會失敗。運作時間檢查設定必須指定
checker_type
欄位,並將值設為VPC_CHECKERS
。進行私人正常運作時間檢查時,必須提供這個值。運作時間檢查預設為公開,因此公開的運作時間檢查不需要指定這個欄位。
下列 JSON 程式碼說明 UptimeCheckConfig
物件,用於透過為私有網路上的 VM 執行個體設定的 Service Directory 資源,進行私人運作時間檢查:
{ "displayName": "private-check-demo", "monitoredResource": { "type": "servicedirectory_service", "labels": { "project_id": "SERVICE_DIRECTORY_PROJECT_ID", "service_name": "PRIVATE_SERVICE", "namespace_name": "PRIVATE_NAMESPACE", "location": "REGION" } }, "httpCheck": { "requestMethod": "GET" }, "period": "60s", "timeout": "10s", "checker_type": "VPC_CHECKERS" }'
如果 Service Directory 服務位於運作時間檢查 Google Cloud 專案Google Cloud 的指標範圍監控專案中,請按照下列步驟建立私人運作時間檢查:
將 gcloud CLI 設為預設使用要建立運作時間檢查的 Google Cloud 專案:
gcloud config set project PROJECT_ID
建立用於儲存專案 ID 的環境變數:
export PROJECT_ID=$(gcloud config get-value core/project)
建立環境變數,用於儲存定義 Service Directory 服務的Google Cloud 專案專案 ID:
export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
這項專案必須位於運作時間檢查專案的指標範圍內。
建立環境變數來保存存取權杖:
export TOKEN=`gcloud auth print-access-token`
使用
curl
工具叫用uptimeCheckConfigs.create
方法,並將設定物件發布至該方法:curl https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/uptimeCheckConfigs \ -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ --request POST --data '{ "displayName": "private-check-demo", "monitoredResource": { "type": "servicedirectory_service", "labels": { "project_id": "'"$MONITORED_PROJECT_ID"'", "service_name": "PRIVATE_SERVICE", "namespace_name": "PRIVATE_NAMESPACE", "location": "REGION" } }, "httpCheck": { "requestMethod": "GET" }, "period": "60s", "timeout": "10s", "checker_type": "VPC_CHECKERS" }'
如果無法建立運作時間檢查,請確認服務帳戶是否具備必要角色。詳情請參閱「建立運作時間檢查失敗」。
運作時間檢查結果開始流入 Monitoring 之前,可能會有長達 5 分鐘的延遲。在該期間,運作時間檢查資訊主頁會將狀態回報為「no data available」(目前沒有任何可用資料)。
事前準備步驟
如果您打算使用 Google Cloud 控制台介面,請參閱「建立私人運作時間檢查」。Google Cloud 控制台會引導您完成所有必要步驟。
如果您打算使用指令列設定私人運作時間檢查,則必須先完成下列步驟,才能建立運作時間檢查:
設定 Service Directory 資源
私人運作時間檢查會使用 Service Directory 服務記錄的內部 IP 位址,判斷資源的可用性。您可以為下列資源設定 Service Directory:
- 私人網路上的 VM
- L4 內部負載平衡器 (ILB)
如要使用私人運作時間檢查,您必須設定下列 Service Directory 資源:
- 端點:端點是 IP 位址和通訊埠值的組合,服務可用來處理要求。如果服務包含多個端點,系統會隨機選擇一個端點。
- 服務:服務是一組端點,可提供一組行為。服務是私人運作時間檢查的目標。
- 命名空間:命名空間會保存一組服務名稱及其相關聯的端點。命名空間可讓您將服務分組,以便統一管理。
您可以使用 gcloud CLI 或Google Cloud 控制台設定這些資源。使用主控台時,設定步驟會顯示在「建立運作時間檢查」對話方塊中。
Google Cloud 控制台
使用 Google Cloud 控制台時,選取「內部 IP」做為運作時間檢查的資源類型後,系統會提示您建立 Service Directory 和服務。
gcloud CLI - VM
如要瞭解本文中用於服務、命名空間和端點的指令,請參閱 gcloud service-directory
指令群組。
如要為 VM 建立 Service Directory 資源,請按照下列步驟操作:
將 Google Cloud CLI 設為預設使用 Google Cloud 專案,以便建立 Service Directory 資源:
gcloud config set project PROJECT_ID
建立環境變數,用來儲存專案 ID 和專案編號:
export PROJECT_ID=$(gcloud config get-value core/project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
建立 Service Directory 命名空間:
gcloud service-directory namespaces create PRIVATE_NAMESPACE --location=REGION
在命名空間中建立 Service Directory 服務:
gcloud service-directory services create PRIVATE_SERVICE \ --namespace PRIVATE_NAMESPACE --location=REGION
建立環境變數,以保留私有網路中 VM 的 IP 位址:
export INTERNAL_IP=$(gcloud compute instances describe --zone=ZONE \ PRIVATE_SERVICE_INSTANCE --format='get(networkInterfaces[0].networkIP)')
建立包含內部 IP 位址和通訊埠的 Service Directory 端點:
gcloud service-directory endpoints create PRIVATE_ENDPOINT \ --location=REGION --namespace=PRIVATE_NAMESPACE \ --service=PRIVATE_SERVICE \ --network=projects/$PROJECT_NUMBER/locations/global/networks/PRIVATE_CHECK_NETWORK \ --address=$INTERNAL_IP --port=80
gcloud CLI - L4 ILB
如要瞭解本文中用於服務、命名空間和端點的指令,請參閱 gcloud service-directory
指令群組。
您可以為 L4 ILB 建立 Service Directory 資源,藉此使用私人運作時間檢查功能,監控 L4 內部負載平衡器 (ILB) 的可用性。
建立新的第 4 層 ILB 時,可以使用 Service Directory 提供的自動整合功能;詳情請參閱「在 Service Directory 中設定內部負載平衡器」。
如果您建立的第 4 層 ILB 未使用 Service Directory 提供的自動整合功能,可以手動設定 Service Directory 資源,方法如下:
將 Google Cloud CLI 設為預設使用 Google Cloud 專案,以便建立 Service Directory 資源:
gcloud config set project PROJECT_ID
建立環境變數,用來儲存專案 ID 和專案編號:
export PROJECT_ID=$(gcloud config get-value core/project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
如要允許所有運作時間檢查程式將資料傳輸至 L4 ILB,請啟用 ILB 的全域存取權:
gcloud compute forwarding-rules update ILB_FORWARDING_RULE_NAME \ --region=ILB_REGION --allow-global-access
如果 L4 ILB 不允許全域存取,則只有在 ILB_REGION 是下列其中一項時,才能使用正常運作時間指標:
us-east4
us-central1
us-west1
europe-west1
southamerica-east1
asia-southeast1
建立 Service Directory 命名空間:
gcloud service-directory namespaces create PRIVATE_NAMESPACE_FOR_ILB\ --location=REGION
在命名空間中建立 Service Directory 服務:
gcloud service-directory services create PRIVATE_SERVICE_FOR_ILB \ --namespace PRIVATE_NAMESPACE_FOR_ILB --location=REGION
建立環境變數,以保留私人網路中負載平衡器的 IP 位址:
export INTERNAL_IP=$( gcloud compute forwarding-rules describe ILB_FORWARDING_RULE_NAME\ --region=ILB_REGION --format='get(IPAddress)')
建立包含內部 IP 位址和通訊埠的 Service Directory 端點:
gcloud service-directory endpoints create PRIVATE_ENDPOINT_FOR_ILB \ --location=ILB_REGION --namespace=PRIVATE_NAMESPACE_FOR_ILB \ --service=PRIVATE_SERVICE_FOR_ILB \ --network=projects/$PROJECT_NUMBER/locations/global/networks/PRIVATE_CHECK_NETWORK \ --address=$INTERNAL_IP --port=80
授權給服務帳戶
運作時間檢查會使用 Monitoring 擁有的服務帳戶,管理與 Service Directory 服務的互動。服務帳戶名稱的格式如下:
service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com
如果這個服務帳戶不存在,當您建立私密正常運作時間檢查時,Monitoring 會建立該服務帳戶。您無法建立這個服務帳戶。
建立私人運作時間檢查時,Monitoring 會嘗試授予服務帳戶兩個 Service Directory 角色。不過,使用 API 時, Google Cloud 專案設定可能會禁止 Monitoring 將角色授予服務帳戶。在這種情況下,系統會無法建立運作時間檢查。
本節說明如何將必要角色授予現有服務帳戶:
Google Cloud 控制台
使用 Google Cloud 控制台時,選取「內部 IP」做為運作時間檢查的資源類型後,系統會提示您授權服務帳戶。
API:設定專案範圍
如要將服務目錄角色授予現有服務帳戶,請按照下列步驟操作:
將 gcloud CLI 設為預設使用要建立運作時間檢查的 Google Cloud 專案:
gcloud config set project PROJECT_ID
建立環境變數,用來儲存專案 ID 和專案編號:
export PROJECT_ID=$(gcloud config get-value core/project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
執行下列指令:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \ --role='roles/servicedirectory.viewer'
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \ --role='roles/servicedirectory.pscAuthorizedService'
上述指令會將下列角色授予服務帳戶:
roles/servicedirectory.viewer
roles/servicedirectory.pscAuthorizedService
API:受監控的專案
如要將服務目錄角色授予現有服務帳戶,請按照下列步驟操作:
將 gcloud CLI 設為預設使用要建立運作時間檢查的 Google Cloud 專案:
gcloud config set project PROJECT_ID
建立環境變數,用來儲存專案 ID 和專案編號:
export PROJECT_ID=$(gcloud config get-value core/project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
建立環境變數,用來保存定義 Service Directory 服務的專案 ID:
export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
這項專案必須位於運作時間檢查專案的指標範圍內。
建立環境變數,用來保存定義網路的專案 ID:
export NETWORK_PROJECT_ID=NETWORK_PROJECT_ID
這個專案不需要位於正常運作時間檢查專案的指標範圍內。
執行下列指令:
gcloud projects add-iam-policy-binding $MONITORED_PROJECT_ID \ --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \ --role='roles/servicedirectory.viewer'
gcloud projects add-iam-policy-binding $NETWORK_PROJECT_ID \ --member='serviceAccount:service-'$PROJECT_NUMBER'@gcp-sa-monitoring-notification.iam.gserviceaccount.com' \ --role='roles/servicedirectory.pscAuthorizedService'
上述指令會將下列角色授予服務帳戶:
roles/servicedirectory.viewer
,適用於已設定 Service Directory 服務的受監控專案。$SERVICE_MONITORED_PROJECT_ID
roles/servicedirectory.pscAuthorizedService
,也就是設定私有網路的專案。$NETWORK_PROJECT_ID
設定防火牆規則
您必須建立防火牆規則,允許來自 35.199.192.0/19 路徑的輸入 TCP 流量。35.199.192.0/19 的路徑支援連線至使用私人路由的轉送目標。詳情請參閱「虛擬私有雲路徑」。
Google Cloud 控制台
使用 Google Cloud 控制台時,選取「內部 IP」做為運作時間檢查的資源類型後,系統會提示您設定防火牆規則。
gcloud CLI
如要建立防火牆規則,允許透過防火牆的傳入 TCP 流量來存取私人網路,請執行下列指令:
將 gcloud CLI 設為預設使用要建立運作時間檢查的 Google Cloud 專案:
gcloud config set project PROJECT_ID
建立環境變數,用來儲存專案 ID 和專案編號:
export PROJECT_ID=$(gcloud config get-value core/project)
建立網路規則:
gcloud compute firewall-rules create PRIVATE_CHECK_NETWORK_HOPE_RULE \ --network="PRIVATE_CHECK_NETWORK" \ --action=allow --direction=ingress --source-ranges="35.199.192.0/19" \ --rules=tcp --project="$PROJECT_ID"
在上述指令中,PRIVATE_CHECK_NETWORK 是要附加這項規則的網路,而 PRIVATE_CHECK_NETWORK_HOPE_RULE 則是防火牆規則的名稱。
如要進一步瞭解這個步驟,請參閱「設定網路專案」。
限制
使用私人正常運作時間檢查時,系統會停用 SSL 憑證驗證,無論設定為何皆是如此。
私人運作時間檢查不支援有重新導向的端點。
疑難排解
本節說明使用私人正常運作時間檢查時可能會遇到的一些錯誤,並提供解決方法。
無法建立運作時間檢查
Google Cloud 專案設定可能會禁止修改指派給服務帳戶的角色,而服務帳戶會使用這些角色管理與 Service Directory 服務的互動。在這種情況下,系統會無法建立運作時間檢查。
本節說明如何授予服務帳戶所需的角色:
Google Cloud 控制台
使用 Google Cloud 控制台建立私人運作時間檢查時, Google Cloud 控制台會發出指令,將 Service Directory 角色授予服務帳戶。
如要瞭解如何將角色授予服務帳戶,請參閱授權服務帳戶。
API:設定專案範圍
第一次為單一 Google Cloud 專案中的 Service Directory 服務和私人資源建立私人正常運作時間檢查時,要求可能會成功或失敗。結果取決於您是否已在專案中停用服務帳戶的自動角色授予功能:
如果專案允許自動授予服務帳戶角色,首次建立正常運作時間檢查時就會成功。系統會為您建立服務帳戶,並授予必要角色。
如果專案不允許自動授予服務帳戶角色,首次建立正常運作時間檢查時就會失敗。系統會建立服務帳戶,但不會授予任何角色。
如果無法建立運作時間檢查,請執行下列操作:
- 為服務帳戶提供授權。
- 權限可能需要幾分鐘才會全面生效。
- 請再次嘗試建立私人運作時間檢查。
API:受監控的專案
首次建立私人正常運作時間檢查,以監控專案中的 Service Directory 服務或不同 Google Cloud 專案中的私人資源為目標時,要求會失敗,並導致建立 Monitoring 服務帳戶。
授權服務帳戶的方式取決於您使用的Google Cloud 專案數量及其關係。您最多可能需要參與四個專案:
- 您定義私人運作時間檢查的專案。
- 您在其中設定 Service Directory 服務的受監控專案。
- 您在其中設定虛擬私有雲網路的專案。
- 設定 VM 或負載平衡器等網路資源的專案。這項專案與本文討論的服務帳戶授權無關。
如果無法建立第一個運作時間檢查,請按照下列步驟操作:
- 為服務帳戶提供授權。
- 權限可能需要幾分鐘才會全面生效。
- 請再次嘗試建立私人運作時間檢查。
存取遭拒
運作時間檢查失敗,並傳回 VPC_ACCESS_DENIED
結果。這表示網路設定或服務帳戶授權有誤。
如「建立正常運作時間檢查失敗」一文所述,檢查您使用範圍專案或受監控專案的服務帳戶授權。
如要進一步瞭解如何存取私人網路,請參閱設定網路專案。
私人運作時間檢查結果異常
您有一個服務目錄服務,其中包含多個 VM,且服務設定包含多個端點。關閉其中一個 VM 後,運作時間檢查仍會顯示成功。
如果服務設定包含多個端點,系統會隨機選擇一個。如果與所選端點相關聯的 VM 正在執行,即使其中一個 VM 停止運作,運作時間檢查仍會成功。
預設標頭
運作時間檢查傳回錯誤或非預期結果。如果您覆寫了預設標頭值,就可能發生這種情況。
針對目標端點傳送私有正常運作時間檢查要求時,要求會包含下列標頭和值:
標頭 | 值 |
---|---|
HTTP_USER_AGENT |
GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring) |
HTTP_CONNECTION |
keep-alive |
HTTP_HOST |
Service Directory 端點的 IP |
HTTP_ACCEPT_ENCODING |
gzip 、deflate 、br |
CONTENT_LENGTH |
根據運作時間貼文資料計算 |
如果嘗試覆寫這些值,可能會發生下列情況:
- 運作時間檢查回報錯誤
- 系統會捨棄覆寫值,並改用表格中的值
無法顯示資料
如果運作時間檢查與服務目錄服務位於不同專案,運作時間檢查資訊主頁就不會顯示任何資料。 Google Cloud
確認包含正常運作時間檢查的 Google Cloud 專案,會監控包含 Service Directory 服務的 Google Cloud 專案。
如要進一步瞭解如何列出受監控的專案及新增其他專案,請參閱「為多個專案設定指標範圍」。