업타임 체크 관리

업타임 체크는 리소스가 응답하는지 확인하기 위해 리소스에 전송되는 요청입니다. 업타임 체크를 사용하여 VM 인스턴스, App Engine 서비스, URL 또는 AWS 부하 분산기의 가용성을 확인할 수 있습니다.

업타임 체크가 실패하면 이슈를 만드는 알림 정책을 만들어 리소스의 가용성을 모니터링할 수 있습니다. 알림 정책은 이메일이나 다른 채널을 통해 알림을 받도록 구성할 수 있으며 알림에는 응답하지 못한 리소스에 대한 세부정보가 포함될 수 있습니다. Monitoring 업타임 체크 대시보드에서 업타임 체크 결과를 관찰할 수도 있습니다.

이 페이지에서는 다음을 수행하는 방법을 보여줍니다.

  • 새로운 업타임 체크를 만듭니다.
  • 대시보드에서 업타임 체크를 확인합니다.
  • 업타임 체크를 편집합니다.
  • 업타임 체크를 삭제합니다.

가격 책정 페이지와 업타임 체크 모니터링을 설명하는 페이지에 대한 링크는 다음 단계 섹션을 참조하세요.

시작하기 전에

  1. 업타임 체크 사용은 서비스를 보호하는 방화벽의 영향을 받습니다.

    • 확인 중인 리소스가 일반에 공개되지 않은 경우, 업타임 체크 서버에서 들어오는 트래픽을 허용하도록 리소스 방화벽을 구성해야 합니다. IP 주소 목록을 다운로드하려면 IP 주소 가져오기를 참조하세요.
    • 확인 중인 리소스에 외부 IP 주소가 없으면 업타임 체크 시 리소스에 연결할 수 없습니다.
  2. 업타임 체크는 페이지 애셋을 로드하거나 자바스크립트를 실행하지 않으며 업타임 체크의 기본 구성에는 인증이 포함되지 않습니다.

    HTTP 및 HTTPS의 경우 응답이 다른 URL로의 리디렉션이면 업타임 체크로 해당 URL의 데이터가 검색됩니다. 마지막으로, 업타임 체크는 데이터를 평가하여 체크의 성공 여부를 판단합니다.

    성공하려면 다음 조건을 충족해야 합니다.

    • HTTP 상태가 Success입니다.
    • 데이터에 필수 콘텐츠가 지정되지 않았거나 필수 콘텐츠가 있습니다.

가동시간 확인 만들기

이 섹션에서는 업타임 체크를 만들고 구성하는 방법에 대해 설명합니다.

콘솔

