비공개 업타임 체크 만들기

이 문서에서는 비공개 업타임 체크를 구성하는 방법을 설명합니다. 비공개 업타임 체크를 사용하면 Identity and Access Management(IAM) 제한사항 및 VPC 서비스 제어 경계를 적용하면서 고객 Virtual Private Cloud(VPC) 네트워크에 HTTP 요청을 수행할 수 있습니다. 비공개 업타임 체크는 비공개 네트워크를 통해 가상 머신(VM) 또는 L4 내부 부하 분산기(ILB)와 같은 리소스로 요청을 전송할 수 있습니다.

비공개 네트워크의 리소스에 대한 내부 IP 주소는 비공개 네트워크 액세스가 사용 설정된 서비스 디렉터리 서비스로 기록됩니다. 비공개 업타임 체크를 사용하려면 서비스 디렉터리 제품을 사용해서 비공개 네트워크 액세스를 구성해야 합니다.

비공개 업타임 체크가 저장된 Google Cloud 프로젝트와 서비스 디렉터리 서비스가 저장된 Google Cloud 프로젝트는 다른 프로젝트일 수 있습니다. Cloud Monitoring에서는 측정항목 범위를 사용해서 한 프로젝트에서 여러 Google Cloud 프로젝트의 리소스를 모니터링할 수 있습니다. 업타임 체크가 정의된 프로젝트는 측정항목 범위의 범위 지정 프로젝트입니다. 측정항목 범위는 범위 지정 프로젝트가 모니터링하는 모든 프로젝트의 목록입니다. 서비스 디렉터리 서비스는 범위 지정 프로젝트 또는 측정항목 범위에 있는 프로젝트에 정의되어 있어야 합니다. 측정항목 범위에 대한 자세한 내용은 측정항목 범위 개요를 참조하세요.

VM 및 부하 분산기와 같은 비공개 네트워크 및 해당 리소스는 서로 다른 Google Cloud 프로젝트에 배치될 수 있습니다. 이 프로젝트는 업타임 체크의 범위 지정 프로젝트에서 측정항목 범위에 있을 필요가 없습니다. 서비스 디렉터리 서비스가 업타임 측정항목을 수집하므로, 측정항목 범위에 있어야 하지만 여기에 캡슐화되는 리소스는 그렇지 않습니다.

이 문서에서는 Google Cloud 콘솔 또는 API를 사용하여 비공개 네트워크를 설정하고 서비스 디렉터리 리소스를 구성하는 방법을 설명합니다. 이 API 예시에서는 서비스 디렉터리 서비스가 업타임 체크의 범위 지정 프로젝트에 있다고 가정합니다. 하지만 비공개 업타임 체크 만들기에서도 API를 사용해 측정항목 범위에서 서비스 디렉터리 서비스를 사용하는 업타임 체크를 만드는 방법을 설명합니다.

공개 IP 주소를 사용하는 업타임 체크를 구성하는 방법은 공개 업타임 체크 만들기를 참조하세요. 업타임 체크 관리 및 모니터링에 대한 자세한 내용은 이 문서의 다음 단계 섹션을 참조하세요.

