建立私人運作時間檢查

本文說明如何設定私人運作時間檢查。有了私人運作時間檢查,您就能透過私人網路將 HTTP 或 TCP 要求傳送至客戶的虛擬私有雲 (VPC) 網路,同時強制執行 Identity and Access Management (IAM) 限制和 VPC Service Controls 範圍。私人運作時間檢查可透過私人網路將要求傳送至資源,例如虛擬機器 (VM) 或 L4 內部負載平衡器 (ILB)。

Service Directory 服務會記錄私人網路上資源的內部 IP 位址,前提是已啟用私人網路存取權。如要使用私人運作時間檢查,您必須使用 Service Directory 產品設定私人網路存取權。

儲存私人服務時間檢查的 Google Cloud 專案和儲存 Service Directory 服務的 Google Cloud 專案可以是不同的專案。您可以使用指標範圍,透過 Cloud Monitoring 監控單一專案中多個Google Cloud 專案的資源。定義運作時間檢查的專案是指標範圍的範圍專案;指標範圍是範圍專案監控的所有專案清單。Service Directory 服務可能會在設定範圍的專案中定義,或是在指標範圍內的專案中定義。如要進一步瞭解指標範圍,請參閱「指標範圍總覽」。

私人網路及其資源 (例如 VM 或負載平衡器) 也可以位於不同的 Google Cloud 專案中。這個專案不必位於運作時間檢查的限定範圍專案的指標範圍內。Service Directory 服務會收集正常運作時間指標,因此必須位於指標範圍內,但其封裝的資源則不在此範圍內。

本文件說明如何使用 Google Cloud 控制台或 API 設定私人網路,以及為該網路設定 Service Directory 資源。這些 API 範例假設私人網路和 Service Directory 服務位於運作時間檢查的範圍專案中。不過,建立私人運作時間檢查一文也說明如何使用 API 建立運作時間檢查,在指標範圍內使用 Service Directory 服務。

如要瞭解如何設定使用公開 IP 位址的運作時間檢查,請參閱「建立公開運作時間檢查」。如要瞭解如何管理及監控正常運作時間檢查,請參閱本文件的「後續步驟」一節。

這項功能僅支援 Google Cloud 專案。如要設定 App Hub,請選取 App Hub 主機專案或啟用應用程式的資料夾管理專案。

事前準備

  1. 啟用下列 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 控制台

    1. 在 Google Cloud 控制台中,選取要啟用 API 的 Google Cloud 專案,然後前往「API 和服務」頁面:

      前往「API 和服務」

    2. 按一下「啟用 API 和服務」按鈕。

    3. 搜尋「Monitoring」。

    4. 在搜尋結果中,點按「Stackdriver Monitoring API」。

    5. 如果畫面顯示「API enabled」(API 已啟用),代表 API 已啟用。如果沒有,請按一下「啟用」

    gcloud CLI

    1. 如果您尚未在工作站上安裝 Google Cloud CLI,請參閱「安裝 gcloud CLI」。

    2. 如要查看是否已啟用 Monitoring API,請在工作站上執行下列指令,並將 PROJECT_ID 替換為要啟用 API 的專案 ID:

      gcloud services list --project=PROJECT_ID
      

      如果輸出結果中出現 monitoring.googleapis.com,表示 API 已啟用。

    3. 如果 API 未啟用,請執行下列指令進行啟用:

      gcloud services enable monitoring --project=PROJECT_ID
      

      詳情請參閱 gcloud services

    您可以使用相同的步驟啟用其他 API:

    • 如要使用 Google Cloud 控制台,請搜尋顯示名稱,例如「Service Directory API」。
    • 如要使用 gcloud CLI,請指定 googleapis.com 名稱的第一個元素,例如 servicedirectory
  2. 設定要用來接收通知的通知管道。建議您建立多種通知管道。詳情請參閱「建立及管理通知管道」。

  3. 設定私人網路,並設定 VM 或 ILB 以便存取該私人網路。詳情請參閱「私人服務存取權」。

    指定 ILB 的私人檢查作業僅限於有運作時間檢查器的區域。運作時間檢查區塊 USA 包含 USA_OREGONUSA_IOWAUSA_VIRGINIA 區塊。每個 USA_* 區域都有一個檢查器,而 USA 則包含所有三個檢查器。其他上線時間檢查區域 (EUROPESOUTH_AMERICAASIA_PACIFIC) 各有一個檢查器。如要移除這項限制,您必須設定負載平衡器的全域存取權。如要進一步瞭解如何設定全球存取權,請參閱本文件「設定服務目錄資源」一節中的 ILB 分頁。

    如果您打算檢查不允許全球存取權的 ILB,請為 ILB 選取下列其中一個區域:

    • us-east4
    • us-central1
    • us-west1
    • europe-west1
    • southamerica-east1
    • asia-southeast1
  4. 決定要使用的介面:

    • Google Cloud 控制台:讓您在 VM 服務要求時建立運作時間檢查。這個介面會引導您設定 Service Directory 資源、授權服務帳戶,以及設定網路防火牆規則。

    • 指令列介面:您可以使用 Google Cloud CLI 和 Cloud Monitoring API,在 ILB 和 VM 處理要求時建立私人運作時間檢查。

  5. 如果您打算使用指令列設定私人運作時間檢查,請完成前置作業步驟