Google Cloud Console을 사용하여 업타임 체크를 만들려면 다음을 수행합니다.

  1. Cloud Console에서 Monitoring을 선택합니다.

    Monitoring으로 이동

  2. 업타임 체크를 클릭합니다.

  3. 업타임 체크 만들기를 클릭합니다.

    업타임 체크 만들기 대화 상자.

  4. 업타임 체크를 설명하는 제목을 입력하고 다음을 클릭합니다.

  5. 업타임 체크 대상을 지정합니다.

    1. 프로토콜을 선택합니다. 사용 가능한 옵션은 HTTP, HTTPS, TCP입니다.

    2. 다음 리소스 유형 중 하나를 선택합니다.

      • URL: 모든 IPv4 주소 또는 호스트 이름입니다. 경로와 포트는 따로 입력됩니다.
      • App Engine: App Engine 애플리케이션(모듈)입니다.
      • 인스턴스: Compute Engine 또는 AWS EC2 인스턴스입니다.
      • Elastic Load Balancer: AWS 부하 분산기입니다.
    3. 프로토콜별 필드를 입력합니다.

      • TCP 체크의 경우 포트를 입력합니다.

      • HTTP 및 HTTPS 체크의 경우 호스트 또는 리소스 내에 경로를 입력할 수 있습니다. 이러한 프로토콜을 사용하는 모든 업타임 체크는 http://target/path에 요청을 보냅니다. 이 표현식에서 URL 리소스의 경우 target은 호스트 이름 또는 IP 주소입니다. App Engine 리소스의 경우 target은 서비스 이름에서 파생된 호스트 이름입니다. 인스턴스 및 부하 분산기 리소스의 경우 target은 리소스 또는 리소스 그룹에 제공한 이름에서 파생된 IP 주소입니다.

        path 필드를 비워 두거나 값을 /로 설정하면 요청이 http://target/으로 전송됩니다.

        URL 리소스 example.com/tester에 업타임 체크를 실행하려면 호스트 이름 필드를 example.com으로 설정하고 경로 필드를 /tester로 설정합니다.

        //hello를 지원하는 디스패처로 App Engine에 서버를 배포했다고 가정해보세요. 경로 필드를 비워 두면 업타임 체크가 / 핸들러로 전송됩니다. /hello 핸들러로 업타임 체크를 실행하려면 경로 필드 값을 /hello로 설정합니다.

    4. 리소스별 필드를 입력합니다.

      • URL 리소스에 대해 호스트 이름 필드에 호스트 이름을 입력합니다. 예를 들어 example.com을 입력합니다.

      • App Engine 리소스에 대해 서비스 필드에 서비스 이름을 입력합니다.

      • Elastic Load Balancer인스턴스 리소스의 경우 다음 필드를 작성합니다.

        • 단일 인스턴스 또는 부하 분산기에 업타임 체크를 실행하려면 적용 대상 필드에서 단일을 선택한 다음 단일 메뉴를 사용하여 특정 인스턴스 또는 부하 분산기를 선택합니다.
        • Monitoring 그룹에 업타임 체크를 실행하려면 적용 대상 필드에서 그룹을 선택한 다음 그룹 메뉴를 사용하여 그룹 이름을 선택합니다.
    5. 업타임 체크 빈도 필드는 업타임 체크 실행 빈도를 제어합니다. 기본값을 그대로 두거나 옵션 메뉴에서 값을 선택합니다.

    6. 검사기 리전을 구성하거나 HTTP 및 HTTPS 체크를 위한 SSL 인증서, 인증, 헤더, 포트를 구성하려면 대상 옵션 더보기를 클릭합니다.

      • 리전: 업타임 체크가 요청을 수신할 리전을 선택합니다. 업타임 체크에는 적어도 3개의 검사기가 있어야 합니다. 3개의 검사기가 있는 미국을 제외한 모든 리전에 1개의 검사기가 있습니다. 기본 설정인 전역에는 모든 리전이 포함됩니다.
      • 일반: 가상 호스트를 확인하려면 이 필드를 입력합니다. TCP 체크에서는 이 필드를 사용할 수 없습니다.
      • 포트: 포트 번호를 지정합니다.
      • 커스텀 헤더: 커스텀 헤더를 제공하고 필요한 경우 이를 암호화합니다. 암호화는 양식에서 헤더 값을 숨깁니다. 다른 사용자에게 표시하지 않으려는 인증 관련 헤더에 암호화를 사용합니다.

      • 인증: 단일 사용자 이름과 암호를 제공합니다. 이 값은 승인 헤더로 전송됩니다. 여기에 값을 설정하는 경우에는 승인 헤더를 별도로 설정하지 말고 승인 헤더를 설정하는 경우에는 여기에 값을 설정하지 마세요. 양식에서 비밀번호는 항상 숨겨져 있습니다. TCP 체크에서는 이 필드를 사용할 수 없습니다.

      • SSL 인증서 검증: URL 리소스에 HTTPS를 선택한 경우 기본적으로 서비스는 HTTPS를 통해 연결을 시도하고 SSL 인증서를 검증합니다. URL에 잘못된 인증서가 있으면 업타임 체크에 실패합니다. 잘못된 인증서의 이유로는 만료된 인증서, 자체 서명된 인증서, 도메인 이름이 일치하지 않는 인증서, AIA 확장 프로그램을 사용하는 인증서가 있습니다.

        HTTPS 업타임 체크에서 SSL 인증서를 검증하려면 SSL 인증서 유효성 검사가 선택되어 있는지 확인합니다.

        SSL 인증서 검증을 사용 중지하려면 SSL 인증서 유효성 검사가 선택 취소되어 있는지 확인하세요.

        AIA(Authority Information Access) 확장 프로그램이 있는 SSL 인증서가 있는 경우 SSL 인증서 검증을 사용 중지해야 합니다. 이러한 유형의 인증서는 지원되지 않으며 유효성 검사 시퀀스에 실패합니다. 일반적으로 오류 메시지는 '10000ms 후 SSL 핸드셰이크 오류로 응답됨'입니다.

        monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires 측정항목을 사용하면 인증서가 만료되기 전에 알림을 받을 수 있습니다. 자세한 내용은 샘플 정책: 업타임 체크 정책을 참조하세요.

        SSL 인증서 유효성 검사 체크박스를 선택합니다.

    7. 다음을 클릭합니다.

  6. 응답 요구사항을 구성합니다.

    • 옵션 메뉴에서 응답 제한 시간을 선택합니다. 1~60초 사이의 값을 선택할 수 있습니다. 이 제한 시간 내에 둘 이상의 위치에서 응답이 수신되지 않으면 업타임 체크가 실패합니다.

    • 콘텐츠 일치의 경우 전환 라벨이 콘텐츠 일치 사용이 설정되어 있는지 확인합니다.

      • 옵션 메뉴에서 응답 콘텐츠 일치 유형을 선택합니다. 이 필드에 따라 응답 콘텐츠가 반환된 데이터와 어떻게 비교되는지 결정됩니다. 예를 들어 응답 콘텐츠가 abcd이고 콘텐츠 일치 유형이 포함이면 응답 데이터에 abcd가 포함된 경우 업타임 체크가 성공한 것입니다. 응답에 abcd가 포함되지 않은 경우 업타임 체크가 실패합니다.
      • 응답 콘텐츠를 입력합니다. 1024바이트 보다 길지 않은 문자열이어야 합니다. API에서 이 항목은 ContentMatcher 객체입니다.
    • 업타임 체크를 Cloud Logging으로 보내지 않으려면 로그 검사 실패를 선택 해제합니다.

    • 다음을 클릭합니다.

  7. 알림 정책 만들기 알림 정책에서 업타임 체크를 모니터링할 때 업타임이 실패하면 이슈가 생성되고 정책에 연결된 모든 알림 채널로 알림이 전송됩니다. 예를 들어 정책에 이메일 주소를 추가하면 해당 주소로 이메일이 전송됩니다. 이 단계에서 알림 정책을 만들거나 확인이 생성된 후 알림 정책을 만들 수 있습니다.

    이 흐름의 일부로 알림 정책을 만들지 않으려면 전환 버튼의 텍스트가 알림 생성 안 함인지 확인합니다. 버튼을 클릭하여 전환 상태를 변경합니다.

    이 흐름 중에 알림 정책을 만들려면 다음 안내를 따르세요.

    1. 전환 버튼 텍스트가 알림 만들기인지 확인합니다. 필요한 경우 버튼을 클릭합니다.

    2. 이름 필드에 알림 정책 이름을 입력하거나 기본 이름을 사용합니다.

    3. 알림 정책에 알림 채널을 하나 이상 추가하려면 알림 채널 라벨이 지정된 텍스트 상자에서 메뉴 을 클릭합니다. 추가할 채널을 선택하고 확인을 클릭합니다. 알림 채널은 각 채널 유형별로 알파벳순으로 그룹화됩니다.

      알림 정책에 추가하려는 알림 채널이 표시되지 않았으면 알림 채널 관리를 클릭합니다.

      채널 새로고침 및 관리 버튼이 표시된 알림 대화상자

      새 브라우저 탭에 알림 채널 창이 열립니다. 알림 채널을 추가한 후 이 탭으로 돌아오고, 새로고침 를 클릭한 후 알림 정책에 추가할 알림 채널을 선택합니다.

    4. 기간 필드에서 이슈가 생성되기 전에 업타임 체크가 실패해야 하는 기간을 선택합니다. 기본적으로 알림 정책은 최소 2개의 리전에서 업타임 체크 실패를 1분 동안 보고하는 경우 이슈를 생성하도록 구성됩니다.

    정책 사용 중지, 편집, 삭제에 대한 자세한 내용은 정책 관리를 참조하세요.

  8. 업타임 체크 구성을 확인하려면 테스트를 클릭합니다. 결과가 예상과 다른 경우 아래의 체크 실패 섹션을 참조하여 구성을 수정한 다음 확인 단계를 반복합니다.

  9. 만들기를 클릭합니다. 필요한 데이터가 없으면 저장 작업이 실패하고 데이터가 필요한 필드 목록이 대화상자 버튼 옆에 표시됩니다. 변경 사항을 저장하면 업타임 체크 생성됨 대화상자가 표시됩니다.

