Firebase 프로젝트를 Cloud Logging에 연결하여 각 Hosting 사이트의 웹 요청 로그를 보고 검색, 필터링할 수 있습니다. 이러한 로그는 Firebase에서 자동으로 제공하는 CDN에서 가져오므로 사이트에 대한 모든 요청과 관련 요청 데이터가 로깅됩니다.
Cloud Logging 로그로 수행할 수 있는 작업은 다음과 같습니다. 세부정보는 이 페이지의 각 섹션을 참조하세요.
- 사이트를 상세하게 파악 — 사용자가 사이트를 방문한 위치와 시기, 사이트의 응답 상태, 최종 사용자 요청의 지연 시간 등을 확인할 수 있습니다. 
- 쿼리를 사용하여 로그를 필터링 — 자동으로 수집된 데이터를 활용하여 각 요청 또는 사이트와 관련된 데이터를 필터링하고 도표로 표시합니다. 
- 로그 기반 측정항목 사용 — 사전 정의된 시스템 측정항목 또는 사용자 정의 측정항목에서 Cloud Monitoring 차트 및 알림 정책을 만듭니다. 
- 다른 Google Cloud 도구로 로그 내보내기 - 보다 강력한 분석 및 상관관계 확인을 위해 다른 도구(예: BigQuery, 데이터 스튜디오)에서 로그 데이터를 사용합니다. 
프로젝트에 Hosting 사이트가 여러 개 있는 경우 로그를 내보낼 Hosting 사이트를 선택할 수 있습니다. 그런 다음 Hosting 사이트 및 도메인을 기준으로 로그 데이터를 필터링하고 볼 수 있습니다. 로그를 내보낼 특정 Hosting 사이트를 선택하면 프로젝트에서 처리되는 데이터 양을 제어할 수 있습니다.
Cloud Logging에 연결하여 데이터 사용량 모니터링
Cloud Logging에 연결하여 웹 요청 로그 내보내기
- Firebase Console의 Cloud Logging 통합 카드에서 연결을 클릭합니다. - Cloud Logging을 연결하거나 연결 해제하려면 프로젝트 소유자, 편집자 또는 Firebase 개발 관리자 역할에 번들로 포함된 권한이 필요합니다. 
- 화면에 표시된 안내에 따라 Cloud Logging으로 로그를 내보낼 Hosting 사이트를 선택합니다. - 활성 Hosting 사이트가 하나 이상 있는 경우 연결 워크플로에 각 Hosting 사이트의 로그에 대한 예상 데이터 사용량 수준이 표시됩니다. 이 값은 지난 30일 사용량을 통해 측정한 수치입니다. 
Cloud Logging에 연결하면 Hosting 사이트에 대한 새 요청에 대한 로그가 일반적으로 요청 후 30분 안에 표시됩니다.
또한 Cloud Logging에서 Firebase Hosting 연결을 해제하여 웹 요청 로그를 Cloud Logging으로 내보내기를 중지할 수 있습니다.
로그에 대한 데이터 사용량 모니터링
Cloud Logging에 연결하면 Hosting 사이트에서 로그에 대한 데이터 사용량 수준을 볼 수 있습니다.
- Firebase Console의 Cloud Logging 통합 카드에서 보기 
- Google Cloud 콘솔의 Logs Viewer 인터페이스( - log_bytes측정항목)에서 보기
사이트를 상세하게 파악
Google Cloud 콘솔의 Logs Viewer 인터페이스는 쿼리, 기본 제공 필터, 데이터 패널을 사용하여 특정 로그와 데이터를 볼 수 있는 도구를 제공합니다. 아래에 나와 있는 다음 섹션에서 쿼리를 사용하여 로그를 필터링하는 방법을 자세히 알아보세요.
- 사이트의 트래픽은 세분화된 수준에서 보면 어디에서 발생하나요? 
 소스 IP, 리퍼러, 도시, 상태 등 각 요청에 대한 정보를 볼 수 있습니다.
- 사용자가 언제 사이트를 방문하나요? 
 히스토그램 패널을 사용하여 특정 기간의 분포를 확인할 수 있습니다. 이를 통해 앱 사용량의 통상적인 최고점과 최저점뿐만 아니라 예기치 않은 트래픽 급증을 파악할 수 있습니다.
- 최종 사용자 요청의 상태 분포는 어떤가요? 
 각 요청의 상태를 볼 수 있으며 오류가 발생한 요청을 진단할 수도 있습니다.- Critical,- Error또는- Warning로 로그를 필터링할 수 있습니다.
- 사이트에서 요청에 응답하는 데 얼마나 걸리나요? 
 각 로그에 캡처된- latency값을 사용하여 각 요청에 대한 사이트의 지연 시간을 확인할 수 있습니다.
- 사이트에서 콘텐츠 캐싱을 활용하고 있나요? 
 각 로그에 포함된- cacheHit필드는 Hosting의 CDN 캐시에서 사이트의 리소스가 신속하게 제공되었는지 아니면 Hosting 백엔드로 완전히 이동했어야 하는지를 알려줍니다. 이렇게 하면 Firebase의 글로벌 CDN을 최대한 활용하여 웹사이트의 성능을 개선할 수 있습니다. 예를 들면 데이터를 사용하여 정적 애셋 및 동적 콘텐츠의 캐싱 습관을 세부 조정할 수 있습니다.
