깨진 링크 검사기 만들기

이 문서에서는 합성 모니터를 만들어 URI에 포함된 링크의 정기 테스트를 구성하는 방법을 설명합니다. 원본 URI, 테스트한 링크 수, 재시도 횟수와 같은 테스트 옵션을 지정한 후 사전 구성된 Cloud Run 함수를 배포합니다. 문제 해결 및 디버그 작업을 지원하기 위해 합성 모니터는 스크린샷을 포함하여 각 테스트에 대한 상세 정보를 저장합니다. 스크린샷을 사용하면 애플리케이션 고객이 보는 정확한 응답을 볼 수 있습니다.

합성 모니터에 대해 자세히 알아보려면 합성 모니터 정보를 참조하세요.

깨진 링크 검사기 정보

각 깨진 링크 검사기는 링크를 순차적으로 테스트하며 구성 가능한 전체 합성 제한 시간이 있습니다.

기본적으로 깨진 링크 검사기에서 다음을 수행합니다.

  • href 속성이 있는 HTML 앵커 요소의 원본 URI를 검색합니다.
  • 원본 URI에서 발견된 첫 링크 10개를 테스트합니다.
  • 검사기는 연결마다 요청을 실행한 후 응답을 최대 30초 동안 기다립니다. 응답이 수신되면 검사기는 HTTP 응답 상태가 성공적인 응답을 나타내는 200인지 확인합니다. 검사기는 재시도를 수행하지 않습니다.

원본 URI를 지정합니다. 깨진 링크 검사기에서 검색하는 HTML 요소, 테스트한 최대 요소 수, 테스트별 제한 시간, 재시도 수행 여부를 구성할 수 있습니다. 또한 선택기가 나타날 때까지 기다리도록 깨진 링크 검사기를 구성할 수 있습니다.

깨진 링크 검사기는 broken-links-ok 템플릿을 사용합니다. index.js 파일의 options 객체에서 깨진 링크 검사기 구성을 지정합니다. Google Cloud 콘솔을 사용하여 검사기를 만드는 경우 각 구성 옵션을 입력하라는 메시지가 표시되고 Cloud Run 함수가 자동으로 업데이트됩니다. 하지만 Cloud Monitoring API 또는 Terraform을 사용하는 경우 이 객체를 채워야 합니다.

깨진 링크 검사기를 만든 후에 구성을 수정하려면 options 객체를 업데이트하고 Cloud Run 함수를 다시 배포합니다.

시작하기 전에

  1. Google Cloud 콘솔을 사용하여 합성 모니터를 보고 수정하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

    역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

    커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  2. Enable the Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API APIs.

    Enable the APIs

  3. Google Cloud 프로젝트에 기본 Compute Engine 서비스 계정이 포함되어 있는지 확인합니다. 이 서비스 계정은 Compute Engine API를 사용 설정할 때 생성되며 이름은 12345-compute@developer.gserviceaccount.com과 비슷합니다.

    Google Cloud 콘솔에서 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

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

    기본 Compute Engine 서비스 계정이 없는 경우 서비스 계정 만들기를 클릭하고 대화상자를 완료합니다.

  4. 기본 Compute Engine 서비스 계정이나 직접 만든 서비스 계정에 편집자 역할(roles/editor)이 부여되었는지 확인합니다.

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

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

      IAM으로 이동합니다.

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

    2. Google 제공 역할 부여 포함을 선택합니다.
    3. 합성 모니터에서 사용하는 서비스 계정이 나열되지 않거나 Cloud Trace 에이전트(roles/cloudtrace.agent) 역할의 권한이 포함된 역할이 부여되지 않은 경우 서비스 계정에 이 역할을 부여합니다.
  5. 알림을 수신하는 데 사용할 알림 채널을 구성합니다. 여러 유형의 알림 채널을 만드는 것이 좋습니다. 자세한 내용은 알림 채널 만들기 및 관리API를 통한 알림 채널 만들기 및 관리를 참조하세요.

깨진 링크 검사기 만들기

콘솔