API

projects.uptimeCheckConfigs.create 메서드를 호출합니다. 메소드 매개변수를 다음과 같이 설정합니다.

  • parent: 필수입니다. 이 매개변수는 업타임 체크를 생성할 프로젝트의 이름이어야 합니다. PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다. 형식은 다음과 같습니다.

    projects/PROJECT_ID
    
  • 요청 본문에는 새 업타임 체크를 위한 UptimeCheckConfig 객체가 포함되어야 합니다. 이 페이지에서는 몇 가지 필드에 대한 정보만 제공합니다. 이 객체 및 해당 필드에 대한 자세한 내용은 UptimeCheckConfig를 참조하세요.

    • 구성 객체의 name 필드를 비워 둡니다. 시스템은 응답 구성 객체를 구성할 때 이 필드를 설정합니다.

    • HTTP 또는 HTTPS 확인을 구성할 때는 UptimeCheckConfig 객체의 HttpCheck 필드를 채워야 합니다. 이 객체에서는 requestMethod 필드를 GET 또는 POST로 설정합니다. 이 필드가 생략되었거나 METHOD_UNSPECIFIED로 설정되었으면 GET 요청이 실행됩니다.

      POST 요청을 구성하는 경우 contentTypebody 필드를 작성합니다.

create 메서드는 새 구성의 UptimeCheckConfig 객체를 반환합니다.

생성된 업타임 구성이 예상대로 작동하지 않을 경우, 이 페이지의 체크 실패 섹션을 참조하세요.

C#

public static object CreateUptimeCheck(string projectId, string hostName,
    string displayName)
{
    // Define a new config.
    var config = new UptimeCheckConfig()
    {
        DisplayName = displayName,
        MonitoredResource = new MonitoredResource()
        {
            Type = "uptime_url",
            Labels = { { "host", hostName } }
        },
        HttpCheck = new UptimeCheckConfig.Types.HttpCheck()
        {
            Path = "/",
            Port = 80,
        },
        Timeout = TimeSpan.FromSeconds(10).ToDuration(),
        Period = TimeSpan.FromMinutes(5).ToDuration()
    };
    // Create a client.
    var client = UptimeCheckServiceClient.Create();
    ProjectName projectName = new ProjectName(projectId);
    // Create the config.
    var newConfig = client.CreateUptimeCheckConfig(
        projectName,
        config,
        CallSettings.FromExpiration(
            Expiration.FromTimeout(
                TimeSpan.FromMinutes(2))));
    Console.WriteLine(newConfig.Name);
    return 0;
}

자바

private static void createUptimeCheck(
    String projectId, String displayName, String hostName, String pathName) throws IOException {
  CreateUptimeCheckConfigRequest request =
      CreateUptimeCheckConfigRequest.newBuilder()
          .setParent(ProjectName.format(projectId))
          .setUptimeCheckConfig(
              UptimeCheckConfig.newBuilder()
                  .setDisplayName(displayName)
                  .setMonitoredResource(
                      MonitoredResource.newBuilder()
                          .setType("uptime_url")
                          .putLabels("host", hostName))
                  .setHttpCheck(HttpCheck.newBuilder().setPath(pathName).setPort(80))
                  .setTimeout(Duration.newBuilder().setSeconds(10))
                  .setPeriod(Duration.newBuilder().setSeconds(300)))
          .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    UptimeCheckConfig config = client.createUptimeCheckConfig(request);
    System.out.println("Uptime check created: " + config.getDisplayName());
  } catch (Exception e) {
    usage("Exception creating uptime check: " + e.toString());
    throw e;
  }
}

Go


// createGet creates an example uptime check on a GET request.
func createGet(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.CreateUptimeCheckConfigRequest{
		Parent: "projects/" + projectID,
		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
			DisplayName: "new GET uptime check",
			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
				MonitoredResource: &monitoredres.MonitoredResource{
					Type: "uptime_url",
					Labels: map[string]string{
						"host": "example.com",
					},
				},
			},
			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_GET,
					Path:          "/",
					Port:          80,
				},
			},
			Timeout: &duration.Duration{Seconds: 10},
			Period:  &duration.Duration{Seconds: 300},
		},
	}
	config, err := client.CreateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("CreateUptimeCheckConfig GET: %v", err)
	}
	fmt.Fprintf(w, "Successfully created GET uptime check %q\n", config.GetDisplayName())
	return config, nil
}

