업타임 체크 관리

Cloud Monitoring은 전 세계 위치에서 서비스에 액세스하여 서비스의 가용성을 확인할 수 있습니다. 이러한 업타임 체크 결과를 알림 정책에서 사용하거나 Monitoring 업타임 체크 대시보드에서 결과를 직접 모니터링할 수 있습니다.

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

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

다음 사항도 살펴보는 것이 좋습니다.

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

시작하기 전에

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

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

    HTTP와 HTTPS의 경우 업타임 체크는 GET 명령어를 실행하고 원시 데이터를 검색합니다. GET 응답이 다른 URL의 리디렉션인 경우 업타임 체크는 해당 URL의 데이터를 검색합니다. 마지막으로, 업타임 체크는 데이터를 평가하여 체크의 성공 여부를 판단합니다.

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

    • HTTP 상태는 Success입니다.
    • 데이터에 필수 콘텐츠가 지정되지 않았거나 필수 콘텐츠가 있습니다. 필수 콘텐츠는 고급 옵션을 사용하여 지정합니다.

업타임 체크 만들기

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

Console

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

    Monitoring으로 이동

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

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

  4. 새 업타임 체크 창에서 기본 옵션에 설명된 대로 체크 필드를 채웁니다.

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

  5. (선택사항) 고급 옵션 표시를 클릭합니다. 고급 옵션에 대한 자세한 내용은 고급 옵션을 참조하세요.

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

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

  8. (선택사항) 업타임 실패에 대한 알림을 받으려면 알림 정책 만들기를 클릭합니다. 지금 알림 정책을 만들지 않으려면 취소를 클릭합니다. 언제든지 업타임 체크 알림 정책을 만들 수 있습니다. 자세한 내용은 업타임 체크 알림을 참조하세요.

    업타임 체크 생성됨 대화 상자.