시작하기 전에

  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 Console을 사용해서 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 사용 설정됨'이 표시되면 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 Console을 사용하려면 'Service Directory API'와 같은 표시 이름을 검색합니다.
    • gcloud CLI를 사용하려면 servicedirectory와 같은 googleapis.com 이름의 첫 번째 요소를 지정합니다.
  2. 알림을 수신하는 데 사용할 알림 채널을 구성합니다. 다양한 유형의 알림 채널을 만드는 것이 좋습니다. 자세한 내용은 알림 채널 만들기 및 관리를 참고하세요.

  3. 비공개 네트워크를 구성하고 이 비공개 네트워크에 대한 액세스 권한이 있는 VM 또는 ILB를 구성합니다. 자세한 내용은 비공개 서비스 액세스를 참조하세요.

    ILB를 대상으로 하는 비공개 체크는 업타임 검사기가 있는 리전으로 제한됩니다. 업타임 체크 리전 USA에는 USA_OREGON, USA_IOWA, USA_VIRGINIA 리전이 포함됩니다. 각 USA_* 리전에는 하나의 체커가 있고 USA에는 3개 모두 포함됩니다. 다른 업타임 체크 리전 EUROPE, SOUTH_AMERICA, ASIA_PACIFIC에는 각각 하나의 체커가 있습니다. 이러한 제한을 없애려면 부하 분산기에 대해 전역 액세스를 구성해야 합니다. 전역 액세스를 구성하는 방법에 대한 자세한 내용은 이 문서의 서비스 디렉터리 리소스 구성 섹션에 있는 ILB 탭을 참조하세요.

    전역 액세스를 허용하지 않는 ILB를 검사하려면 ILB에 다음 리전 중 하나를 선택합니다.

    • us-east4
    • us-central1
    • us-west1
    • europe-west1
    • southamerica-east1
    • asia-southeast1
  4. 사용할 인터페이스를 결정합니다.

    • Google Cloud 콘솔: VM에서 요청을 처리할 때 업타임 체크를 만들 수 있습니다. 이 인터페이스는 서비스 디렉터리 리소스 구성, 서비스 계정 승인, 네트워크 방화벽 규칙 구성을 안내합니다.

    • 명령줄 인터페이스: ILB 및 VM에서 요청을 처리할 때 Google Cloud CLI 및 Cloud Monitoring API를 사용하여 비공개 업타임 체크를 만들 수 있습니다.

  5. 명령줄을 사용하여 비공개 업타임 체크를 구성하려면 기본 요건 단계를 완료합니다.

비공개 업타임 체크 만들기

이 섹션에서는 서비스 디렉터리 서비스의 비공개 업타임 체크를 만들고 구성하는 방법을 설명합니다.

  • Google Cloud 콘솔을 사용하려면 Google Cloud 콘솔 탭을 선택합니다.

  • Cloud Monitoring API를 사용하고 업타임 체크와 동일한 Google Cloud 프로젝트에 서비스 디렉터리 서비스를 구성하려면 API: 범위 지정 프로젝트 탭을 선택합니다.

  • Cloud Monitoring API를 사용하고 업타임 체크 프로젝트의 측정항목 범위로 모니터링되는 프로젝트에 서비스 디렉터리 서비스를 구성하려면 API: 모니터링 프로젝트 탭을 선택합니다.