- 트래픽은 여러 도메인에 어떻게 분산되나요? 
 도메인 또는 Hosting 사이트가 여러 개 있는 경우 도메인 또는 사이트를 기준으로 로그를 필터링할 수 있습니다. 이렇게 하면 트래픽이 어떻게 분산되는지 확인할 수 있습니다. 도메인을 기준으로 필터링하면 가장 자주 방문한 도메인을 추적할 수 있습니다.
쿼리를 사용하여 로그 필터링
쿼리를 사용하여 로그를 필터링하는 방법을 알아보려면 로그 뷰어를 사용한 샘플 쿼리 및 로그 쿼리 작성을 참조하세요. 아래 표에서는 이러한 쿼리에 사용할 수 있는 필드를 설명합니다.
Hosting의 경우 쿼리의 몇 가지 초기 필터는 다음과 같습니다.
- 리소스(resource.type) -firebase_domain(Firebase Hosting 사이트 도메인)
- 로그 이름(logName) -webrequests(Firebase Hosting)
각 로그 항목에는 사전 정의된 구조와 쿼리 가능한 필드가 있습니다(LogEntry 참조). Hosting의 경우 일부 필드는 HTTP 요청의 표준이지만 Hosting이 각 요청에서 실행하는 처리에서 가져오는 다른 필드 값이 있습니다.
| 필드 | 설명 | 
|---|---|
| Firebase Hosting은 로그 항목의 httpRequest객체에 다음 필드를 저장합니다.이러한 필드는 HTTP 사양에 정의되어 있습니다. | |
| cacheHit | Hosting CDN에서 캐시에 응답 리소스가 있는지 여부 | 
| latency | s포스트픽스가 있는 초 단위 요청 기간(예:1.256s) | 
| protocol | 요청에 사용된 프로토콜(예: HTTP/1.1,HTTP/2,websocket) | 
| referer | 현재 요청한 페이지로 연결되는 링크가 있는 이전 웹 페이지의 주소(있는 경우) | 
| remoteIp | 요청의 발신 클라이언트 IP | 
| requestMethod | 요청 메서드( GET,POST,PUT등) | 
| requestSize | 요청의 크기(바이트) | 
| requestUrl | 요청의 전체 URL(예: https://foo.web.app/bar또는https://custom.domain.com?query=param) | 
| responseSize | HTTP 응답 크기(바이트) | 
| serverIp | 채워지지 않음 | 
| status | HTTP 응답 상태(예: 200또는404) | 
| userAgent | 요청의 user-Agent 헤더 | 
| Firebase Hosting은 로그 항목의 jsonPayload객체에 추가 필드를 저장합니다. | |
| acceptEncoding | (HTTP 요청에서) 클라이언트가 지원하는 콘텐츠 인코딩(일반적으로 압축 알고리즘. 예: gzip또는compress) | 
| billable | 요청에 대한 요금이 프로젝트에 청구되었는지 여부 | 
| customDomain | 요청이 커스텀 도메인에 대해 수행되었는지 여부 | 
| hostname | 요청이 수행된 호스트 이름 | 
| remoteIpCountry | 요청의 발신 국가 | 
| remoteIpCity | 요청의 발신 도시 | 
로그 기반 측정항목 사용
로그 기반 측정항목을 보고 빌드한 다음 Cloud Monitoring에서 이러한 측정항목을 사용하여 차트와 알림 정책을 만들 수 있습니다.
- 특정 기간에 발생한 로깅 이벤트의 개수와 같이 자동으로 기록되는 사전 정의된 시스템 측정항목을 활용합니다. 
- 프로젝트의 사용자 정의 측정항목을 만듭니다. 지정된 쿼리와 일치하는 로그 항목 수를 계산하거나 일치하는 로그 항목으로 특정 값을 추적할 수 있습니다. 정규 표현식을 사용하여 필터링할 수 있습니다. 
- Cloud Monitoring을 사용하여 특정 메시지가 포함된 로그 항목의 개수를 기록하거나 로그 항목에 보고된 지연 시간 정보를 추출합니다. 그런 다음 차트 및 알림 정책에서 이러한 측정항목을 사용할 수 있습니다. 
Firebase Hosting은 다음과 같은 Hosting 관련 로깅 측정항목도 생성합니다. 이러한 측정항목은 로그 항목에 한정되지 않고 특정 Hosting 사이트에 전반적으로 적용됩니다.
- log_bytes: 각 사이트의 총 데이터 사용량
- response_count: 사이트에 대해 작성된 총 응답 수- 이 측정항목에는 HTTP 상태 필드가 포함되어 있으므로 예를 들면 상태별로 HTTP 응답을 도표로 표시할 수 있습니다. 
다른 Google Cloud 도구로 로그 내보내기
사이트의 로그를 Cloud Monitoring 또는 BigQuery와 같은 다른 Google Cloud 도구로 내보낼 수도 있습니다. 예를 들면 다음과 같습니다.
- Cloud Monitoring을 사용하면 차트 및 알림 정책에서 사용할 수 있는 로그 기반 측정항목을 만들 수 있습니다. 
- BigQuery를 사용하면 다음 중 하나를 수행할 수 있습니다. - 데이터 스튜디오를 사용하여 Hosting 데이터의 대시보드를 생성합니다.
- 쿼리를 실행하여 요청에 대한 보다 자세한 통계(평균 응답 크기, 캐시 적중과 캐시 부적중 비교 등)를 얻습니다.
- 사용자가 실제로 요청하는 URL을 확인합니다.
- Hosting 데이터를 BigQuery로 내보낸 다른 Firebase 데이터와 결합하여 새로운 방식으로 쿼리합니다.