스마트 홈의 로그 기반 측정항목

1. 시작하기 전에

스마트 홈 디버깅 Codelab에서 학습한 대로 스마트 홈 프로젝트에 측정항목과 로그를 게시합니다. 측정항목은 스마트 홈 작업에 문제가 있는 위치를 확인하는 데 도움이 되며, 로그는 이러한 문제를 해결하기 위해 자세히 살펴보는 데 유용합니다.

848f483bfcd2997a.png

프로젝트에서 사용할 수 있는 측정항목 외에도 Google Cloud Platform의 로그 기반 측정항목을 사용하여 직접 측정항목을 생성할 수도 있습니다. 이렇게 하면 로그 내 특정 패턴을 모니터링하고 품질 문제를 효과적으로 디버그할 수 있습니다.

기본 요건

학습할 내용

  • 효과적인 쿼리를 작성하여 스마트 홈 오류 로그를 필터링하는 방법
  • 로그 기반 측정항목을 만들어 쿼리로 측정항목을 생성하는 방법
  • 모니터링을 위해 로그 기반 측정항목으로 차트와 대시보드를 만드는 방법

2. 로그 작업

스마트 홈 디버깅 Codelab에서 간략하게 설명한 대로 로그 작업은 프로젝트 성공을 위한 핵심입니다. Google Cloud Platform에서 제공하는 도구를 사용하면 로그를 효과적으로 모니터링하고 분석할 수 있습니다. 프로젝트에서 사용할 수 있는 모든 로그에 액세스하려면 로그 탐색기를 사용하면 됩니다.

로그 액세스

로그에 액세스하려면 먼저 Google Cloud Platform에 로그인하고 프로젝트를 선택해야 합니다. 사이드 메뉴를 사용하여 작업 > 로깅 > 로그 탐색기로 이동하면 로그 탐색기가 나옵니다. 로그 탐색기를 열면 다음과 같은 뷰가 표시됩니다.

78982d8b6d19b827.png

로그 탐색기는 기본 섹션 2가지로 구성됩니다. 하나는 쿼리를 작성하는 상단 섹션(쿼리 빌더)이고 다른 하나는 일치하는 결과를 표시하는 영역(쿼리 결과)입니다.

Google 전반의 여러 가지 다양한 구성요소는 기본적으로 프로젝트에 로그를 작성합니다. 스마트 홈 통합에서 들어오는 로그를 찾아 사용하려면 맞춤 쿼리를 작성해야 합니다.

쿼리 작성

로그는 리소스 유형 아래의 프로젝트에 게시됩니다. 각 리소스 유형은 Google 내의 다른 플랫폼을 나타냅니다. 스마트 홈 플랫폼에서 발생하는 로그는 assistant_action_project 리소스 유형의 프로젝트에서 사용할 수 있습니다.

또한 생성 시 모든 로그에 심각도 수준이 할당됩니다. 스마트 홈 로그 중 오류 및 예외를 표시하는 로그에는 ERROR 수준을 사용하고 다른 경우에는 모두 DEBUG 수준을 사용합니다.

다음 예시에서는 오류를 표시하는 플랫폼에서만 발생하는 로그를 필터링하도록 다음과 같이 쿼리를 작성해 보겠습니다.

753bfe72a9f8e959.png

쿼리 작성을 완료했으면 쿼리 실행 버튼을 클릭하여 쿼리를 시작하세요. 이렇게 하면 스마트 홈 통합에서 발생하는 오류가 표시됩니다.

3ef42da5a6c322e1.png

지난 1시간 동안 다양한 오류가 여러 번 발생한 것을 확인할 수 있습니다. 각 줄은 단일 오류 로그를 나타냅니다. 개별 로그를 추가로 클릭하여 중첩된 필드를 펼치면 더 자세한 정보를 볼 수 있습니다.

히스토그램 사용

로그 탐색기는 쿼리와 일치하는 로그의 시간 분포를 확인하는 데 유용한 히스토그램 기능을 제공합니다. 히스토그램을 활성화하려면 오른쪽 상단 모서리의 버튼에서 페이지 레이아웃을 클릭하고 히스토그램을 선택하여 기능을 사용 설정하세요.

10eaf1d204decf3c.png

사용 설정하면 쿼리와 일치하는 로그의 분포가 표시됩니다.

dd3410e65a83cf5d.png

위 이미지에서 볼 수 있듯이 지난 1시간 동안 드물게 클러스터링된 오류가 몇 개 있습니다. 클러스터 3개가 오후 1시 45분, 2시, 2시 15분경에 형성된 것으로 보입니다. 히스토그램은 타임스탬프 값 확인만으로는 쉽게 알아내기 어려운 패턴을 감지하는 데 도움이 됩니다.

현재 사용하는 쿼리는 로그를 구분하지 않고 스마트 홈 통합에서 발생하는 모든 오류를 보여줍니다. 그러나 특정 기기의 유형이나 특성으로 인해 발생한 오류 패턴을 추적하려는 경우처럼 오류를 구분해야 할 때도 있을 것입니다. 오류를 구분하기 위해 고급 쿼리를 작성하는 방법을 살펴보겠습니다.

고급 쿼리

스마트 홈 이벤트 로그를 검사하면 정보를 수집할 수 있는 다양한 필드가 표시됩니다.

825c57c36800844e.png

action

  • trait: 사용자의 대상 기기 특성(예: OnOff, StartStop, Brightness)
  • actionType: 특성의 세부 상태(예: On, Off, Pause, Stop, Resume)

device

  • deviceType: 사용자의 대상 기기 유형(예: Light, Switch, Washer)

status

  • isSuccess: 작업 결과가 성공한 것으로 간주되는지 표시(true, false)
  • statusType: 작업 결과의 상태 코드(실패 시 오류 코드 표시)
  • externalDebugString: 작업의 디버그 문자열(오류에 대한 상세 설명)