Google Cloud 콘솔

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

  1. Google Cloud 콘솔에서  업타임 체크 페이지로 이동합니다.

    업타임 체크로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

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

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

  3. 비공개 업타임 체크를 지정합니다.

    1. 프로토콜(HTTP, HTTPS 또는 TCP)을 선택합니다.

    2. 내부 IP 리소스 유형을 선택합니다.

  4. 프로젝트에 서비스 디렉터리 서비스가 구성되어 있지 않거나 서비스 디렉터리 서비스를 만들려면 보기를 클릭하고 비공개 업타임 체크 기본 요건 창을 완료합니다.

    1. 메시지가 표시되면 Compute Engine API 또는 Service Directory API를 사용 설정합니다. API 사용 설정을 완료하는 데 1분 정도 걸릴 수 있습니다.

    2. 서비스 계정이 표시되면 이를 펼친 후 서비스 계정 만들기를 클릭합니다.

      Monitoring 서비스 계정이 없는 경우 새로 생성됩니다. 그런 다음 Monitoring에서 서비스 계정에 서비스 디렉터리 역할 2개를 부여합니다.

    3. 서비스 디렉터리 메뉴를 펼친 후 다음을 수행합니다.

      1. 리전을 펼친 후 요청을 처리하는 VM의 리전을 선택합니다.
      2. 네임스페이스를 펼친 후 기존 서비스 디렉터리 네임스페이스를 선택하거나 네임스페이스 만들기를 클릭하여 네임스페이스를 만듭니다.
      3. 서비스 이름을 클릭하고 서비스 이름을 입력합니다. 서비스는 비공개 업타임 체크의 대상입니다.
      4. 엔드포인트 이름을 클릭하고 엔드포인트의 이름을 입력합니다. 엔드포인트는 서비스가 요청 처리를 위해 사용할 수 있는 IP 주소 및 포트 값의 쌍입니다. 서비스에 여러 엔드포인트가 포함된 경우 하나의 엔드포인트가 무작위로 선택됩니다.
      5. 네트워크를 펼친 후 비공개 네트워크를 선택합니다.
      6. 인스턴스를 펼친 후 요청을 처리하는 비공개 네트워크의 VM을 선택합니다. 인스턴스를 선택하면 해당 내부 IP 주소가 표시됩니다.
      7. 완료를 클릭합니다.
    4. 방화벽 규칙을 펼칩니다.

      1. 네트워크를 펼치고 네트워크 규칙이 연결된 네트워크를 선택합니다.

      2. 방화벽 규칙 만들기를 클릭합니다.

        방화벽 규칙은 경로 35.199.192.0/19에서 인바운드 TCP 트래픽을 사용 설정합니다. 35.199.192.0/19의 경로는 비공개 라우팅을 사용하는 전달 대상에 대한 연결을 지원합니다. 자세한 내용은 VPC 경로를 참조하세요.

  5. 비공개 업타임 체크 창에서 사용할 서비스 디렉터리 서비스를 지정하려면 다음 중 하나를 수행합니다.

    • 정규화된 서비스 이름 사용을 선택한 후 서비스의 정규화된 이름을 입력합니다.

      projects/SERVICE_DIRECTORY_PROJECT_ID/locations/REGION/namespaces/PRIVATE_NAMESPACE/services/PRIVATE_SERVICE
      
    • 메뉴를 사용하여 리전, 네임스페이스, 서비스를 선택합니다. 서비스를 만든 경우 이 필드가 선택됩니다.

  6. 비공개 업타임 체크 창에서 업타임 체크 대상에 대한 설명을 완료합니다.

    1. 선택사항: 요청의 경로 구성요소를 입력합니다.

      HTTP 또는 HTTPS 프로토콜을 사용하는 비공개 업타임 체크는 http://target/path에 요청을 보냅니다. 이 표현식에서 target은 서비스 디렉터리 엔드포인트에 구성된 내부 IP 주소입니다.

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

    2. 선택사항: 업타임 체크 실행 빈도를 설정하려면 체크 빈도 필드를 사용합니다.

    3. 선택사항: 검사기 리전을 선택하거나 인증, HTTP 및 HTTPS 검사 헤더, 기타 값을 구성하려면 추가 대상 옵션을 클릭합니다.

      • 리전: 업타임 체크가 요청을 수신할 리전을 선택합니다. 업타임 체크에는 적어도 3개의 검사기가 있어야 합니다. 3개의 검사기가 있는 미국을 제외한 모든 리전에 1개의 검사기가 있습니다. 기본 설정인 전역에는 모든 리전이 포함됩니다.
      • 요청 메서드: GET 또는 POST를 선택합니다.
      • 본문: HTTP POST 체크의 경우 URL로 인코딩된 본문을 입력합니다. 사용자가 직접 인코딩을 수행해야 합니다. 다른 모든 체크의 경우 이 필드를 비워 둡니다.
      • 호스트 헤더: 비공개 업타임 체크를 구성할 때는 이 필드를 설정하지 않습니다.
      • 포트: 여기에 설정한 값은 서비스 디렉터리 엔드포인트 구성의 포트를 재정의합니다. 엔드포인트 구성을 사용하려면 여기에 값을 설정하지 마세요.
      • 커스텀 헤더: 커스텀 헤더를 제공하고 선택적으로 암호화합니다. 암호화하면 양식에서 헤더 값이 숨겨집니다. 다른 사용자에게 표시하지 않으려는 인증 관련 헤더에 암호화를 사용합니다.
      • 인증: 단일 사용자 이름과 암호를 제공합니다. 이 값은 승인 헤더로 전송됩니다. 여기에 값을 설정하는 경우에는 승인 헤더를 별도로 설정하지 말고 승인 헤더를 설정하는 경우에는 여기에 값을 설정하지 마세요. 양식에서 비밀번호는 항상 숨겨져 있습니다.
  7. 계속을 클릭해서 응답 요구사항을 구성합니다. 이 섹션의 모든 설정에는 기본값이 있습니다.

    • 업타임 체크 제한 시간을 설정하려면 응답 제한 시간 필드를 사용합니다. 이 기간 내에 둘 이상의 위치에서 응답이 수신되지 않으면 업타임 체크가 실패합니다.

    • 콘텐츠 일치를 수행하도록 업타임 체크를 구성하려면 전환 라벨이 콘텐츠 일치 사용 설정됨인지 확인합니다.

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

    • HTTP 업타임 체크의 경우 허용되는 응답 코드를 구성합니다. 기본적으로 HTTP 업타임 체크는 2xx 응답을 성공 응답으로 표시합니다.

  8. 계속을 클릭하고 알림 정책과 알림을 구성합니다.

    업타임 체크가 실패할 때 알림을 받으려면 알림 정책을 만들고 해당 정책에 대한 알림 채널을 구성합니다.

    1. 선택사항: 알림 정책 이름을 업데이트합니다.
    2. 선택사항: 기간 필드에서 알림이 전송되기 전에 업타임 체크가 실패해야 하는 기간을 선택합니다. 기본적으로 2개 이상의 리전에서 1분 이상 업타임 체크 실패를 보고하면 알림이 전송됩니다.
    3. 알림 채널 상자에서 메뉴를 펼치고 추가할 채널을 선택한 다음 확인을 클릭합니다.

      메뉴에서 알림 채널은 각 채널 유형별로 알파벳순으로 그룹화됩니다.

    알림 정책을 만들지 않으려면 전환 버튼의 텍스트가 알림 생성 안함인지 확인합니다.

  9. 계속을 클릭하여 업타임 체크를 완료합니다.

    1. 업타임 체크를 설명하는 제목을 입력합니다.

    2. 선택사항: 업타임 체크에 사용자 정의 라벨을 추가하려면 다음을 수행합니다.

      1. 사용자 라벨 표시를 클릭합니다.
      2. 필드에 라벨 이름을 입력합니다. 라벨 이름은 소문자로 시작해야 하며 소문자, 숫자, 밑줄, 대시를 포함할 수 있습니다. 예를 들어 severity을 입력합니다.
      3. 필드에 라벨 값을 입력합니다. 라벨 값에는 소문자, 숫자, 밑줄, 대시를 포함할 수 있습니다. 예를 들어 critical을 입력합니다.
      4. 추가 라벨마다 사용자 라벨 추가를 클릭한 후 라벨의 키와 값을 입력합니다.
    3. 업타임 체크 구성을 확인하려면 테스트를 클릭합니다. 결과가 예상과 다르면 문제 해결을 참조하여 구성을 수정한 후 확인 단계를 반복합니다.

    4. 만들기를 클릭합니다.