// createPost creates an example uptime check on a POST request.
func createPost(w io.Writer, projectID string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.CreateUptimeCheckConfigRequest{
		Parent: "projects/" + projectID,
		UptimeCheckConfig: &monitoringpb.UptimeCheckConfig{
			DisplayName: "new POST uptime check",
			Resource: &monitoringpb.UptimeCheckConfig_MonitoredResource{
				MonitoredResource: &monitoredres.MonitoredResource{
					Type: "uptime_url",
					Labels: map[string]string{
						"host": "example.com",
					},
				},
			},
			CheckRequestType: &monitoringpb.UptimeCheckConfig_HttpCheck_{
				HttpCheck: &monitoringpb.UptimeCheckConfig_HttpCheck{
					RequestMethod: monitoringpb.UptimeCheckConfig_HttpCheck_POST,
					ContentType:   monitoringpb.UptimeCheckConfig_HttpCheck_URL_ENCODED,
					Path:          "/",
					Port:          80,
					Body:          []byte(base64.URLEncoding.EncodeToString([]byte("key: value"))),
				},
			},
			Timeout: &duration.Duration{Seconds: 10},
			Period:  &duration.Duration{Seconds: 300},
		},
	}
	config, err := client.CreateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("CreateUptimeCheckConfig POST: %v", err)
	}
	fmt.Fprintf(w, "Successfully created POST uptime check %q\n", config.GetDisplayName())
	return config, nil
}

Node.js

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

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

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const hostname = 'mydomain.com';

const request = {
  // i.e. parent: 'projects/my-project-id'
  parent: client.projectPath(projectId),
  uptimeCheckConfig: {
    displayName: 'My Uptime Check',
    monitoredResource: {
      // See the Uptime Check docs for supported MonitoredResource types
      type: 'uptime_url',
      labels: {
        host: hostname,
      },
    },
    httpCheck: {
      path: '/',
      port: 80,
    },
    timeout: {
      seconds: 10,
    },
    period: {
      seconds: 300,
    },
  },
};

// Creates an uptime check config for a GCE instance
const [uptimeCheckConfig] = await client.createUptimeCheckConfig(request);
console.log('Uptime check created:');
console.log(`ID: ${uptimeCheckConfig.name}`);
console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
console.log('Resource: %j', uptimeCheckConfig.monitoredResource);
console.log('Period: %j', uptimeCheckConfig.period);
console.log('Timeout: %j', uptimeCheckConfig.timeout);
console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
console.log(
  'Check: %j',
  uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
);
console.log(
  `Content matchers: ${uptimeCheckConfig.contentMatchers
    .map(matcher => matcher.content)
    .join(', ')}`
);
console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
use Google\Cloud\Monitoring\V3\UptimeCheckConfig;
use Google\Api\MonitoredResource;

/**
 * Example:
 * ```
 * create_uptime_check($projectId, 'myproject.appspot.com', 'Test Uptime Check!');
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $hostName
 * @param string $displayName
 */
function create_uptime_check($projectId, $hostName = 'example.com', $displayName = 'New uptime check')
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $monitoredResource = new MonitoredResource();
    $monitoredResource->setType('uptime_url');
    $monitoredResource->setLabels(['host' => $hostName]);

    $uptimeCheckConfig = new UptimeCheckConfig();
    $uptimeCheckConfig->setDisplayName($displayName);
    $uptimeCheckConfig->setMonitoredResource($monitoredResource);

    $uptimeCheckConfig = $uptimeCheckClient->createUptimeCheckConfig(
        $uptimeCheckClient->projectName($projectId),
        $uptimeCheckConfig
    );

    printf('Created an uptime check: %s' . PHP_EOL, $uptimeCheckConfig->getName());
}

Python

def create_uptime_check_config_get(project_name, host_name=None, display_name=None):
    config = monitoring_v3.UptimeCheckConfig()
    config.display_name = display_name or "New GET uptime check"
    config.monitored_resource = {
        "type": "uptime_url",
        "labels": {"host": host_name or "example.com"}
    }
    config.http_check = {
        "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.GET,
        "path": "/",
        "port": 80
    }
    config.timeout = {"seconds": 10}
    config.period = {"seconds": 300}

    client = monitoring_v3.UptimeCheckServiceClient()
    new_config = client.create_uptime_check_config(request={"parent": project_name, "uptime_check_config": config})
    pprint.pprint(new_config)
    return new_config

def create_uptime_check_config_post(project_name, host_name=None, display_name=None):
    config = monitoring_v3.UptimeCheckConfig()
    config.display_name = display_name or "New POST uptime check"
    config.monitored_resource = {
        "type": "uptime_url",
        "labels": {"host": host_name or "example.com"}
    }
    config.http_check = {
        "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.POST,
        "content_type": monitoring_v3.UptimeCheckConfig.HttpCheck.ContentType.URL_ENCODED,
        "body": "foo=bar".encode("utf-8"),
        "path": "/",
        "port": 80
    }
    config.timeout = {"seconds": 10}
    config.period = {"seconds": 300}

    client = monitoring_v3.UptimeCheckServiceClient()
    new_config = client.create_uptime_check_config(request={"parent": project_name, "uptime_check_config": config})
    pprint.pprint(new_config)
    return new_config

Ruby

