查看運作時間檢查

本頁面說明如何執行下列操作:

  • 查看運作時間檢查的狀態。
  • 取得運作時間檢查使用的 IP 位址清單。

如要建立、更新及刪除您的運作時間檢查,請參閱管理運作時間檢查頁面。 您的每個工作區最多可以有 100 個運作時間檢查。

運作時間檢查總覽

Monitoring 的總覽頁面會顯示所有的運作時間檢查,以及個別檢查的詳細資訊主頁。

如要查看總覽,請前往「Uptime Checks」(運作時間檢查) >「Uptime Checks Overview」(運作時間檢查總覽)

前往運作時間檢查總覽

在每次運作時間檢查的資料中,您都可以查看每個位置的最新檢查結果,如以下螢幕擷取畫面所示:

運作時間檢查監控程式

資訊主頁

如要取得單一運作時間檢查的詳細狀態,請按一下總覽中的任一檢查,或按一下左側導覽的 [Uptime Checks] (運作時間檢查) 選單清單中的任一檢查。範例資訊主頁如下:

運作時間檢查詳細資料

「Location results」(位置結果) 區塊顯示所有適用地區的運作時間檢查結果。地區旁的綠點表示在該地區最後一次執行檢查成功;紅點表示失敗。若將滑鼠移到點上,畫面會顯示最後一次執行的延遲時間,以及 HTTP 回應碼 (如果適用)。

「Check config」(檢查設定) 區塊包含運作時間檢查的說明,其中包括「檢查 ID」。這個 ID 是在運作時間檢查建立時所指派。ID 值對應於 API 呼叫中的 [UPTIME_CHECK_ID] 值。

API

如要擷取現有運作時間檢查設定,請使用 projects.uptimeCheckConfigs.list

在 API 中,系統是以 [UPTIME_CHECK_ID] 做為運作時間檢查的識別依據。此 ID 是運作時間檢查顯示名稱的重新拼寫形式。例如,顯示名稱「my uptime check」可能會變為 ID「my-uptime-check」,或者以更複雜的形式對應。

Stackdriver Monitoring 主控台「Uptime Overview」(運作時間總覽) 中的顯示名稱是由您指派。

運作時間百分比

「Uptime」(運作時間) 值是以 (S/T)*100 計算的百分比,其中 S 是所有位置的成功檢查回應數;T 是所有位置的檢查回應總數。

如果是群組檢查,則 ST 的值會是當下所有群組成員的加總。

例如,在 25 分鐘的期間裡,有一分鐘期間是從所有地區執行的運作時間檢查會從 6 個地區中的每個地區取得 25 次要求,總計有 150 次要求。如果資訊主頁回報 83.3% 的運作時間,這就代表 150 次要求中有 25 次是失敗的。

取得運作時間檢查 IP 位址

如果您正在檢查位於防火牆後的服務,可以設定讓服務的防火牆接受來自目前這組 IP 位址的流量,將其用於運作時間檢查。如要取得 IP 位址,請使用下列操作說明:

主控台

1. 前往專案的「Uptime Checks」(運作時間檢查) 頁面。

  1. 在「Add Uptime Check」(新增運作時間檢查) 旁的「More」(更多) 選單中,選取 [Download Source IPs] (下載來源 IP)

    運作時間檢查下載 IP

API

  1. 呼叫 Monitoring API 的 uptimeCheckIps.list 方法。

  2. 這個方法會傳回每個 IP 位址的下列資訊:

    • 地區:USAEUROPESOUTH_AMERICAASIA_PACIFIC
    • 地區內更為具體的位置。
    • IPv4 或 IPv6 格式的 IP 位址,非範圍。

C#

public static object ListUptimeCheckIps()
{
    var client = UptimeCheckServiceClient.Create();
    var ips = client.ListUptimeCheckIps(new ListUptimeCheckIpsRequest());
    foreach (UptimeCheckIp ip in ips)
    {
        Console.WriteLine("{0,20} {1}", ip.IpAddress, ip.Location);
    }
    return 0;
}

Java

private static void listUptimeCheckIPs() throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    ListUptimeCheckIpsPagedResponse response =
        client.listUptimeCheckIps(ListUptimeCheckIpsRequest.newBuilder().build());
    for (UptimeCheckIp config : response.iterateAll()) {
      System.out.println(config.getRegion() + " - " + config.getIpAddress());
    }
  } catch (Exception e) {
    usage("Exception listing uptime IPs: " + e.toString());
    throw e;
  }
}

Go

// listIPs is an example of listing uptime check IPs.
func listIPs(w io.Writer) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.ListUptimeCheckIpsRequest{}
	it := client.ListUptimeCheckIps(ctx, req)
	for {
		config, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("ListUptimeCheckIps: %v", err)
		}
		fmt.Fprintln(w, config)
	}
	fmt.Fprintln(w, "Done listing uptime check IPs")
	return nil
}

Node.js

// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');

// Creates a client
const client = new monitoring.UptimeCheckServiceClient();

// List uptime check IPs
const [uptimeCheckIps] = await client.listUptimeCheckIps();
uptimeCheckIps.forEach(uptimeCheckIp => {
  console.log(
    uptimeCheckIp.region,
    uptimeCheckIp.location,
    uptimeCheckIp.ipAddress
  );
});

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * list_uptime_check_ips($projectId);
 * ```
 */
function list_uptime_check_ips($projectId)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $pages = $uptimeCheckClient->listUptimeCheckIps();

    foreach ($pages->iteratePages() as $page) {
        $ips = $page->getResponseObject()->getUptimeCheckIps();
        foreach ($ips as $ip) {
            printf(
                'ip address: %s, region: %s, location: %s' . PHP_EOL,
                $ip->getIpAddress(),
                $ip->getRegion(),
                $ip->getLocation()
            );
        }
    }
}

Python

def list_uptime_check_ips():
    client = monitoring_v3.UptimeCheckServiceClient()
    ips = client.list_uptime_check_ips()
    print(tabulate.tabulate(
        [(ip.region, ip.location, ip.ip_address) for ip in ips],
        ('region', 'location', 'ip_address')
    ))

Ruby

def list_ips
  require "google/cloud/monitoring/v3"
  client = Google::Cloud::Monitoring::V3::UptimeCheck.new

  # Iterate over all results.
  client.list_uptime_check_ips.each do |element|
    puts "#{element.location} #{element.ip_address}"
  end
end

傳回的資訊通常包含約 20 個 IP 位址。運作時間檢查可以來自任何 IP 位址,但每個時間間隔只會使用來自每個地理位置的一個位址。地理位置列在運作時間檢查資訊主頁中,如上一節所示。您也可以使用免費的網頁式服務,識別您下載的 IP 位址註冊於哪些位置。

運作時間檢查使用的 IP 位址可能會變更,但一般而言,頻率不會超過每 15 分鐘一次,且變更前會先行公告。

識別運作時間檢查流量

您可以透過服務要求記錄中的下列資訊,識別來自運作時間檢查伺服器的要求:

  • ipip 欄位包含運作時間檢查伺服器使用的其中一個位址。請參閱取得 IP 位址一文。
  • User-AgentUser-Agent 標頭值一律如下:

    GoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring)
    

    指定 User-Agent 自訂標頭會產生表單驗證錯誤,並會讓檢查設定無法儲存。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Stackdriver Monitoring
需要協助嗎?請前往我們的支援網頁