API: 범위 지정 프로젝트

비공개 업타임 체크에 대한 구성을 만들려면 UptimeCheckConfig 객체를 만들고 이 객체를 Cloud Monitoring API의 uptimeCheckConfigs.create 메서드로 전달합니다.

비공개 업타임 체크의 UptimeCheckConfig 객체와 공개 업타임 체크의 객체의 차이점은 다음과 같습니다.

  • 업타임 체크 구성에 지정된 모니터링 리소스는 servicedirectory_service 유형이어야 합니다. 이 리소스 유형에는 다음 라벨이 있습니다.

    • project_id: 서비스 디렉터리 서비스와 연관된 프로젝트 ID입니다.
    • location: 서비스와 연관된 클라우드 리전입니다.
    • namespace_name: 서비스 디렉터리 네임스페이스입니다.
    • service_name: 서비스 디렉터리 서비스의 이름입니다.
  • 업타임 체크 구성에서 port 값을 지정할 필요는 없습니다. 서비스 디렉터리 엔드포인트의 포트 값은 업타임 체크 구성에 설정된 값을 재정의합니다. 서비스 디렉터리 구성에 지정된 포트가 없으면 검사가 실패합니다.

  • 업타임 체크 구성은 checker_type 필드에 VPC_CHECKERS 값을 지정해야 합니다. 이 값은 비공개 업타임 체크에 필요합니다. 기본적으로 업타임 체크는 공개이므로 공개 업타임 체크는 이 필드를 지정할 필요가 없습니다.