建立私人運作時間檢查

本節說明如何建立及設定 Service Directory 服務的私人運作時間檢查:

  • 如要使用 Google Cloud 控制台,請選取「Google Cloud 控制台」分頁標籤。

  • 如要使用 Cloud Monitoring API,並將 Service Directory 服務設定為與正常運作時間檢查相同的 Google Cloud 專案,請選取「API:範圍專案」分頁標籤。

  • 如要使用 Cloud Monitoring API,並將 Service Directory 服務設為在專案中,以正常運作時間檢查專案的指標範圍監控,請選取「API:監控專案」分頁標籤。

Google Cloud 控制台

如要使用 Google Cloud 控制台建立運作時間檢查,請執行下列操作:

  1. 在 Google Cloud 控制台中,前往 「Uptime checks」頁面:

    前往「Uptime checks」(運作時間檢查)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。如要設定 App Hub,請選取 App Hub 主機專案或啟用應用程式的資料夾管理專案。
  3. 按一下「建立運作時間檢查」

    建立運作時間檢查對話方塊。

  4. 指定私人運作時間檢查:

    1. 選取通訊協定,可選項包括 HTTPHTTPSTCP

    2. 選擇「Internal IP」資源類型。

  5. 如果您沒有為專案設定 Service Directory 服務,或是想要建立 Service Directory 服務,請按一下「View」,然後完成「Private Uptime Check Prerequisites」窗格:

    1. 看見提示時,請啟用 Compute Engine API 或 Service Directory API。啟用 API 可能需要一分鐘的時間才能完成。

    2. 展開 「服務帳戶」 (如有顯示),然後按一下「建立服務帳戶」

      如果監控服務帳戶不存在,系統會建立一個。接著,監控功能會授予服務帳戶兩個服務目錄角色。

    3. 展開 「Service Directory」選單,然後執行下列操作:

      1. 展開 「Region」,然後選取提供要求的 VM 所在區域。
      2. 展開 「命名空間」,然後選取現有的 Service Directory 命名空間,或是按一下「建立命名空間」來建立命名空間。
      3. 按一下「服務名稱」,然後輸入服務名稱。服務是私人運作時間檢查的目標。
      4. 按一下「端點名稱」,然後輸入端點名稱。端點是一組 IP 位址和通訊埠值,服務可用來處理要求。如果服務包含多個端點,系統會隨機選擇一個端點。
      5. 展開 「網路」,然後選取私人網路。
      6. 展開 「Instance」,然後選取在私人網路上提供要求的 VM。選取執行個體後,系統會顯示內部 IP 位址。
      7. 按一下 [完成]
    4. 展開 「防火牆規則」

      1. 展開 「網路」,然後選取要套用網路規則的網路。

      2. 按一下「建立防火牆規則」

        防火牆規則會啟用來自 35.199.192.0/19 路由的傳入 TCP 流量。從 35.199.192.0/19 建立的路徑可連線至使用私人路由的轉送目標。詳情請參閱「虛擬私有雲端路徑」。

  6. 如要在「Private Uptime Check」窗格中指定要使用的 Service Directory 服務,請執行下列任一操作:

    • 選取「使用完整服務名稱」,然後輸入服務的完整名稱:

      projects/SERVICE_DIRECTORY_PROJECT_ID/locations/REGION/namespaces/PRIVATE_NAMESPACE/services/PRIVATE_SERVICE
      
    • 使用選單選取「Region」、「Namespace」和「Service」。如果您已建立服務,系統會自動選取這些欄位。

  7. 在「Private Uptime Check」(私人運作時間檢查) 窗格中,填入運作時間檢查目標的說明:

    1. 選用:輸入要求的路徑元件。

      使用 HTTP 或 HTTPS 通訊協定的私人運作時間檢查會將要求傳送至 http://target/path。在此運算式中,target 是 Service Directory 端點中設定的內部 IP 位址。

      如果您將「Path」欄位留空,或將值設為 /,系統會將要求發送至 http://target/

    2. 選用:如要設定運作時間檢查的執行頻率,請使用「檢查頻率」欄位。

    3. 選用:如要選取檢查區域,或設定驗證、HTTP 和 HTTPS 檢查的標頭和其他值,請按一下「更多目標選項」

      • 地區:選取運作時間檢查會接收要求的地區。運作時間檢查必須至少包含三個檢查器。除了美國,所有地區都會有一位檢查員,美國則有三位檢查員。預設設定「全球」包含所有區域。
      • 要求方法:選取 GETPOST
      • 內容:針對 HTTP POST 檢查,請輸入經過網址編碼的內容;您必須自行進行編碼。對於所有其他檢查,請將這個欄位留空。
      • 主機標頭:設定私人運作時間檢查時,請勿設定這個欄位。
      • 通訊埠:您在此處設定的任何值都會覆寫 Service Directory 端點設定中的通訊埠。如果您想使用端點設定,請勿在此設定值。
      • 自訂標頭:提供自訂標頭,並視需要進行加密。加密後,表單中會隱藏標頭的值。如果您不希望他人看到驗證相關的標頭,可以使用加密功能。
      • 「Authentication」(驗證):提供單一使用者名稱和密碼。這些值會做為授權標頭傳送。如果您在此處設定值,請不要另外設定授權標頭。如果您設定了授權標頭,請勿在此處設定值。表單中一律會隱藏密碼。
  8. 按一下「繼續」,然後設定回應要求。這個部分的所有設定都會設為預設值:

    • 如要為運作時間檢查設定逾時期限,請使用「回應逾時」欄位。如果在這個期間內未從多個位置收到回應,運作時間檢查就會失敗。

    • 如要設定運作時間檢查以執行內容比對,請確認切換按鈕標籤為「已啟用內容比對」

      • 從選項選單中選取「回覆內容比對類型」。這個欄位會決定回應內容與傳回資料的比較方式。舉例來說,假設回應內容為 abcd,且內容比對類型為「包含」。只有在回應資料包含 abcd 時,運作時間檢查才會成功。詳情請參閱「驗證回應資料」。
      • 輸入回覆內容。回應內容必須是長度不超過 1024 個位元組的字串。在 API 中,這個欄位是 ContentMatcher 物件。
    • 如要避免因運作時間檢查而建立記錄項目,請清除「記錄失敗的檢查項目」

    • 針對 HTTP 運作時間檢查,請設定可接受的回應代碼。根據預設,HTTP 運作時間檢查會將任何 2xx 回應標示為成功回應。

  9. 按一下「繼續」,然後設定警告政策和通知。

    如要在運作時間檢查失敗時收到通知,請建立快訊政策,並為該政策設定通知管道

    1. 選用:更新警告政策的名稱。
    2. 選用:在「時間長度」欄位中,選取運作時間檢查必須失敗多久才能傳送通知。根據預設,當至少兩個區域回報運作時間檢查失敗,且持續時間至少一分鐘時,系統就會傳送通知。
    3. 在「Notification channels」方塊中,展開 「Menu」,選取要新增的管道,然後按一下「OK」

      在選單中,通知管道會依照字母順序分組,每個管道類型各自為一組。

    如果您不想建立快訊政策,請確認切換按鈕的文字為「Do not create an alert」

  10. 按一下「繼續」,然後完成運作時間檢查:

    1. 輸入運作時間檢查的描述性標題。

    2. 選用:如要為運作時間檢查新增使用者定義的標籤,請執行下列操作:

      1. 按一下 「顯示使用者標籤」
      2. 在「Key」欄位中輸入標籤名稱。標籤名稱的開頭須為小寫英文字母,且可包含小寫英文字母、數字、底線和破折號。例如輸入 severity
      3. 在「Value」欄位中,輸入標籤的值。標籤值可以包含小寫英文字母、數字、底線和破折號。例如輸入 critical
      4. 針對每個額外標籤,請按一下「Add user label」(新增使用者標籤),然後輸入標籤的鍵和值。
    3. 如要驗證運作時間檢查設定,請按一下「Test」。如果結果與預期不符,請參閱「疑難排解」一節,修正設定,然後重複執行驗證步驟。

    4. 按一下 [建立]。