기타 필드

정보를 가져올 수 있는 추가 필드도 있습니다.

  • requestId: 요청과 연결된 고유 ID(Google에서 생성)
  • executionType: 요청에 사용된 경로(클라우드인지 로컬인지 나타냄)
  • latencyMsec: Google Server에서 요청하는 데 걸린 인식 지연 시간(밀리초 단위)
  • locale: 요청을 보낼 때 사용된 언어/지역 쌍(예: en-US, fr-FR)

위 목록의 특성 필드를 사용하여 OnOff 특성에서 발생하는 오류만 포함하도록 쿼리를 다음과 같이 수정해 보겠습니다.

resource.type="assistant_action_project" AND severity=ERROR AND
jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"

업데이트된 쿼리를 실행하면 시스템에서 로그를 식별하고 상응하는 결과를 표시합니다.

76176d7a41962341.png

지금까지는 모든 쿼리를 직접 작업했습니다. 이는 오류 상태를 빠르게 확인하는 데는 좋은 방법이지만 시간 경과에 따른 오류 패턴의 변화를 모니터링하는 데는 좋지 않습니다. 이 흐름을 자동화하고 더 긴 기간의 데이터를 캡처하기 위해 로그 기반 측정항목을 만들어 보겠습니다.

3. 로그 기반 측정항목

시간 경과에 따라 쿼리와 일치하는 로그 수를 계산하려면 로그 기반 측정항목을 사용하면 됩니다. 이를 통해 로그 전반의 패턴을 확인하고 근본적인 문제에 관한 유용한 정보를 얻을 수 있습니다.

로그 기반 측정항목 만들기

로그 기반 측정항목을 만들려면 작업 > 로깅 > 로그 기반 측정항목으로 이동하세요. 그러면 프로젝트에서 이미 사용할 수 있는 로그 기반 측정항목 목록이 표시됩니다. 측정항목 만들기 버튼을 클릭하면 로그 기반 측정항목 만들기 화면이 표시됩니다.

296af6e7d8dcf6cf.png

기본 측정항목 유형 2가지 중 하나인 카운터 측정항목은 쿼리와 일치하는 로그 수를 계산합니다. 분포 측정항목은 기본 분포를 추적하고 평균, 중앙값, 95번째 백분위 수와 같은 통계 연산을 허용하는 유형입니다.

아래로 스크롤하면 쿼리를 입력할 수 있는 필터 섹션이 표시됩니다.

f7f2093fa1bce2ac.png

이전 섹션의 쿼리를 필터 빌드 텍스트 영역에 붙여넣겠습니다.

​​resource.type="assistant_action_project" AND severity=ERROR AND
jsonPayload.executionLog.executionResults.actionResults.action.trait="TRAIT_ON_OFF"

로그 미리보기 버튼을 클릭하여 필터와 일치하는 이전 로그를 빠르게 확인할 수도 있습니다. 작업을 완료하면 측정항목 만들기 버튼을 클릭하고 다음 섹션으로 넘어가면 됩니다.

로그 기반 측정항목 데이터 보기

생성한 로그 기반 측정항목은 이제 로그 기반 측정항목 페이지의 사용자 정의 측정항목 섹션에서 사용할 수 있습니다.

1b2c88c18533fbcd.png

로그 기반 측정항목(점 3개)에 해당하는 메뉴에서 측정항목 탐색기에서 보기를 선택하여 로그 기반 측정항목에 수집된 데이터를 확인하세요.

54a836fdc3a666a3.png

새로운 오류가 발생하면 로그 기반 측정항목으로 캡처되고 측정항목 탐색기의 차트 창에 표시됩니다.

맞춤 대시보드를 통한 모니터링

새 로그 기반 측정항목이 의도한 대로 작동하는 것을 확인하고 나면 이 차트 뷰를 맞춤 대시보드에 저장해야 합니다. 작업을 시작하려면 측정항목 탐색기의 오른쪽 상단에 있는 차트 저장 버튼을 클릭하세요. 이렇게 하면 차트의 이름을 지정하고 저장할 대시보드를 선택하라는 메시지가 표시됩니다.

52329085f841782e.png

대시보드에 차트를 저장하고 나면 대시보드에서 차트에 쉽게 액세스할 수 있습니다. 프로젝트에서 사용할 수 있는 대시보드 목록에 액세스하려면 작업 > 모니터링 > 대시보드로 이동하세요.

44961e7cb3663341.png

'Codelab 대시보드'라는 대시보드에 차트를 저장했습니다. 이 대시보드를 열면 다음 뷰가 표시됩니다.

f7e025c27f30f996.png

로그 기반 측정항목을 보여주는 차트가 새로 수집된 데이터와 함께 여기에 표시됩니다. 스마트 홈 로그가 프로젝트에 실시간으로 게시됩니다. 새 로그를 사용할 수 있게 되면 로그 기반 측정항목으로 즉시 계산되어 표시됩니다.

4. 수고하셨습니다

674c4f4392e98c1.png

수고하셨습니다. 쿼리를 로그 기반 측정항목으로 변환하고 모니터링을 위해 맞춤 대시보드에 저장하는 방법을 알아봤습니다.

다음 단계

이 Codelab을 기반으로 다음 실습을 해 보고 추가 리소스를 살펴보세요.

  • 지연 시간 등의 숫자 필드에 관한 로그 기반 측정항목을 만들려면 분포 측정항목 만들기 가이드를 확인하세요.
  • Google Cloud에서 제공하는 샘플 쿼리 라이브러리를 검토하고 로그 기반 측정항목에 사용할 수 있는 복잡한 필터를 살펴보세요.