다음 JSON 코드는 비공개 네트워크에서 VM 인스턴스에 대해 구성된 서비스 디렉터리 리소스를 사용하는 비공개 업타임 체크의 UptimeCheckConfig 객체를 보여줍니다.

{
  "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"
}'

서비스 디렉터리 서비스가 업타임 체크와 동일한 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_name: 서비스 디렉터리 서비스의 이름입니다.
  • 업타임 체크 구성에서 port 값을 지정할 필요는 없습니다. 서비스 디렉터리 엔드포인트의 포트 값은 업타임 체크 구성에 설정된 값을 재정의합니다. 서비스 디렉터리 구성에 지정된 포트가 없으면 검사가 실패합니다.

  • 업타임 체크 구성은 checker_type 필드에 VPC_CHECKERS 값을 지정해야 합니다. 이 값은 비공개 업타임 체크에 필요합니다. 기본적으로 업타임 체크는 공개이므로 공개 업타임 체크는 이 필드를 지정할 필요가 없습니다.

다음 JSON 코드는 비공개 네트워크에서 VM 인스턴스에 대해 구성된 서비스 디렉터리 리소스를 사용하는 비공개 업타임 체크의 UptimeCheckConfig 객체를 보여줍니다.

{
  "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"
}'

서비스 디렉터리 서비스가 업타임 체크 Google Cloud 프로젝트의 측정항목 범위로 모니터링되는 Google Cloud 프로젝트에 있을 때 비공개 업타임 체크를 만들려면 다음을 수행합니다.

  1. 업타임 체크를 만들 Google Cloud 프로젝트를 기본값으로 사용하도록 gcloud CLI를 구성합니다.

    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분이 지연될 수 있습니다. 이 기간 동안 업타임 체크 대시보드에는 '사용 가능한 데이터 없음' 상태가 보고됩니다.

기본 요건 단계

Google Cloud 콘솔 인터페이스를 사용하려면 비공개 업타임 체크 만들기로 이동합니다. Google Cloud 콘솔은 모든 기본 요건 단계를 안내합니다.

명령줄을 사용하여 비공개 업타임 체크를 구성하려면 업타임 체크를 만들기 전에 먼저 다음 단계를 완료해야 합니다.

  1. 서비스 디렉터리 리소스 구성
  2. 서비스 계정 승인
  3. 방화벽 규칙 구성

서비스 디렉터리 리소스 구성

비공개 업타임 체크는 서비스 디렉터리 서비스로 기록되는 내부 IP 주소를 사용해서 리소스 가용성을 결정합니다. 다음 리소스에 대한 서비스 디렉터리를 구성할 수 있습니다.

  • 비공개 네트워크의 VM
  • L4 내부 부하 분산기(ILB)

비공개 업타임 체크를 사용하려면 다음 서비스 디렉터리 리소스를 구성해야 합니다.

  • 엔드포인트: 엔드포인트는 서비스가 요청 처리를 위해 사용할 수 있는 IP 주소 및 포트 값의 쌍입니다. 서비스에 여러 엔드포인트가 포함된 경우 하나의 엔드포인트가 무작위로 선택됩니다.
  • 서비스: 서비스는 일련의 동작을 제공하는 엔드포인트 모음입니다. 서비스는 비공개 업타임 체크의 대상입니다.
  • 네임스페이스: 네임스페이스에는 일련의 서비스 이름 연관된 엔드포인트가 포함됩니다. 네임스페이스를 사용하면 일관적인 관리를 위해 서비스를 하나로 묶을 수 있습니다.

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 이러한 리소스를 구성할 수 있습니다. 콘솔을 사용하는 경우 구성 단계가 업타임 체크 만들기 대화상자에 포함되어 있습니다.

Google Cloud 콘솔

Google Cloud 콘솔을 사용할 때 내부 IP를 업타임 체크의 리소스 유형으로 선택하면 서비스 디렉터리와 서비스를 만들라는 메시지가 표시됩니다.

gcloud CLI - VM