API:設定專案範圍

如要建立私人運作時間檢查的設定,請建立 UptimeCheckConfig 物件,並將該物件傳遞至 Cloud Monitoring API 中的 uptimeCheckConfigs.create 方法。

私人運作時間檢查的 UptimeCheckConfig 物件與公開運作時間檢查的物件有以下差異:

  • 在運作時間檢查設定中指定的監控資源必須是 servicedirectory_service 類型。這個資源類型包含下列標籤:

    • project_id:與服務目錄服務相關聯的專案 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 專案中建立私人運作時間檢查,請執行下列操作:

  1. 設定 gcloud CLI 的預設 Google Cloud 專案:

    gcloud config set project PROJECT_ID
    
  2. 建立用於儲存專案 ID 的環境變數:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. 建立環境變數以存放存取權杖:

    export TOKEN=`gcloud auth print-access-token`
    
  4. 使用 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:與服務目錄服務相關聯的專案 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 專案中,建立私人運作時間檢查,請執行下列操作:

  1. 將 gcloud CLI 設為預設為要建立運作時間檢查的 Google Cloud 專案:

    gcloud config set project PROJECT_ID
    
  2. 建立用於儲存專案 ID 的環境變數:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. 建立用於儲存Google Cloud 專案 (其中定義了服務目錄服務) 的專案 ID 的環境變數:

    export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
    

    這項專案必須位於運作時間檢查專案的指標範圍內。

  4. 建立環境變數以存放存取權杖:

    export TOKEN=`gcloud auth print-access-token`
    
  5. 使用 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 控制台會引導您完成所有必要步驟。

