합성 모니터 및 업타임 체크 문제 해결

이 문서에서는 로그 데이터를 찾는 방법과 합성 모니터 및 업타임 체크 실패를 해결하는 방법을 설명합니다.

로그 찾기

이 섹션에서는 합성 모니터와 업타임 체크의 로그를 찾는 방법을 설명합니다.

  1. Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.

    로그 탐색기로 이동

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

  2. 다음 중 하나를 수행합니다.

    • 합성 모니터나 업타임 체크와 연결된 모든 로그를 찾으려면 리소스 유형별로 쿼리합니다. 리소스 메뉴를 사용하거나 쿼리를 입력할 수 있습니다.

      업타임 체크의 경우 리소스 메뉴에서 업타임 체크 URL을 선택하거나 쿼리 편집기에 다음 쿼리를 입력한 후 쿼리 실행을 클릭합니다.

      resource.type="uptime_url"
      

      합성 모니터의 경우 리소스 메뉴에서 Cloud Run 버전을 선택하거나 쿼리 편집기에 다음 쿼리를 입력한 후 쿼리 실행을 클릭합니다.

      resource.type="cloud_run_revision"
      
    • 합성 모니터나 업타임 체크 실행 중에 수신된 응답에 대한 정보가 포함된 로그를 찾으려면 다음 중 하나를 수행합니다.

      • 합성 모니터나 업타임 체크의 ID를 사용하여 쿼리하려면 쿼리 편집기에 ID를 입력할 때 다음 형식을 사용한 후 쿼리 실행을 클릭합니다.

        labels.check_id="my-check-id"
        
      • 합성 모니터와 업타임 체크에서 실행된 요청에 대한 응답 데이터가 포함된 로그를 쿼리하려면 쿼리 편집기에 다음 쿼리를 입력한 후 쿼리 실행을 클릭합니다.

        "UptimeCheckResult"
        

        이전 쿼리는 "UptimeCheckResult" 문자열이 포함된 모든 로그 항목과 일치합니다.

      이러한 로그에는 다음이 포함됩니다.

      • labels.check_id 필드에 저장되는 합성 모니터나 업타임 체크의 ID입니다.

      • 합성 모니터의 경우 resource.labels.service_name 필드에 저장되는 Cloud Run 함수의 이름입니다.

      • trace 데이터가 수집되는 경우 trace 필드에 저장되는 연결된 trace의 ID입니다.

    • 서비스에서 Google Cloud 서버의 요청을 수신했는지 확인하려면 다음 쿼리를 쿼리 편집기에 복사한 후 쿼리 실행을 클릭합니다.

      "GoogleStackdriverMonitoring-UptimeChecks"
      

      protoPayload.ip 필드에는 업타임 체크 서버에 사용되는 주소 중 하나가 포함됩니다. 모든 IP 주소를 나열하는 방법은 IP 주소 나열을 참조하세요.

알림 문제 해결

이 섹션에서는 알림 정책을 구성할 때 발생할 수 있는 몇 가지 오류와 해결 방법을 설명합니다.

한 검사기에서 실패했지만 다른 검사기에서는 실패하지 않음

업타임 체크 측정항목을 검토하는 중 다른 모든 검사기에서 성공을 보고했는데 한 검사기에서 실패를 보고한 것을 발견했습니다.

이 상황을 해결하기 위해 별도로 취해야 할 조치는 없습니다.

하나의 검사기에서만 실패를 보고하는 경우, 네트워크 문제로 인해 검사기의 명령어 시간이 초과되어 실패한 것일 수 있습니다. 즉, 명령어가 실패하는 대신 명령어가 지정된 제한 시간 내에 완료되지 않습니다.

기본 구성을 사용하는 알림 정책은 최소 두 개의 검사기에서 실패해야 이슈를 만들고 알림을 보냅니다. 단일 검사기에서 보고된 실패로는 알림이 전송되지 않습니다.

알림을 받았으며 오류를 디버깅하려 하는 경우 아래 단계를 따르세요.

  1. 오류가 시작된 시간을 식별하려면 다음 중 하나를 수행합니다.

    • 업타임 체크의 경우 실패가 발생한 시간을 확인하려면 업타임 세부정보 페이지를 봅니다.

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

        업타임 체크로 이동

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

      2. 업타임 체크를 찾아 선택합니다.

        체크 통과 차트에는 체크 기록이 표시됩니다. 업타임 체크가 처음 실패한 시점을 확인하려면 차트의 기간을 수정해야 할 수 있습니다. 시간 범위 선택기는 업타임 세부정보 페이지의 툴바에 있습니다.

    • 합성 모니터의 경우 오류가 발생한 시간을 확인하려면 업타임 세부정보 페이지를 봅니다.

      1. Google Cloud 콘솔에서  합성 모니터링 페이지로 이동합니다.

        합성 모니터링으로 이동

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

      2. 합성 모니터를 찾아 선택합니다.
  2. 연결된 로그 데이터를 찾는 방법은 이 페이지의 로그 찾기 섹션을 참조하세요.

