이 문서에서는 Error Reporting의 일반적인 문제 해결 시나리오를 설명합니다.
Error Reporting API로 전송된 오류 이벤트가 표시되지 않음
Error Reporting API를 사용하여 오류 이벤트를 Google Cloud 프로젝트로 전송합니다. 하지만 이러한 이벤트는 오류 보고 페이지에 표시되지 않습니다.
이 문제를 해결하려면 다음 단계를 따르세요.
Error Reporting API가 사용 설정되어 있는지 확인합니다.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Cloud Shell을 열고 Google Cloud CLI를 사용하여 프로젝트에 오류 이벤트를 전송할 수 있는지 확인합니다.
다음 명령어를 실행합니다.
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)"Error Reporting 페이지로 이동하여 페이지에
TestError: msg라는 오류가 표시되는지 확인합니다.로그 탐색기 페이지로 이동하여 로그 항목에서
TestError를 검색합니다. 로그 항목은 자동으로 생성됩니다.
애플리케이션이
report엔드포인트로 오류 이벤트를 전송하고 애플리케이션이 요청 본문 형식을ReportedErrorEvent객체로 지정하는지 확인합니다. 로그 항목이 생성되고 있는지 확인해야 합니다. Error Reporting API를 사용하는 경우 올바른 형식의 오류 메시지가 포함된 로그 항목이 자동으로 생성되고 Cloud Logging에 기록됩니다. 이러한 로그 항목은logName과 같이 형식이 지정된 로그에 기록됩니다.projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
오류 이벤트가 표시되지만 Error Reporting API가 사용 중지됨
Error Reporting API를 사용 중지했습니다. 하지만 Google Cloud 콘솔의 오류 보고 페이지에는 오류 이벤트가 표시됩니다.
이는 정상적인 동작입니다. 오류 이벤트는 report 엔드포인트에 이루어진 Error Reporting API 호출에 대한 응답으로 생성됩니다.
하지만 Error Reporting에서 로그 데이터를 분석할 수 있는 경우 오류 이벤트도 추론됩니다.
로그 데이터에서 오류 이벤트가 추론되지 않음
오류 보고에서 로그 데이터를 스캔하고 오류 이벤트를 추론할 것으로 예상합니다. 하지만 로그 항목에 오류 데이터가 기록되더라도 Error Reporting 페이지에는 오류 이벤트가 표시되지 않습니다.
이 문제를 해결하려면 다음 단계를 따르세요.
Error Reporting이 로그 항목을 분석할 수 있는지 확인합니다.
Error Reporting은 Cloud Logging을 기반으로 빌드된 글로벌 서비스이며, 다음 모든 조건에 해당하는 경우 로그 항목을 분석할 수 있습니다.
- Assured Workloads가 사용 중지되었습니다. 자세한 내용은 Assured Workloads 개요를 참조하세요.
- 로그 항목을 저장하는 모든 로그 버킷에서 고객 관리 암호화 키 (CMEK)가 사용 중지되었습니다. Error Reporting은 CMEK가 사용 설정된 로그 버킷에 로그 항목을 저장할 수 없습니다. 로그 버킷의 CMEK 구성을 확인하는 방법은 키 사용 설정 확인을 참조하세요.
- 로그 버킷이 다음 중 하나를 충족합니다.
- 로그 항목이 시작된 동일한 프로젝트에 로그 버킷이 저장되어 있습니다.
- 로그 항목이 프로젝트로 라우팅된 후 프로젝트가 해당 로그 항목을 소유 로그 버킷에 저장했습니다.
구성한 싱크 목록을 보려면 다음 명령어를 실행합니다.
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싱크가 라우팅하는 로그 항목을 분석할 수 있습니다. my-team-project의 싱크가 로그 항목을 다른 프로젝트의 로그 버킷으로 라우팅하기 때문에 Error Reporting은test-logs라는 로그 버킷에 저장된 로그 항목을 분석할 수 없습니다.
Google Cloud CLI를 사용하여 오류 이벤트를 생성하는 로그 항목을 쓸 수 있는지 확인합니다.
다음 명령어를 실행합니다.
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}}}'로그 탐색기 페이지로 이동하여 로그 항목에서
Test Error를 검색합니다.이 로그 항목은 gcloud CLI에 의해 생성됩니다. 로그 항목이 오류 그룹에 연결되어 있지 않으면 1분 정도 기다린 후 페이지를 새로고침합니다. 오류 이벤트는 로그 항목이 수집된 후에 감지됩니다.
Error Reporting 페이지로 이동하여
Test Error라는 오류가 표시되는지 확인합니다.
로그 탐색기 페이지로 이동하여 애플리케이션이 예상된 형식의 로그 항목을 작성하는지 확인합니다.
애플리케이션에서 전송한 예외 데이터가 포함된 로그 항목을 찾아 형식을 확인합니다. 형식이 올바르지 않으면 애플리케이션을 업데이트하세요.
로그 항목에 스택 트레이스가 포함되어 있지만 오류 이벤트가 생성되지 않음
message 필드에 스택 트레이스가 포함된 로그 항목을 생성합니다.
하지만 Error Reporting 페이지에는 해당 오류 이벤트가 표시되지 않습니다.
이 문제를 해결하려면 다음을 시도해 보세요.
jsonPayload에stack_trace또는exception필드가 포함되어 있지 않은지 확인합니다. 이러한 필드가 있으면message필드는 평가되지 않습니다.스택 트레이스의 구조가 지원되는 프로그래밍 언어 형식 중 하나인지 확인합니다. 지원되지 않는 형식을 사용하면 Error Reporting에서 스택 트레이스를 캡처하지 않습니다.
자세한 내용은 오류 이벤트를 보고하도록 로그 항목 형식 지정을 참고하세요.