如果您打算使用指令列設定私人運作時間檢查,請先完成下列步驟,再建立運作時間檢查:

  1. 設定 Service Directory 資源
  2. 為服務帳戶授權
  3. 設定防火牆規則

設定 Service Directory 資源

私人運作時間檢查會使用 Service Directory 服務記錄的內部 IP 位址,判斷資源的可用性。您可以為下列資源設定 Service Directory:

  • 私人網路中的 VM
  • L4 內部負載平衡器 (ILB)

如要使用私人運作時間檢查,您必須設定下列 Service Directory 資源:

  • 端點:端點是一組 IP 位址和通訊埠值,服務可用來處理要求。如果服務包含多個端點,系統會隨機選擇一個端點。
  • 服務:服務是一組端點,可提供一組行為。服務是私人運作時間檢查的目標。
  • 命名空間:命名空間會保存一組服務名稱及其相關聯的端點。您可以使用命名空間將服務分組,以便進行一致的管理。

您可以使用 gcloud CLI 或Google Cloud 主控台設定這些資源。使用主控台時,設定步驟會顯示在「Create Uptime Check」對話方塊中。

Google Cloud 控制台

使用 Google Cloud 控制台時,選取「內部 IP」做為運作時間檢查的資源類型後,系統會提示您建立 Service Directory 和服務。