def create_uptime_check_config project_id: nil, host_name: nil, display_name: nil
  require "google/cloud/monitoring"

  client = Google::Cloud::Monitoring.uptime_check_service
  project_name = client.project_path project: project_id
  config = {
    display_name:       display_name.nil? ? "New uptime check" : display_name,
    monitored_resource: {
      type:   "uptime_url",
      labels: { "host" => host_name.nil? ? "example.com" : host_name }
    },
    http_check:         { path: "/", port: 80 },
    timeout:            { seconds: 10 },
    period:             { seconds: 300 }
  }
  new_config = client.create_uptime_check_config \
    parent:              project_name,
    uptime_check_config: config
  puts new_config.name
  new_config
end

업타임 체크 결과가 Monitoring으로 전달되기 시작할 때까지 최대 5분이 지연될 수 있습니다. 이 기간 동안 업타임 체크 대시보드에는 '사용 가능한 데이터 없음' 상태가 보고됩니다.

업타임 체크를 위한 식별자

업타임 체크가 생성되면 Monitoring은 업타임 체크 ID라는 이름의 식별자를 할당합니다. 이 식별자는 새로운 업타임 체크를 위한 리소스 이름에 삽입됩니다.

projects/PROJECT_ID/uptimeCheckConfigs/UPTIME_CHECK_ID

업타임 체크를 생성하거나 나열하는 메소드 호출의 응답에서 업타임 체크 ID를 가져올 수 있습니다. 구성 섹션의 업타임 세부정보 창에서 업타임 체크 ID를 찾을 수도 있습니다.

업타임 체크 검증

Cloud Console에서 업타임 체크를 만들 때 저장하기 전에 구성을 테스트할 수 있습니다.

체크 성공

다음 두 조건을 모두 충족하면 업타임 체크에 성공한 것입니다.

  • HTTP 상태가 Success입니다.
  • 응답에 필수 콘텐츠가 없거나 필수 콘텐츠의 응답 검색이 성공했습니다.

체크 실패

업타임 체크 실패의 몇 가지 가능한 원인들을 설명하면 다음과 같습니다.

  • 연결 오류 - 거부됨: 기본 HTTP 연결 유형을 사용하는 경우 HTTP 요청에 응답하는 웹 서버가 설치되었는지 확인합니다. 이 오류는 웹 서버를 설치하지 않은 경우에 새 인스턴스에서 발생할 수 있습니다. Compute Engine 빠른 시작을 참조하세요. HTTPS 연결 유형을 사용할 경우 추가 구성 단계를 수행해야 할 수 있습니다. 방화벽 문제는 IP 주소 가져오기를 참조하세요.
  • 이름 또는 서비스를 찾을 수 없음: 호스트 이름이 잘못되었을 수 있습니다.
  • 403 금지됨: 서비스가 업타임 체커에 오류 코드를 반환합니다. 예를 들어 기본 Apache 웹 서버 구성은 Amazon Linux에서 이 코드를 반환하지만, 다른 Linux 버전에서는 코드 200(성공)을 반환합니다. Amazon Linux용 LAMP 가이드 또는 웹 서버 문서를 참조하세요.
  • 404 찾을 수 없음: 경로가 잘못되었을 수 있습니다.
  • 408 요청 시간 제한 또는 응답 없음: 포트 번호가 잘못되었거나, 서비스가 실행 중이 아니거나, 서비스에 액세스할 수 없거나, 제한시간이 너무 짧습니다. 업타임 서버의 트래픽이 방화벽에서 허용되는지 확인합니다. IP 주소 가져오기를 참조하세요. 제한 시간은 고급 옵션상태 확인 부분에서 지정합니다.

업타임 체크 보기

업타임 체크를 보려면 다음을 수행합니다.

Console

단일 업타임 체크의 자세한 상태를 보려면 다음을 수행합니다.

  1. Cloud Console에서 Monitoring을 선택합니다.

    Monitoring으로 이동

  2. 업타임 체크를 클릭합니다.

  3. 업타임 세부정보 창을 보려면, 보려는 업타임 체크를 찾은 다음 업타임 체크 이름을 클릭합니다.

    다음 스크린샷은 '내 업타임 체크'라는 이름으로 업타임 체크의 업타임 세부정보를 보여줍니다.

    샘플 업타임 체크 대시보드

    업타임 세부정보 창에는 다음 정보가 포함됩니다.

    • 선택한 시간 간격입니다. 기본적으로 간격은 1시간입니다.
    • 업타임 체크의 이름입니다. 샘플에서 이름은 내 업타임 체크입니다.
    • 업타임 백분율 및 평균 지연 시간입니다. 업타임 백분율 값은 (S/T)*100으로 계산하는 백분율로, S는 성공한 체크 응답 수이고 T는 모든 위치의 체크 응답 수입니다. 그룹 체크의 경우 ST 값이 모든 현재 그룹 구성원 간에 합산됩니다.

      예를 들어 25분 동안 모든 리전에서 업타임 체크가 1분 단위로 실행된다면 각 6개 위치에서 25개의 요청을 가져오므로 총 요청은 150개가 됩니다. 대시보드에서 83.3%의 업타임을 보고하면 150개 요청 중 125개가 성공한 것입니다.

    • 체크 통과업타임 체크 지연 시간 창에는 통과한 체크 수와 각 체크의 지연 시간이 시간의 함수로 그래픽으로 표시됩니다.

    • 현재 상태 창에 가장 최근의 체크 상태가 표시됩니다. 리전 옆에 체크 표시가 있는 녹색 원은 해당 리전에서 성공한 마지막 체크 실행을 나타내고 x 표시가 있는 빨간색 원은 실패를 나타냅니다.

    • 구성 창에는 업타임 체크의 구성이 표시됩니다. 이 데이터는 업타임 체크가 생성될 때 할당됩니다. 체크 ID 값은 API 호출의 UPTIME_CHECK_ID 값에 해당합니다.

    • 알림 정책 창에는 연결된 알림 정책에 대한 정보가 나열됩니다. 샘플 대시보드에 하나의 알림 정책이 구성되어 있습니다.