이 문서에서 서비스, 네임스페이스, 엔드포인트에 사용된 명령어에 대한 자세한 내용은 gcloud service-directory 명령어 그룹을 참조하세요.

VM의 서비스 디렉터리 리소스를 만들려면 다음을 수행합니다.

  1. 서비스 디렉터리 리소스를 만들 Google Cloud 프로젝트를 기본값으로 사용하도록 Google Cloud CLI를 구성합니다.

    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 service-directory namespaces create PRIVATE_NAMESPACE --location=REGION
    
  4. 네임스페이스에서 서비스 디렉터리 서비스를 만듭니다.

    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 주소 및 포트가 포함된 서비스 디렉터리 엔드포인트를 만듭니다.

    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에 대해 서비스 디렉터리 리소스를 만들어 L4 내부 부하 분산기(ILB) 가용성을 모니터링할 수 있습니다.

새 L4 ILB를 만들 때는 서비스 디렉터리에서 제공되는 자동 통합을 사용할 수 있습니다. 자세한 내용은 서비스 디렉터리에서 내부 부하 분산기 구성을 참조하세요.

서비스 디렉터리에서 제공되는 자동 통합을 사용하지 않고 생성된 L4 ILB가 있으면 다음을 수행하여 서비스 디렉터리 리소스를 수동으로 구성할 수 있습니다.

  1. 서비스 디렉터리 리소스를 만들 Google Cloud 프로젝트를 기본값으로 사용하도록 Google Cloud CLI를 구성합니다.

    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. 서비스 디렉터리 네임스페이스를 만듭니다.

    gcloud service-directory namespaces create PRIVATE_NAMESPACE_FOR_ILB\
    --location=REGION
    
  5. 네임스페이스에서 서비스 디렉터리 서비스를 만듭니다.

    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 주소 및 포트가 포함된 서비스 디렉터리 엔드포인트를 만듭니다.

    gcloud service-directory endpoints create PRIVATE_ENDPOINT_FOR_ILB \
    --location=ILB_REGION --namespace=PRIVATE_NAMESPACE_FOR_ILB \
    --service=PRIVATE_SERVICE_FOR_ILB \
    --network=projects/$PROJECT_NUMBER/locations/global/networks/PRIVATE_CHECK_NETWORK \
    --address=$INTERNAL_IP --port=80
    

서비스 계정 승인

업타임 체크는 Monitoring 소유의 서비스 계정을 사용하여 서비스 디렉터리 서비스와의 상호작용을 관리합니다. 서비스 계정 이름에는 다음과 같은 형식이 있습니다.

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

이 서비스 계정이 없으면 비공개 업타임 체크를 만들 때 Monitoring에서 서비스 계정을 만듭니다. 이 서비스 계정은 사용자가 만들 수 없습니다.

비공개 업타임 체크를 만들 때 Monitoring은 서비스 계정에 2개의 서비스 디렉터리 역할을 부여하려고 시도합니다. 하지만 API를 사용할 때는 Google Cloud 프로젝트 설정으로 인해 Monitoring이 서비스 계정에 역할을 부여하지 못할 수 있습니다. 이 경우 업타임 체크 만들기가 실패합니다.

이 섹션에서는 기존 서비스 계정에 필요한 역할을 부여하는 방법을 설명합니다.

Google Cloud 콘솔

Google Cloud 콘솔을 사용할 때 내부 IP를 업타임 체크의 리소스 유형으로 선택하면 서비스 계정을 승인하라는 메시지가 표시됩니다.

API: 범위 지정 프로젝트

기존 서비스 계정에 서비스 디렉터리 역할을 부여하려면 다음을 수행합니다.

  1. 업타임 체크를 만들 Google Cloud 프로젝트를 기본값으로 사용하도록 gcloud CLI를 구성합니다.

    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. 업타임 체크를 만들 Google Cloud 프로젝트를 기본값으로 사용하도록 gcloud CLI를 구성합니다.

    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. 서비스 디렉터리 서비스가 정의된 프로젝트의 프로젝트 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_MONITORED_PROJECT_ID
    • roles/servicedirectory.pscAuthorizedService: 비공개 네트워크가 구성된 프로젝트 $NETWORK_PROJECT_ID