API

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

  • parent: 필수입니다. 업타임 체크를 만들려는 프로젝트의 이름이어야 합니다. [PROJECT_ID]를 Google Cloud 프로젝트 ID로 바꿉니다. 형식은 다음과 같습니다.

    projects/[PROJECT_ID]
        
  • 요청 본문에는 새로운 업타임 체크를 위한 UptimeCheckConfig 객체가 포함되어야 합니다. 이 객체의 필드는 이 페이지의 기본 옵션고급 옵션 섹션에 설명되어 있습니다.

    구성 객체의 name 필드는 반환된 구성 객체에서 설정하므로 비워 두세요.

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();
        string projectName = new ProjectName(projectId).ToString();
        // Create the config.
        var newConfig = client.CreateUptimeCheckConfig(projectName, config,
            CallSettings.FromCallTiming(CallTiming.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


    // create creates an example uptime check.
    func create(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 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{
    					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: %v", err)
    	}
    	fmt.Fprintf(w, "Successfully created 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(project_name, host_name=None,
                                   display_name=None):
        config = monitoring_v3.types.uptime_pb2.UptimeCheckConfig()
        config.display_name = display_name or 'New uptime check'
        config.monitored_resource.type = 'uptime_url'
        config.monitored_resource.labels.update(
            {'host': host_name or 'example.com'})
        config.http_check.path = '/'
        config.http_check.port = 80
        config.timeout.seconds = 10
        config.period.seconds = 300

        client = monitoring_v3.UptimeCheckServiceClient()
        new_config = client.create_uptime_check_config(project_name, 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/v3"

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      project_name = Google::Cloud::Monitoring::V3::UptimeCheckServiceClient.project_path 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 }
      }
      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      new_config = client.create_uptime_check_config project_name, config
      puts new_config.name
      new_config
    end

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

기본 옵션

새로운 업타임 체크를 만들려면 업타임 체크 구성의 값을 지정합니다. Cloud Console에서 업타임 체크를 만들 때 양식을 작성합니다. API에서 업타임 체크를 만들 때 해당 매개변수를 UptimeCheckConfig 객체에 제공합니다.

  1. 제목: 업타임 체크를 식별하기 위한 이름입니다. 예를 들면 Example.com uptime check입니다.

  2. 체크 유형: HTTP , HTTPS 또는 TCP 프로토콜을 선택합니다.

    HTTPS를 선택하면 서비스가 HTTPS를 통해 연결을 시도하고 SSL 인증서의 유효성을 검사합니다. 기본적으로 만료되었거나 자체 서명된 인증서로 인해 업타임 체크가 실패합니다.

    SSL 인증서 확인을 사용 중지하려면 SSL 인증서 확인을 선택 취소합니다.

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

    • App Engine: App Engine 애플리케이션(모듈)입니다.
    • Elastic Load Balancer: AWS 부하 분산기입니다.
    • 인스턴스: Compute Engine 또는 AWS EC2 인스턴스입니다. API에서는 gce_instanceaws_ec2_instance로 분할됩니다.
    • URL: 모든 IPv4 주소 또는 호스트 이름입니다. 경로와 포트는 따로 입력합니다.
  4. 체크 유형과 리소스 유형에 따라 연결 정보를 작성합니다.

    • TCP체크 유형을 선택하는 경우 다음을 완료하세요.

      • 포트: 포트 번호를 지정합니다.
      • 응답 콘텐츠 일치 유형: 응답 콘텐츠에 입력된 문자열이 실제 반환된 데이터와 어떻게 비교되는지를 지정합니다. 예를 들어 응답 콘텐츠가 abcd이고 포함의 콘텐츠 일치 유형을 선택하면 응답 데이터에 abcd가 포함될 경우 업타임 체크가 성공합니다. 응답에 abcd가 포함되지 않은 경우 업타임 체크가 실패합니다.
      • 응답 콘텐츠를 문자열(최대 1024바이트)로 바꿉니다.
    • URL 또는 App Engine리소스 유형을 선택하는 경우 다음을 수행하세요.

      • 호스트 이름: 서비스의 호스트 이름을 입력합니다. 예를 들어 example.com를 입력합니다.

      • 경로(HTTP, HTTPS): 호스트 또는 리소스 내의 경로를 입력하거나 기본 경로를 사용합니다. 예를 들어 example.com를 검사하려면 이 필드를 비워 둡니다. example.com/tester를 검사하려면 /tester를 입력합니다. 프리픽스 example.com는 포함하지 않습니다. API에서 기본값인 /를 사용하려면 이 필드를 비워 둡니다.

    • Elastic Load Balr 또는 Instance리소스 유형을 선택하면 다음을 수행합니다.

      • 적용 대상: 단일 또는 그룹을 선택합니다. 인스턴스 또는 부하 분산기에 업타임 체크를 적용하려면 단일을 선택한 다음 특정 인스턴스 또는 부하 분산기를 선택합니다. 인스턴스 그룹 또는 부하 분산기 그룹에 업타임 체크를 적용하려면 그룹을 선택한 다음 그룹 이름을 선택합니다. API를 사용하는 경우, 모니터링 리소스 목록에 설명된 대로 모니터링 리소스에 필수 리소스 라벨을 입력합니다.

      • 경로(HTTP, HTTPS): 호스트 또는 리소스 내의 경로를 입력하거나 기본 경로를 사용합니다.

  5. 확인 간격: 1분, 5분, 10분 또는 15 분을 선택합니다. 이 값은 업타임 체크의 주기를 결정합니다. 예를 들어 5분을 선택하면 5분마다 각 지리적 위치에서 업타임 체크가 실행됩니다.

고급 옵션

모든 고급 설정을 보려면 고급 옵션 표시를 클릭합니다. 사용할 수 있는 고급 설정은 체크 유형에 따라 다릅니다.

  • 일반: 가상 호스트를 확인하려면 이 필드를 입력합니다. TCP 체크에서는 이 필드를 사용할 수 없습니다.
  • 포트: 포트 번호를 지정합니다.
  • 응답 콘텐츠 일치 유형: 응답 콘텐츠에 입력된 문자열이 실제 반환된 데이터와 어떻게 비교되는지를 지정합니다. 예를 들어 응답 콘텐츠가 abcd이고 포함의 콘텐츠 일치 유형을 선택하면 응답 데이터에 abcd가 포함될 경우 업타임 체크가 성공합니다. 응답에 abcd가 포함되지 않은 경우 업타임 체크가 실패합니다.
  • 응답 콘텐츠: 문자열(최대 1024바이트)을 입력합니다. API에서 이 항목은 ContentMatcher 객체입니다.

  • 위치: 확인이 요청을 수신할 적용 가능한 지리적 지역을 선택합니다. 기본 설정은 6개의 검사기를 사용하는 전역입니다. 검사기는 3개 이상 있어야 합니다. 미국 지역에는 3개의 검사기가 있습니다. 다른 지역에는 검사기가 1개 있습니다.

  • 커스텀 헤더: 커스텀 헤더를 제공하고 필요한 경우 이를 암호화합니다. 암호화는 양식에서 헤더 값을 숨깁니다. 팀의 다른 구성원에게 공개하지 않으려는 인증 관련 헤더에 암호화를 사용하세요.

  • 상태 확인 시간 제한: 시간 제한을 1~60초로 지정합니다. 둘 이상의 위치에서 상태 확인을 실행하여 구성된 제한 시간 내에 응답을 얻지 못하면 업타임 체크가 실패합니다. 상태 확인 하나만 응답을 얻지 못한 경우에는 업타임 체크가 실패하지 않습니다.

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

  • SSL 인증서 유효성 검사: SSL 인증서 유효성 검사 체크박스를 선택합니다. URL에 잘못된 인증서가 있는 경우 업타임 체크에 실패합니다. 잘못된 인증서의 이유로는 만료된 인증서, 도메인 이름이 일치하지 않는 인증서 또는 자체 서명된 인증서가 있습니다. SSL 인증서 유효성 검사는 URL 리소스의 HTTPS 확인에만 사용할 수 있습니다.

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

업타임 체크를 위한 식별자

업타임 체크가 생성되면 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 표시가 있는 빨간색 원은 실패를 나타냅니다.

    • 구성 창에는 업타임 체크의 구성이 표시됩니다. 이 데이터는 업타임 체크가 생성될 때 할당됩니다. Check 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(config_name)
        pprint.pprint(config)

Ruby

def get_uptime_check_config config_name
      require "google/cloud/monitoring/v3"

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      config = client.get_uptime_check_config config_name
      pp config.to_h
      config
    end

업타임 체크 수정

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

Console

  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는 Google 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(config_name)
        field_mask = monitoring_v3.types.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(config, field_mask)

Ruby

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

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      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 config, update_mask: field_mask
    end

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

업타임 체크 삭제

업타임 체크를 삭제하려면 먼저 이를 사용하는 알림 정책에서 체크를 삭제합니다. 정책에서 업타임 체크를 삭제하지 않으면 Monitoring 콘솔을 통해 업타임 체크를 삭제할 수 없습니다. API를 통해 업타임 체크를 삭제하면 알림 정책은 누락된 업타임 체크를 무시합니다. 이 정책은 누락된 체크에 대한 이슈를 만들지 않습니다.

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

Console

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

    Monitoring으로 이동

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

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

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

API

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

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

    projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]
        

    create 또는 list 메서드의 응답에서 [UPTIME_CHECK_ID]를 가져올 수 있습니다. ID는 Google 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

def delete_uptime_check_config(config_name):
        client = monitoring_v3.UptimeCheckServiceClient()
        client.delete_uptime_check_config(config_name)
        print('Deleted ', config_name)

Ruby

def delete_uptime_check_config config_name
      require "google/cloud/monitoring/v3"

      client = Google::Cloud::Monitoring::V3::UptimeCheck.new
      client.delete_uptime_check_config config_name
      puts "Deleted #{config_name}"
    end