업타임 체크 실패 알림이 표시되지 않음

업타임 체크를 구성했으며 해당 체크의 업타임 세부정보 페이지를 보고 있는 상황입니다. 체크 통과 그래프에 하나 이상의 검사기가 실패한 것으로 표시되어 있습니다. 그러나 알림을 받지 못했습니다.

기본적으로 알림 정책은 두 개 이상의 리전에서 검사기가 업타임 체크에 대한 응답을 수신하지 못하면 이슈를 만들고 알림을 보내도록 구성됩니다. 이러한 오류는 동시에 발생해야 합니다.

단일 리전에서 응답을 수신하지 못할 때 알림을 받도록 알림 정책의 조건을 수정할 수 있습니다. 하지만 일시적인 오류로 인해 수신될 수 있는 알림 수가 감소하도록 기본 구성을 사용하는 것이 좋습니다.

알림 정책을 보거나 수정하려면 다음을 수행하세요.

  1. Google Cloud 콘솔에서  알림 페이지로 이동합니다.

    알림으로 이동

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

  2. 정책 창에서 모든 정책 보기를 클릭합니다.
  3. 보거나 수정할 정책을 찾은 후 정책 이름을 클릭하세요.

    정책 세부정보 페이지에서 정책을 보고 수정할 수 있습니다.

공개 업타임 체크 문제 해결

이 섹션에서는 공개 업타임 체크를 사용할 때 발생할 수 있는 몇 가지 오류와 해결 방법을 설명합니다.

공개 업타임 체크 실패

공개 업타임 체크를 구성했지만 확인 단계를 실행할 때 오류가 발생합니다.

다음은 가동시간 확인 실패의 몇 가지 가능한 원인입니다.

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

실패한 공개 업타임 체크를 문제 해결하기 위해 확인 중 최대 3회까지 ICMP 핑을 전송하도록 업타임 체크를 구성할 수 있습니다. 핑은 예를 들어 네트워크 연결 문제 및 애플리케이션의 시간 초과로 인해 발생하는 실패를 구분하는 데 도움이 될 수 있습니다. 자세한 내용은 ICMP 핑 사용을 참조하세요.

비공개 업타임 체크 문제 해결

이 섹션에서는 비공개 업타임 체크를 사용할 때 발생할 수 있는 몇 가지 오류와 이를 해결하기 위한 방법을 설명합니다.

업타임 체크 만들기 실패

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 프로젝트를 모니터링하는지 확인합니다.

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

합성 모니터 문제 해결

이 섹션에서는 합성 모니터 문제를 해결하는 데 도움이 될 수 있는 정보를 제공합니다.

API를 사용 설정한 후의 오류 메시지

합성 모니터의 만들기 흐름을 엽니다. 그러면 API를 최소 하나 이상 사용 설정하라는 메시지가 표시됩니다. API를 사용 설정하면 다음과 유사한 메시지가 표시됩니다.

An error occurred during fetching available regions: Cloud Functions API has
not been used in project PROJECT_ID before or it is disabled.

오류 메시지에서는 API가 사용 설정되었는지 확인한 후 기다렸다가 작업을 다시 시도하도록 권장합니다.

API가 사용 설정되어 있는지 확인하려면 프로젝트의 API 및 서비스 페이지로 이동합니다.

API 및 서비스로 이동합니다.

API가 사용 설정된 것을 확인한 후에 만들기 흐름을 계속할 수 있습니다. API 사용 설정이 백엔드를 통해 전파되면 조건이 자동으로 확인됩니다.

아웃바운드 HTTP 요청이 추적되지 않음

출력 HTTP 요청에 대한 trace 데이터를 수집하도록 합성 모니터를 구성합니다. trace 데이터에는 다음 스크린샷과 유사하게 스팬이 하나만 표시됩니다.

하나의 trace만 표시하는 Cloud Trace

이 문제를 해결하려면 서비스 계정에 Cloud Trace 에이전트(roles/cloudtrace.agent) 역할을 부여했는지 확인합니다. 편집자(roles/editor) 역할만으로도 충분합니다.

서비스 계정에 부여된 역할을 보려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

    IAM으로 이동합니다.

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

  2. Google 제공 역할 부여 포함을 선택합니다.
  3. 합성 모니터에 사용되는 서비스 계정이 나열되지 않거나 Cloud Trace 에이전트(roles/cloudtrace.agent) 역할의 권한을 포함하는 역할이 부여되지 않은 경우 서비스 계정에 이 역할을 부여합니다.

    서비스 계정 이름을 모르는 경우 탐색 메뉴에서 서비스 계정을 선택합니다.

진행 중 상태

합성 모니터 페이지에는 상태가 In progress인 합성 모니터가 나열됩니다. In progress 상태는 합성 모니터가 최근에 생성되었으며 표시할 데이터가 없거나 함수를 배포할 수 없음을 의미합니다.