gcloud CLI - VM

如要瞭解本文件中用於服務、命名空間和端點的指令,請參閱 gcloud service-directory 指令群組

如要為 VM 建立服務目錄資源,請按照下列步驟操作:

  1. 將 Google Cloud CLI 設為預設使用 Google Cloud 要建立 Service Directory 資源的專案:

    gcloud config set project PROJECT_ID
    
  2. 建立用於儲存專案 ID 和專案編號的環境變數:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. 建立 Service Directory 命名空間:

    gcloud service-directory namespaces create PRIVATE_NAMESPACE --location=REGION
    
  4. 在命名空間中建立 Service Directory 服務:

    gcloud service-directory services create PRIVATE_SERVICE \
    --namespace PRIVATE_NAMESPACE --location=REGION
    
  5. 建立環境變數,儲存私人網路中 VM 的 IP 位址:

    export INTERNAL_IP=$(gcloud compute instances describe --zone=ZONE \
    PRIVATE_SERVICE_INSTANCE --format='get(networkInterfaces[0].networkIP)')
    
  6. 建立包含內部 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) 的可用性。

建立新的 L4 ILB 時,您可以使用 Service Directory 提供的自動整合功能。如需更多資訊,請參閱「在 Service Directory 中設定內部負載平衡器」。

如果您建立的 L4 ILB 並未使用 Service Directory 提供的自動整合功能,則可以按照下列步驟手動設定 Service Directory 資源:

  1. 將 Google Cloud CLI 設為預設使用 Google Cloud 要建立 Service Directory 資源的專案:

    gcloud config set project PROJECT_ID
    
  2. 建立用於儲存專案 ID 和專案編號的環境變數:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. 如要允許所有運作時間檢查器將資料傳輸至 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
  4. 建立 Service Directory 命名空間:

    gcloud service-directory namespaces create PRIVATE_NAMESPACE_FOR_ILB\
    --location=REGION
    
  5. 在命名空間中建立 Service Directory 服務:

    gcloud service-directory services create PRIVATE_SERVICE_FOR_ILB \
    --namespace PRIVATE_NAMESPACE_FOR_ILB --location=REGION
    
  6. 建立環境變數,用於儲存私人網路上的負載平衡器 IP 位址:

    export INTERNAL_IP=$( gcloud compute forwarding-rules describe ILB_FORWARDING_RULE_NAME\
    --region=ILB_REGION --format='get(IPAddress)')
    
  7. 建立包含內部 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
    

授權給服務帳戶

運作時間檢查會使用由監控服務擁有的服務帳戶,管理與 Service Directory 服務的互動情形。服務帳戶名稱的格式如下:

service-PROJECT_NUMBER@gcp-sa-monitoring-notification.iam.gserviceaccount.com

如果這個服務帳戶不存在,監控服務會在您建立私人正常運作時間檢查時建立服務帳戶。您無法建立這個服務帳戶。

建立私人運作時間檢查時,監控會嘗試授予服務帳戶兩個 Service Directory 角色。不過,使用 API 時,您的 Google Cloud 專案設定可能會導致 Monitoring 無法將角色授予服務帳戶。在這種情況下,運作時間檢查的建立作業會失敗。

本節說明如何將必要角色授予現有服務帳戶:

Google Cloud 控制台

使用 Google Cloud 主控台時,選取「內部 IP」做為運作時間檢查的資源類型後,系統會提示您授權服務帳戶。

API:設定專案範圍

如要將 服務目錄角色授予現有服務帳戶,請按照下列步驟操作:

  1. 將 gcloud CLI 設為預設為要建立運作時間檢查的 Google Cloud 專案:

    gcloud config set project PROJECT_ID
    
  2. 建立用於儲存專案 ID 和專案編號的環境變數:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. 執行下列指令:

    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:受監控的專案

