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

이 문서에서는 업타임 체크와 합성 모니터로 문제를 해결하는 데 도움이 될 수 있는 정보를 제공합니다.

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

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

    1. Google Cloud 콘솔의 탐색 패널에서 Monitoring을 선택한 후 업타임 체크를 선택합니다.

      업타임 체크로 이동

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

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

  2. 오류에 대한 상세 내용을 보려면 로그를 확인하세요.

    1. 탐색 창에서 Logging을 선택한 후 로그 탐색기를 선택합니다.

    2. 업타임 리소스에서 작성한 로그를 보려면 리소스 유형 메뉴에서 업타임 체크 URL을 선택합니다. 다음 쿼리를 쿼리 편집기에 복사한 후 쿼리 실행을 클릭할 수도 있습니다.

      resource.type="uptime_url"
      

      로그가 표시되는 시간 범위를 업데이트해야 할 수 있습니다. 시간 범위 선택기는 로그 탐색기 페이지의 툴바에 있습니다.

    3. 서비스가 업타임 체크 서버에서 요청을 수신했는지 확인하려면 다음 쿼리를 쿼리 편집기에 복사한 후 쿼리 실행을 클릭합니다.

      "GoogleStackdriverMonitoring-UptimeChecks"
      

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

업타임 체크에 대한 알림이 전송되지 않음

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

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

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

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

  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으로 이동

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

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

진행 중 상태

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

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

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

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

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

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

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

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

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

    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은 합성 모니터에서 수행된 요청을 거부합니다.

합성 모니터 삭제 실패

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. 저장을 클릭합니다.