Google Cloud 콘솔을 사용하여 합성 모니터를 만들면 새 Cloud Run 함수(2세대)가 배포되고 Cloud Run 함수 모니터가 생성됩니다. 기존 Cloud Run 함수를 모니터링하는 합성 모니터를 만들 수 없습니다.

  1. 필요한 API를 사용 설정했고 프로젝트에 기본 Compute Engine 서비스 계정이 포함되어 있으며 이 계정에 편집자(roles/editor) 역할이 부여되었는지 확인합니다. 자세한 내용은 시작하기 전에를 참조하세요.
  2. Google Cloud 콘솔에서  합성 모니터링 페이지로 이동합니다.

    합성 모니터링으로 이동

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

  3. 합성 모니터 만들기를 선택합니다.
  4. 템플릿에 깨진 링크 검사기를 선택합니다.
  5. 합성 모니터 이름을 입력합니다.
  6. 선택사항: 응답 제한 시간, 체크 빈도를 업데이트하고 사용자 정의 라벨을 추가합니다.

  7. 테스트할 URI와 요소를 구성합니다.

    1. 원본 URI를 클릭하고 테스트할 URI를 입력합니다. 입력하는 값은 HTTP 또는 HTTPS 엔드포인트여야 합니다. 예를 들어 https://mywebsite.example.com을 입력할 수 있습니다.

    2. 선택사항: 참조할 링크 수에서 테스트되는 최대 링크 수를 업데이트합니다. 이 필드의 기본값은 10입니다.

    3. 선택사항: HTML 요소 선택기 필드에 일치시킬 HTML 요소를 쉼표로 구분된 목록으로 입력합니다. 입력한 값은 문자열로 변환된 후 Document: querySelectorAll() 메서드에 전달됩니다.

      기본적으로 이 필드는 앵커와 일치하는 a로 설정됩니다. 앵커와 이미지 모두와 일치시키려면 a, img와 같은 값을 입력합니다.

    4. 선택사항: 참조할 HTML 속성 필드에 일치시킬 HTML 속성을 입력합니다. 입력한 쉼표로 구분된 값은 getAttribute() 메서드에 개별적으로 전달됩니다.

      기본적으로 이 필드는 링크의 URI를 지정하는 href로 설정됩니다. 여러 속성을 입력할 수 있습니다. 예를 들어 href, src를 입력할 수 있습니다. 이 예시에서 코드는 href 속성을 검색한 후 src 속성을 검색합니다.

    5. 선택사항: 선택기 대기 시간, URI별 제한 시간, 재시도, 예상 상태 코드를 구성합니다.

      1. 옵션 더보기를 클릭합니다.
      2. 링크가 스크래핑되기 전에 특정 선택기가 URI에 나타날 때까지 기다리도록 깨진 링크 검사기를 구성하려면 요소 선택기 대기 필드에 CSS 선택기를 입력합니다. 입력한 값은 문자열로 변환된 후 page.waitForSelector() 메서드에 전달됩니다.

        제한 시간이 만료되기 전에 선택기가 표시되지 않으면 실패가 로그에 기록됩니다.

      3. 테스트할 수 있도록 연결이 선택되는 순서 업데이트

      4. 재시도를 구성합니다.

        기본적으로 요청 하나가 각 링크에 전송되며 어떠한 이유로 초기 요청이 실패한 경우(예: 명령어 타임아웃 또는 HTTP 상태 코드가 200이 아님) 링크가 실패로 표시됩니다.

        이 필드는 링크를 실패로 표시하기 전에 깨진 링크 검사기에서 HTTP 요청을 링크에 보낼 수 있는 횟수를 지정합니다.

      5. 각 URI에 적용되는 제한 시간을 구성합니다. 기본적으로 이 값은 30초로 설정됩니다.

      6. 특정 URI의 예상 상태 코드와 제한 시간을 지정하려면 링크별 옵션 추가를 클릭하고 대화상자를 완료합니다.

  8. 선택사항: 응답 스크린샷이 수집되고 저장될지 여부를 구성합니다. 기본 설정을 사용하면 스크린샷이 저장되지 않습니다. 스크린샷 수집을 사용 설정하면 모든 테스트 스크린샷이나 실패한 테스트 스크린샷만 수집할 수 있습니다. Cloud Monitoring에서 다음 규칙에 따라 Cloud Storage 버킷 이름을 지정합니다.

    gcm-PROJECT_ID-synthetics-LOCATION
    

    이전 표현식의 각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID
    • LOCATION: Cloud Storage 버킷 위치입니다.

    기존 Cloud Storage 버킷을 사용할 수 있습니다.

  9. 구성을 검토하고 올바르고 완전한지 확인한 후 Cloud Run 함수를 만듭니다.

    1. 함수 만들기를 클릭합니다.

      함수 만들기를 클릭하면 URI 구성 필드 값이 index.js 파일의 Options 객체에 복사됩니다. 함수 만들기를 클릭한 후에 구성을 변경하려면 Options 객체를 수정하세요.

    2. 표시 이름을 입력하고 리전을 선택합니다. 이름은 리전 내에서 고유해야 합니다.

    3. 런타임, 빌드, 연결, 보안 설정 섹션에서 다음을 수행합니다.

      • 연결 탭에서 모든 트래픽 허용이 선택되어 있는지 확인합니다.

      • 기본 설정을 검토하고 필요에 따라 업데이트합니다.

      • 런타임 서비스 계정 필드에서 서비스 계정을 선택합니다.

    4. 함수 적용을 클릭합니다.

  10. 알림 정책을 구성합니다.

    1. 선택사항: 알림을 보내기 전에 알림 정책 이름과 실패 기간을 업데이트합니다.

    2. 알림 채널을 추가합니다.

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

    정의한 Cloud Run 함수가 2세대로 빌드 및 배포되고 합성 모니터가 생성됩니다.