C#

public static object GetUptimeCheckConfig(string configName)
{
    var client = UptimeCheckServiceClient.Create();
    UptimeCheckConfig config = client.GetUptimeCheckConfig(configName);
    if (config == null)
    {
        Console.Error.WriteLine(
            "No configuration found with the name {0}", configName);
        return -1;
    }
    Console.WriteLine("Name: {0}", config.Name);
    Console.WriteLine("Display Name: {0}", config.DisplayName);
    Console.WriteLine("Http Path: {0}", config.HttpCheck.Path);
    return 0;
}

자바

private static void getUptimeCheckConfig(String projectId, String checkName) throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    String fullCheckName = UptimeCheckConfigName.format(projectId, checkName);
    UptimeCheckConfig config = client.getUptimeCheckConfig(fullCheckName);
    if (config != null) {
      System.out.println(config.toString());
    } else {
      System.out.println(
          "No uptime check config found with name " + checkName + " in project " + projectId);
    }
  } catch (Exception e) {
    usage("Exception getting uptime check: " + e.toString());
    throw e;
  }
}

Go


// get is an example of getting an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func get(w io.Writer, resourceName string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.GetUptimeCheckConfigRequest{
		Name: resourceName,
	}
	config, err := client.GetUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Config: %v", config)
	return config, nil
}

Node.js

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

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

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.projectUptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Retrieving ${request.name}`);

// Retrieves an uptime check config
const [uptimeCheckConfig] = await client.getUptimeCheckConfig(request);
console.log(`ID: ${uptimeCheckConfig.name}`);
console.log(`Display Name: ${uptimeCheckConfig.displayName}`);
console.log('Resource: %j', uptimeCheckConfig.monitoredResource);
console.log('Period: %j', uptimeCheckConfig.period);
console.log('Timeout: %j', uptimeCheckConfig.timeout);
console.log(`Check type: ${uptimeCheckConfig.check_request_type}`);
console.log(
  'Check: %j',
  uptimeCheckConfig.httpCheck || uptimeCheckConfig.tcpCheck
);
console.log(
  `Content matchers: ${uptimeCheckConfig.contentMatchers
    .map(matcher => matcher.content)
    .join(', ')}`
);
console.log(`Regions: ${uptimeCheckConfig.selectedRegions.join(', ')}`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * get_uptime_check($projectId, $configName);
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $configName
 */
function get_uptime_check($projectId, $configName)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($configName);

    print('Retrieved an uptime check:' . PHP_EOL);
    print($uptimeCheck->serializeToJsonString() . PHP_EOL);
}

Python

def get_uptime_check_config(config_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    config = client.get_uptime_check_config(request={"name": config_name})
    pprint.pprint(config)

Ruby

def get_uptime_check_config config_name
  require "google/cloud/monitoring"

  client = Google::Cloud::Monitoring.uptime_check_service
  config = client.get_uptime_check_config name: config_name
  pp config.to_h
  config
end

업타임 체크 수정

업타임 체크 프로토콜, 리소스 유형, 모니터링 중인 리소스는 변경할 수 없습니다. 이러한 필드를 수정하려면 적절한 구성으로 업타임 체크를 만들어야 합니다. 그러나 업타임 체크의 다른 모든 필드는 체크가 생성된 후에 수정할 수 있습니다.

업타임 체크와 연결된 알림 정책을 수정하려면 Monitoring 탐색창에서 알림을 클릭하고 수정할 정책을 선택한 다음 수정을 클릭합니다.

업타임 체크를 편집하려면 다음을 수행합니다.

콘솔

  1. Cloud Console에서 Monitoring을 선택합니다.

    Monitoring으로 이동

  2. 업타임 체크를 클릭합니다.

  3. 수정하려는 업타임 체크를 찾은 후 다음 중 하나를 수행합니다.

    • 더보기를 클릭하고 수정을 선택합니다.
    • 업타임 체크 세부정보를 확인한 후 수정을 클릭합니다.
  4. 필요하다면 필드의 값을 변경합니다. 모든 필드를 수정할 수는 없습니다. 체크의 커스텀 헤더 값이 숨겨져 있다면 이를 표시할 수 없습니다.

  5. 체크가 작동하는지 확인하려면 테스트를 클릭하세요. 테스트가 실패할 경우, 체크 실패에서 가능한 원인을 확인하세요.

  6. 저장을 클릭합니다.

API

projects.uptimeCheckConfigs.patch 메서드를 호출합니다. 다음과 같이 메소드에 매개변수를 설정합니다.

  • uptimeCheckConfig.name: 필수입니다. 이것은 REST URL의 일부입니다. 수정할 업타임 체크의 리소스 이름입니다.

    projects/PROJECT_ID/uptimeCheckConfigs/UPTIME_CHECK_ID
    

    create 또는 list 메서드의 응답에서 UPTIME_CHECK_ID를 가져올 수 있습니다. ID가 Cloud Console에 표시되지 않습니다.

  • updateMask: 선택사항입니다. 쿼리 매개변수 ?updateMask=[FIELD_LIST]입니다. [FIELD_LIST]는 쉼표로 구분된 UptimeCheckConfig 객체의 필드 목록이며 변경해야 합니다. 예를 들면 다음과 같습니다.

    "resource.type,httpCheck.path"
    
  • 요청 본문에는 새 필드 값이 포함된 UptimeCheckConfig가 있어야 합니다.

updateMask가 설정되면 updateMask에 나열된 필드만 기존 구성의 해당 필드를 대체합니다. 필드에 하위 필드가 있고 필드 마스크에 필드가 나열되었지만 하위 필드는 없는 경우, 해당 필드의 모든 하위 필드가 해당 필드를 대체합니다.

updateMask를 설정하지 않으면 요청 본문의 구성이 기존의 전체 구성을 대체합니다.

patch 메서드는 변경된 구성에 대해 UptimeCheckConfig 객체를 반환합니다.

C#

public static object UpdateUptimeCheck(string configName,
    string newHttpPath, string newDisplayName)
{
    var client = UptimeCheckServiceClient.Create();
    var config = client.GetUptimeCheckConfig(configName);
    var fieldMask = new FieldMask();
    if (newDisplayName != null)
    {
        config.DisplayName = newDisplayName;
        fieldMask.Paths.Add("display_name");
    }
    if (newHttpPath != null)
    {
        config.HttpCheck.Path = newHttpPath;
        fieldMask.Paths.Add("http_check.path");
    }
    client.UpdateUptimeCheckConfig(config);
    return 0;
}

자바

private static void updateUptimeCheck(
    String projectId, String displayName, String hostName, String pathName) throws IOException {
  String fullCheckName = UptimeCheckConfigName.format(projectId, displayName);

  UpdateUptimeCheckConfigRequest request =
      UpdateUptimeCheckConfigRequest.newBuilder()
          .setUpdateMask(FieldMask.newBuilder().addPaths("http_check.path"))
          .setUptimeCheckConfig(
              UptimeCheckConfig.newBuilder()
                  .setName(fullCheckName)
                  .setMonitoredResource(
                      MonitoredResource.newBuilder()
                          .setType("uptime_url")
                          .putLabels("host", hostName))
                  .setHttpCheck(HttpCheck.newBuilder().setPath(pathName).setPort(80))
                  .setTimeout(Duration.newBuilder().setSeconds(10))
                  .setPeriod(Duration.newBuilder().setSeconds(300)))
          .build();
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    UptimeCheckConfig config = client.updateUptimeCheckConfig(request);
    System.out.println("Uptime check updated: \n" + config.toString());
  } catch (Exception e) {
    usage("Exception updating uptime check: " + e.toString());
    throw e;
  }
}

Go


// update is an example of updating an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func update(w io.Writer, resourceName, displayName, httpCheckPath string) (*monitoringpb.UptimeCheckConfig, error) {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	getReq := &monitoringpb.GetUptimeCheckConfigRequest{
		Name: resourceName,
	}
	config, err := client.GetUptimeCheckConfig(ctx, getReq)
	if err != nil {
		return nil, fmt.Errorf("GetUptimeCheckConfig: %v", err)
	}
	config.DisplayName = displayName
	config.GetHttpCheck().Path = httpCheckPath
	req := &monitoringpb.UpdateUptimeCheckConfigRequest{
		UpdateMask: &field_mask.FieldMask{
			Paths: []string{"display_name", "http_check.path"},
		},
		UptimeCheckConfig: config,
	}
	config, err = client.UpdateUptimeCheckConfig(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("UpdateUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully updated %v", resourceName)
	return config, nil
}

Node.js

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

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

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';
// const displayName = 'A New Display Name';
// const path = '/some/path';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.projectUptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Updating ${request.name} to ${displayName}`);