如要將 服務目錄角色授予現有服務帳戶,請按照下列步驟操作:

  1. 將 gcloud CLI 設為預設為要建立運作時間檢查的 Google Cloud 專案:

    gcloud config set project PROJECT_ID
    
  2. 建立用於儲存專案 ID 和專案編號的環境變數:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='get(projectNumber)')
    
  3. 建立環境變數,用於存放定義 Service Directory 服務的專案專案 ID:

    export MONITORED_PROJECT_ID=MONITORED_PROJECT_ID
    

    這項專案必須位於運作時間檢查專案的指標範圍內。

  4. 建立環境變數,用於存放定義網路的專案專案 ID:

    export NETWORK_PROJECT_ID=NETWORK_PROJECT_ID
    

    這個專案不需要位於正常運作時間檢查專案的指標範圍內。

  5. 執行下列指令:

    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 輸入來存取私人網路,請執行下列指令:

  1. 將 gcloud CLI 設為預設為要建立運作時間檢查的 Google Cloud 專案:

    gcloud config set project PROJECT_ID
    
  2. 建立用於儲存專案 ID 和專案編號的環境變數:

    export PROJECT_ID=$(gcloud config get-value core/project)
    
  3. 建立網路規則:

    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 專案設定可能會禁止修改指派給服務帳戶的角色,這些角色會用於管理與服務目錄服務的互動。在這種情況下,運作時間檢查的建立作業會失敗。

本節說明如何授予服務帳戶所需的角色:

Google Cloud 控制台

當您使用 Google Cloud 主控台建立私人運作時間檢查時, Google Cloud 主控台會發出指令,將 Service Directory 角色授予服務帳戶。

如要瞭解如何將角色授予服務帳戶,請參閱「授權服務帳戶」一文。

API:設定專案範圍

在單一 Google Cloud 專案中,您首次為 Service Directory 服務和私人資源建立私人運作時間檢查時,要求可能會成功或失敗。結果取決於您是否已在專案中停用服務帳戶的自動角色授予功能

  • 如果專案允許為服務帳戶自動授予角色,則首次建立服務時間檢查作業會成功。系統會為您建立服務帳戶,並授予必要的角色。

  • 如果專案不允許為服務帳戶自動授予角色,則首次建立正常運作時間檢查作業會失敗。已建立服務帳戶,但未授予任何角色。

如果無法建立運作時間檢查,請執行下列操作:

  1. 授權服務帳戶
  2. 請稍候幾分鐘,讓權限全面生效。
  3. 請再次嘗試建立私人運作時間檢查。

API:受監控的專案

第一次建立私人正常運作時間檢查時,如果指定監控專案中的 Service Directory 服務或不同 Google Cloud 專案中的私人資源,請求會失敗,並導致 Monitoring 服務帳戶建立作業失敗。

授權服務帳戶的方式取決於您使用的Google Cloud 專案數量和相關關係。您最多可能會涉及四個專案:

  • 您定義私人運作時間檢查的專案。
  • 您設定 Service Directory 服務的受監控專案。
  • 您設定虛擬私有雲網路的專案。
  • 設定 VM 或負載平衡器等網路資源的專案。這項專案在本文所述的服務帳戶授權程序中沒有任何角色。

如果無法建立第一個運作時間檢查,請執行下列操作:

  1. 授權服務帳戶
  2. 請稍候幾分鐘,讓權限全面生效。
  3. 請再次嘗試建立私人運作時間檢查。

存取遭拒

您的運作時間檢查失敗,並傳回 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 gzipdeflatebr
CONTENT_LENGTH 計算結果來自運作時間後發布資料

如果您嘗試覆寫這些值,可能會發生以下情況:

  • 運作時間檢查回報錯誤
  • 覆寫值會遭到捨棄,並替換為表格中的值

沒有顯示任何資料

如果運作時間檢查位於與 Service Directory 服務不同的專案中,您就不會在運作時間檢查資訊主頁上看到任何資料。 Google Cloud

請確認包含服務時間檢查的 Google Cloud 專案,會監控包含 Service Directory 服務的 Google Cloud 專案。

如要進一步瞭解如何列出受監控的專案並新增其他專案,請參閱「為多個專案設定指標範圍」。

後續步驟