방화벽 규칙 구성

경로 35.199.192.0/19에서 인바운드 TCP 트래픽을 사용 설정하는 방화벽 규칙을 만들어야 합니다. 35.199.192.0/19의 경로는 비공개 라우팅을 사용하는 전달 대상에 대한 연결을 지원합니다. 자세한 내용은 VPC 경로를 참조하세요.

Google Cloud 콘솔

Google Cloud 콘솔을 사용할 때 내부 IP를 업타임 체크의 리소스 유형으로 선택하면 방화벽 규칙을 구성하라는 메시지가 표시됩니다.

gcloud CLI

비공개 네트워크 액세스를 위해 방화벽을 통한 인바운드 TCP 트래픽을 허용하는 방화벽 규칙을 만들려면 다음 명령어를 실행합니다.

  1. 업타임 체크를 만들 Google Cloud 프로젝트를 기본값으로 사용하도록 gcloud CLI를 구성합니다.

    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 콘솔에서 서비스 계정에 서비스 디렉터리 역할을 부여하는 명령어를 실행합니다.

서비스 계정에 역할을 부여하는 방법은 서비스 계정 승인을 참조하세요.

API: 범위 지정 프로젝트

단일 Google Cloud 프로젝트에서 서비스 디렉터리 서비스 및 비공개 리소스에 대한 비공개 업타임 체크를 처음으로 만들 때 요청이 성공하거나 실패할 수 있습니다. 결과는 프로젝트에서 서비스 계정에 대한 자동 역할 부여를 사용 중지했는지 여부에 따라 달라집니다.

  • 프로젝트에서 서비스 계정에 대해 자동 역할 부여가 허용되면 첫 번째 업타임 체크 만들기가 성공합니다. 서비스 계정이 생성되고 필요한 역할이 부여됩니다.

  • 프로젝트에서 서비스 계정에 대해 자동 역할 부여가 허용되지 않으면 첫 번째 업타임 체크 만들기가 실패합니다. 서비스 계정이 생성되지만 역할이 부여되지 않습니다.

업타임 체크 만들기가 실패하면 다음을 수행합니다.

  1. 서비스 계정을 승인합니다.
  2. 권한이 전파될 때까지 몇 분 정도 기다립니다.
  3. 비공개 업타임 체크 만들기를 다시 시도합니다.

API: 모니터링 프로젝트

모니터링 프로젝트의 서비스 디렉터리 서비스 또는 다른 Google Cloud 프로젝트의 비공개 리소스를 대상으로 하는 비공개 업타임 체크를 처음 만들면 요청이 실패하고 Monitoring 서비스 계정이 생성됩니다.

서비스 계정 승인 방법은 사용 중인 Google Cloud 프로젝트 수 및 관계에 따라 달라집니다. 최대 4개까지 프로젝트가 사용될 수 있습니다.

  • 비공개 업타임 체크를 정의한 프로젝트
  • 서비스 디렉터리 서비스를 구성한 모니터링 프로젝트
  • VPC 네트워크를 구성한 프로젝트
  • 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 서비스 디렉터리 엔드포인트의 IP
HTTP_ACCEPT_ENCODING gzip, deflate, br
CONTENT_LENGTH 업타임 게시 데이터에서 계산

이러한 값을 재정의하려고 시도하면 다음 결과가 발생할 수 있습니다.

  • 업타임 체크가 오류 보고
  • 재정의 값이 삭제되고 테이블의 값으로 대체됨

표시할 수 있는 데이터 없음

업타임 체크가 서비스 디렉터리 서비스와 다른 Google Cloud 프로젝트에 있으면 업타임 체크 대시보드에 데이터가 표시되지 않습니다.

업타임 체크가 포함된 Google Cloud 프로젝트에서 서비스 디렉터리 서비스가 포함된 Google Cloud 프로젝트를 모니터링하는지 확인합니다.

모니터링 프로젝트를 나열하고 항목을 추가하는 방법은 여러 프로젝트의 측정항목 범위 구성을 참조하세요.

다음 단계