// Updates the display name and path on an uptime check config
request.uptimeCheckConfig = {
  name: request.name,
  displayName: displayName,
  httpCheck: {
    path: path,
  },
};

request.updateMask = {
  paths: ['display_name', 'http_check.path'],
};

const [response] = await client.updateUptimeCheckConfig(request);
console.log(`${response.name} config updated.`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;
use Google\Protobuf\FieldMask;

/**
 * Example:
 * ```
 * update_uptime_checks($projectId);
 * ```
 */
function update_uptime_checks($projectId, $configName, $newDisplayName = null, $newHttpCheckPath = null)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheck = $uptimeCheckClient->getUptimeCheckConfig($displayName);
    $fieldMask = new FieldMask();
    if ($newDisplayName) {
        $fieldMask->getPaths()[] = 'display_name';
        $uptimeCheck->setDisplayName($newDisplayName);
    }
    if ($newHttpCheckPath) {
        $fieldMask->getPaths()[] = 'http_check.path';
        $uptimeCheck->getHttpCheck()->setPath($newHttpCheckPath);
    }

    $uptimeCheckClient->updateUptimeCheckConfig($uptimeCheck, $fieldMask);

    print($uptimeCheck->serializeToString() . PHP_EOL);
}

Python

def update_uptime_check_config(
    config_name, new_display_name=None, new_http_check_path=None
):
    client = monitoring_v3.UptimeCheckServiceClient()
    config = client.get_uptime_check_config(request={"name": config_name})
    field_mask = field_mask_pb2.FieldMask()
    if new_display_name:
        field_mask.paths.append("display_name")
        config.display_name = new_display_name
    if new_http_check_path:
        field_mask.paths.append("http_check.path")
        config.http_check.path = new_http_check_path
    client.update_uptime_check_config(request={"uptime_check_config": config, "update_mask": field_mask})

Ruby

def update_uptime_check_config config_name:         nil,
                               new_display_name:    nil,
                               new_http_check_path: nil
  require "google/cloud/monitoring"

  client = Google::Cloud::Monitoring.uptime_check_service
  config = { name: config_name }
  field_mask = { paths: [] }
  unless new_display_name.to_s.empty?
    field_mask[:paths].push "display_name"
    config[:display_name] = new_display_name
  end
  unless new_http_check_path.to_s.empty?
    field_mask[:paths].push "http_check.path"
    config[:http_check] = { path: new_http_check_path }
  end
  client.update_uptime_check_config uptime_check_config: config,
                                    update_mask:         field_mask