API

Cloud Monitoring API를 사용하여 깨진 링크 검사기를 만드는 프로세스는 다른 합성 모니터를 만드는 프로세스와 동일합니다. Cloud Monitoring API를 사용하여 합성 모니터를 만드는 방법은 합성 모니터 만들기를 참조하고 Cloud Monitoring 탭을 선택합니다.

깨진 링크 검사기는 broken-links-ok 템플릿을 사용합니다. index.js 파일의 options 객체에서 깨진 링크 검사기 구성을 지정합니다.

options.screenshot_options 구조가 정의되면 깨진 링크 검사기에서 스크린샷을 수집하여 Cloud Storage 버킷에 저장합니다. screenshot_options.storage_location 필드가 정의되지 않았거나 값이 빈 문자열이면 Monitoring에서 Cloud Storage 버킷을 만들고 스크린샷이 해당 버킷에 저장됩니다. Monitoring에서 다음 규칙에 따라 Cloud Storage 버킷 이름을 지정합니다.

gcm-PROJECT_ID-synthetics-LOCATION

이전 표현식의 각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • LOCATION: Cloud Storage 버킷 위치입니다.

Terraform

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요. 자세한 내용은 Terraform 제공업체 참고 문서를 확인하세요.

Terraform을 사용하여 깨진 링크 검사기를 만드는 프로세스는 다른 합성 모니터를 만드는 프로세스와 동일합니다. Terraform을 사용하여 합성 모니터를 만드는 방법은 합성 모니터 만들기를 참조하고 Terraform 탭을 선택합니다.

깨진 링크 검사기는 broken-links-ok 템플릿을 사용합니다. index.js 파일의 options 객체에서 깨진 링크 검사기 구성을 지정합니다.

options.screenshot_options 구조가 정의되면 깨진 링크 검사기에서 스크린샷을 수집하여 Cloud Storage 버킷에 저장합니다. screenshot_options.storage_location 필드가 정의되지 않았거나 값이 빈 문자열이면 Monitoring에서 Cloud Storage 버킷을 만들고 스크린샷이 해당 버킷에 저장됩니다. Monitoring에서 다음 규칙에 따라 Cloud Storage 버킷 이름을 지정합니다.

gcm-PROJECT_ID-synthetics-LOCATION

이전 표현식의 각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID
  • LOCATION: Cloud Storage 버킷 위치입니다.

결과 탐색

깨진 링크 검사기는 실행할 때마다 다음을 수행합니다.

  • 각 행에서 특정 URI 테스트에 대한 정보를 제공하는 테이블을 생성합니다. 요약 정보에는 대상 URI, 지연 시간, 상태, HTML 요소 식별자가 포함됩니다. 예를 들어 HTML 앵커 요소가 테스트될 때 이 열에 a가 나열됩니다. 행이 원본 URI에 해당하는 경우 HTML 요소 식별자 값은 -입니다.

  • 측정항목, trace 데이터, 로그 데이터를 수집합니다.

  • 구성된 경우 스크린샷을 수집합니다.

수집된 데이터를 탐색하는 방법에 대한 자세한 내용은 합성 모니터 결과 살펴보기를 참조하세요.

문제 해결

이 섹션에서는 깨진 링크 검사기의 문제를 해결하는 데 도움이 되는 정보를 제공합니다.

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

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 역할이 있는지 확인합니다.

다음 단계