함수 배포 실패 여부를 확인하려면 다음을 시도합니다.

  • Cloud Run 함수 이름에 밑줄이 포함되지 않았는지 확인합니다. 밑줄이 있으면 밑줄을 삭제하고 Cloud Run 함수를 다시 배포합니다.

  • 합성 모니터의 합성 모니터 세부정보 페이지를 엽니다.

    다음 메시지가 표시되면 합성 모니터를 삭제합니다.

    Cloud Function not found for this Synthetic monitor. Please confirm it exists or delete this monitor.
    

    오류 메시지는 함수가 삭제되었으므로 합성 모니터가 함수를 실행할 수 없음을 나타냅니다.

  • 함수의 Cloud Run 함수 페이지를 엽니다. 합성 모니터 세부정보 페이지에서 이 페이지를 열려면 코드를 클릭한 후 함수 이름을 클릭합니다.

    다음과 유사한 메시지가 표시되면 함수를 배포할 수 없습니다.

    This function has failed to deploy and will not work correctly. Please edit and redeploy
    

    이 실패를 해결하려면 함수 코드를 검토하고 함수를 빌드하거나 배포하지 못하게 하는 오류를 수정합니다.

합성 모니터를 만들 때 함수가 배포되고 실행되는 데 몇 분 정도 걸릴 수 있습니다.

경고 상태

합성 모니터에는 상태가 Warning인 합성 모니터가 나열됩니다. Warning 상태는 실행 결과가 일관되지 않음을 나타냅니다. 즉, 테스트에 디자인 문제가 있거나 테스트 대상의 동작이 일치하지 않을 수 있습니다.

실패 상태

합성 모니터에는 상태가 Failing인 합성 모니터가 나열됩니다. 실패 이유에 대한 자세한 내용을 보려면 최근 실행 기록을 확인하세요.

  • 오류 메시지 Request failed with status code 429가 표시되면 HTTP 요청의 대상이 명령어를 거부한 것입니다. 이러한 실패를 해결하려면 합성 모니터의 대상을 변경해야 합니다.

    엔드포인트 https://www.google.com은 합성 모니터에서 수행된 요청을 거부합니다.

  • 실패 시 0ms 실행 시간이 반환되는 경우 이는 Cloud Run 함수의 메모리가 부족한 것일 수 있습니다. 이 실패를 해결하려면 Cloud Run 함수를 수정한 후 메모리를 최소 2GiB 이상으로 늘리고 CPU 필드를 1로 설정합니다.

합성 모니터 삭제 실패

Cloud Monitoring API를 사용하여 합성 모니터를 삭제하지만 다음과 비슷한 응답이 표시되면서 API 호출이 실패합니다.

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "[ORIGINAL ERROR] generic::invalid_argument: Cannot delete check 1228258045726183344. One or more alerting policies is using it.Delete the alerting policy with id projects/myproject/alertPolicies/16594654141392976482 and any other policies using this uptime check and try again."
      }
    ]
  }
}

실패를 해결하려면 합성 모니터 결과를 모니터링하는 알림 정책을 삭제한 후 합성 모니터를 삭제합니다.

깨진 링크 검사기 구성을 수정할 수 없음

Google Cloud 콘솔을 사용하여 깨진 링크 검사기를 만들었으며, 테스트한 HTML 요소를 변경하거나 URI 제한 시간, 재시도, 선택기 대기, 링크별 옵션을 수정하려고 합니다. 그러나 깨진 링크 검사기를 수정하면 Google Cloud 콘솔에 구성 필드가 표시되지 않습니다.

이 문제를 해결하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서  합성 모니터링 페이지로 이동합니다.

    합성 모니터링으로 이동

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

  2. 수정하려는 합성 모니터를 찾고 추가 옵션을 클릭한 후 수정을 선택합니다.
  3. 함수 수정을 클릭합니다.
  4. index.js 파일에서 options 객체를 수정한 후 함수 적용을 클릭합니다.

    이 객체의 필드와 문법은 broken-links-ok/index.js를 참조하세요.

  5. 저장을 클릭합니다.

스크린샷 저장에 실패한 Google Cloud 콘솔 화면

깨진 링크 검사기를 만들고 스크린샷을 저장하도록 구성했습니다. 그러나 Google Cloud 콘솔에는 다음 경고 메시지 중 하나가 상세 정보와 함께 표시됩니다.

  • InvalidStorageLocation
  • StorageValidationError
  • BucketCreationError
  • ScreenshotFileUploadError

이러한 오류를 해결하려면 다음을 시도합니다.

  • InvalidStorageLocation 메시지가 표시되면 options.screenshot_options.storage_location 필드에 지정된 Cloud Storage 버킷이 있는지 확인합니다.

  • Cloud Run 함수와 관련된 로그를 봅니다. 자세한 내용은 로그 찾기를 참조하세요.

  • 해당 Cloud Run 함수에서 사용 중인 서비스 계정에 Cloud Storage 버킷을 만들고 이 버킷에 액세스하고 쓸 수 있는 Identity and Access Management 역할이 있는지 확인합니다.