end

새 업타임 체크 결과가 표시될 때까지 최대 5분이 지연될 수 있습니다. 이 기간 동안 이전 업타임 체크 결과가 대시보드에 표시되고 알림 정책에 사용됩니다.

업타임 체크 삭제

Cloud Console을 사용하여 업타임 체크를 삭제하려고 하는데 업타임 체크에 따라 달라지는 알림 정책이 있는 경우 삭제 작업이 실패합니다. 업타임 체크를 사용하는 모든 알림 정책에서 업타임 체크를 삭제한 후 삭제를 다시 시도합니다.

Cloud Monitoring API를 사용하여 업타임 체크를 삭제하려고 시도하는 경우 이 체크에 의존하는 알림 정책이 있더라도 업타임 체크가 삭제됩니다. 오류는 발생하지 않습니다. 누락된 체크에 대한 이슈도 생성되지 않습니다. 업타임 체크를 삭제하려면 먼저 이 체크에 의존하는 알림 정책이 없는지 확인하세요.

업타임 체크를 삭제하려면 다음을 수행합니다.

콘솔

  1. Cloud Console에서 Monitoring을 선택합니다.

    Monitoring으로 이동

  2. 업타임 체크를 클릭합니다.

  3. 수정하려는 업타임 체크를 찾은 후 다음 중 하나를 수행합니다.

    • 더보기 를 클릭한 다음 삭제를 선택합니다.
    • 업타임 체크 세부정보를 확인한 후 삭제를 클릭합니다.

API

projects.uptimeCheckConfigs.delete 메서드를 호출합니다. 다음과 같이 매개변수를 작성합니다.

  • name: 필수입니다. 삭제할 업타임 체크 구성의 리소스 이름입니다.

    projects/PROJECT_ID/uptimeCheckConfigs/UPTIME_CHECK_ID
    

    create 또는 list 메서드의 응답에서 UPTIME_CHECK_ID를 가져올 수 있습니다. ID가 Cloud Console에 표시되지 않습니다.

C#

public static object DeleteUptimeCheckConfig(string configName)
{
    var client = UptimeCheckServiceClient.Create();
    client.DeleteUptimeCheckConfig(configName);
    Console.WriteLine($"Deleted {configName}");
    return 0;
}

자바

private static void deleteUptimeCheckConfig(String projectId, String checkName)
    throws IOException {
  try (UptimeCheckServiceClient client = UptimeCheckServiceClient.create()) {
    client.deleteUptimeCheckConfig(UptimeCheckConfigName.format(projectId, checkName));
  } catch (Exception e) {
    usage("Exception deleting uptime check: " + e.toString());
    throw e;
  }
}

Go


// delete is an example of deleting an uptime check. resourceName should be
// of the form `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
func delete(w io.Writer, resourceName string) error {
	ctx := context.Background()
	client, err := monitoring.NewUptimeCheckClient(ctx)
	if err != nil {
		return fmt.Errorf("NewUptimeCheckClient: %v", err)
	}
	defer client.Close()
	req := &monitoringpb.DeleteUptimeCheckConfigRequest{
		Name: resourceName,
	}
	if err := client.DeleteUptimeCheckConfig(ctx, req); err != nil {
		return fmt.Errorf("DeleteUptimeCheckConfig: %v", err)
	}
	fmt.Fprintf(w, "Successfully deleted %q", resourceName)
	return nil
}

Node.js

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

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

/**
 * TODO(developer): Uncomment and edit the following lines of code.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const uptimeCheckConfigId = 'YOUR_UPTIME_CHECK_CONFIG_ID';

const request = {
  // i.e. name: 'projects/my-project-id/uptimeCheckConfigs/My-Uptime-Check
  name: client.projectUptimeCheckConfigPath(projectId, uptimeCheckConfigId),
};

console.log(`Deleting ${request.name}`);

// Delete an uptime check config
await client.deleteUptimeCheckConfig(request);
console.log(`${request.name} deleted.`);

PHP

use Google\Cloud\Monitoring\V3\UptimeCheckServiceClient;

/**
 * Example:
 * ```
 * delete_uptime_check($projectId, $configName);
 * ```
 *
 * @param string $projectId Your project ID
 * @param string $configName
 */
function delete_uptime_check($projectId, $configName)
{
    $uptimeCheckClient = new UptimeCheckServiceClient([
        'projectId' => $projectId,
    ]);

    $uptimeCheckClient->deleteUptimeCheckConfig($configName);

    printf('Deleted an uptime check: ' . $configName . PHP_EOL);
}

Python

# `config_name` is the `name` field of an UptimeCheckConfig.
# See https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs#UptimeCheckConfig.
def delete_uptime_check_config(config_name):
    client = monitoring_v3.UptimeCheckServiceClient()
    client.delete_uptime_check_config(request={"name": config_name})
    print("Deleted ", config_name)

Ruby

def delete_uptime_check_config config_name
  require "google/cloud/monitoring"

  client = Google::Cloud::Monitoring.uptime_check_service
  client.delete_uptime_check_config name: config_name
  puts "Deleted #{config_name}"
end

다음 단계

  • 업타임 체크의 가격 책정 및 제한을 보려면 가격 책정 및 제한을 참조하세요.
  • 모든 업타임 체크 목록을 보려면 업타임 체크 검토를 참조하세요.
  • 업타임 체크를 수행하는 데 사용할 IP 주소 목록을 보려면 IP 주소 가져오기를 참조하세요.
  • API를 사용하여 업타임 체크 상태를 확인하려면 monitoring.googleapis.com/uptime_check/check_passed 측정항목을 모니터링합니다. 자세한 내용은 Google Cloud 측정항목 목록을 참조하세요.