문제 해결

Error Reporting에 애플리케이션 오류가 표시되지 않는 경우 다음 단계에 따라 문제를 해결하세요.

시작하기 전에

  1. Error Reporting이 로그를 분석할 수 있는지 확인합니다.

    Error Reporting은 Cloud Logging을 기반으로 빌드된 글로벌 서비스이며, 다음 모든 조건에 해당하는 경우 로그 항목을 분석할 수 있습니다.

    • 로그 항목이 global 위치의 로그 버킷에 저장되어 있습니다.
    • 고객 관리 암호화 키(CMEK)가 로그 버킷에서 사용 중지되어 있습니다. 로그 버킷의 CMEK 구성을 확인하는 방법은 키 사용 설정 확인을 참조하세요.
    • 로그 버킷이 다음 중 하나를 충족합니다.
      • 로그가 시작된 동일한 프로젝트에 로그 버킷이 저장되어 있습니다.
      • 로그가 프로젝트로 라우팅된 후 프로젝트가 해당 로그를 소유 로그 버킷에 저장했습니다.

    Error Reporting이 로그를 분석할 수 있는지 확인하려면 소스 및 대상 Google Cloud 프로젝트가 동일한 프로젝트인 global 리전의 버킷에 로그를 저장하고 있는지 확인합니다.

    구성한 싱크 목록을 보려면 다음 명령어를 실행합니다.

    gcloud logging sinks list
    

    이 명령어는 다음과 유사한 출력을 반환합니다.

    NAME               DESTINATION                                                                                                FILTER
    _Default           logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Default                          NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
    _Required          logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Required                         LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency")
    logs-from-samples  logging.googleapis.com/projects/my-team-project/locations/global/buckets/sample-bucket                     (empty filter)
    regional_logs      logging.googleapis.com/projects/my-team-project/locations/europe-west1/buckets/bucket_for_regional_logs    (empty filter)
    test-logs          logging.googleapis.com/projects/team-b-project/locations/global/buckets/test-bucket                        (empty filter)
    

    이 예시에서 로그의 소스 Google Cloud 프로젝트는 my-team-project입니다. 결과는 다음과 같습니다.

    • Error Reporting은 _Default, _Required, logs-from-samples 싱크가 라우팅하는 로그를 분석할 수 있습니다. 동일한 프로젝트 내의 global 리전에 있는 버킷으로 로그를 라우팅하기 때문입니다.
    • my-team-project의 싱크가 로그를 다른 프로젝트의 로그 버킷으로 라우팅하기 때문에 Error Reporting은 test-logs라는 로그 버킷에 저장된 로그를 분석할 수 없습니다.
    • Error Reporting은 regional_logs 싱크가 라우팅하는 로그를 분석할 수 없습니다. europe-west1 리전의 리전화된 버킷으로 로그를 라우팅하기 때문입니다.
  2. Google Cloud CLI가 설치되었는지 확인합니다.

  3. gcloud CLI에 beta 구성요소가 사용 설정되어 있는지 확인합니다.

로그를 사용할 때

이 섹션에서는 오류 데이터가 Cloud Logging 버킷에 기록될 때 문제 해결 지원을 제공하고 Error Reporting을 사용하여 해당 로그 버킷을 자동으로 분석합니다.

샘플 로그 항목 생성

프로젝트 설정을 확인하기 위해 다음 gcloud 명령어를 사용하여 Error Reporting에서 선택할 로그 항목을 프로그래매틱 방식으로 생성할 수 있습니다.

gcloud logging write --payload-type=json test-errors-log \
  '{"serviceContext":
    {"service": "manual-testing"},
    "message": "Test Error\n at /test.js:42:42",
    "context": {"httpRequest":
      {"url": "/test","method": "GET","responseStatusCode": 500}}}'

그런 다음 Error Reporting을 열고 새로 생성된 오류가 표시되는지 확인합니다.

로그 항목 형식 확인

Cloud Logging 페이지로 이동하여 애플리케이션에서 전송한 예외 데이터를 포함하는 로그 항목을 찾습니다.

로그 항목이 예상된 형식을 사용하는 지 확인합니다.

Error Reporting API를 사용할 때

  1. 필요한 API를 사용 설정합니다.

    API 사용 설정

  2. 테스트 오류 보내기

    서비스에 수동으로 오류를 보내 봅니다.

    다음 gcloud 명령어를 사용하여 Error Reporting에 테스트 오류를 보고할 수 있습니다.

    gcloud beta error-reporting events report --service Manual --service-version test1 \
      --message "java.lang.TestError: msg
        at com.example.TestClass.test(TestClass.java:51)
        at com.example.AnotherClass(AnotherClass.java:25)"
    

    cURL 명령어를 사용하여 REST API 호출을 테스트할 수 있습니다. 다음 명령어를 보내기 전에 PROJECT_IDAPI_KEY를 올바른 값으로 바꿉니다.

    curl -X POST -H "Content-Type: application/json" \
      -d '{"message":"java.lang.TestError: msg\n\tat com.example.TestClass.test(TestClass.java:51)\n\tat com.example.AnotherClass(AnotherClass.java:25)","serviceContext":{"service":"manual-testing"}}' \
      https://clouderrorreporting.googleapis.com/v1beta1/projects/PROJECT_ID/events:report?key=API_KEY
    
  3. 전송된 페이로드 확인

    애플리케이션이 예외 데이터를 올바른 형식으로 API에 보내고 필요한 속성을 포함하는지 확인합니다.