로컬 설정 및 디버깅

참고: 브라우저 내에서 사용자 상호 작용을 추적하려면 AdBlock, uBlock과 같은 브라우저 설정, Do-Not-Track(DNT)와 같은 개인 정보 필터를 확인하세요. 추적에 영향을 주는 설정에 대해 자세히 알아보기.

내부 이벤트는 내부적으로 Snowplow 도구를 사용합니다. 내부 이벤트를 개발하고 테스트하기 위해 프런트엔드 및 백엔드 이벤트를 테스트하는 여러 도구가 있습니다.

테스트 도구 프런트엔드 추적 백엔드 추적 로컬 개발 환경 프로덕션 환경 개별 이벤트 표시
내부 이벤트 모니터
Snowplow Micro 아니요
GDK에서 수동 확인 아니요
Snowplow Analytics Debugger Chrome Extension 아니요
원격 이벤트 수집기 아니요 아니요

로컬 개발 환경에서는 새로운 이벤트를 활발하게 개발할 때 내부 이벤트 모니터 사용을 권장합니다.

내부 이벤트 모니터

[내부 이벤트 추적 모니터](https://www.youtube.com/watch?v=R7vT-VEzZOI)에 대한 데모 비디오를 시청하세요.

로컬에서 GitLab 애플리케이션 또는 rails console을 사용하는 동안 이벤트가 트리거되고 메트릭이 업데이트되는 방식을 이해하려면 모니터를 사용할 수 있습니다.

모니터를 시작하고 모니터링하려는 하나 이상의 이벤트를 나열할 수 있습니다. 이 예제에서는 i_code_review_user_create_mr을(를) 모니터링하려고 합니다.

rails runner scripts/internal_events/monitor.rb i_code_review_user_create_mr

모니터에는 두 개의 테이블이 표시될 수 있습니다:

  • RELEVANT METRICS 테이블은 i_code_review_user_create_mr 이벤트에 정의된 모든 메트릭을 나열합니다. 오른쪽 두 번째 열은 모니터가 시작될 때 각 메트릭의 값을 보여주며 가장 오른쪽 열은 각 메트릭의 현재 값을 보여줍니다.

  • SNOWPLOW EVENTS 테이블은 모니터가 시작된 후에 발생한 Snowplow 이벤트 및 해당 이벤트 이름과 일치하는 일부 속성들만 나열합니다. 이제 Snowplow Micro를 설정해야만이 테이블이 표시되는 것은 아닙니다.

새로운 i_code_review_user_create_mr 이벤트가 트리거되면 메트릭 값이 업데이트되고 SNOWPLOW EVENTS 테이블에 새 이벤트가 표시됩니다.

모니터는 다음과 같이 보입니다.

2023-10-11 10:17:59 UTC에 업데이트됨
모니터링된 이벤트: i_code_review_user_create_mr

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                          RELEVANT METRICS                                                                          |
+-----------------------------------------------------------------------------+------------------------------+-----------------------+---------------+---------------+
| Key Path                                                                    | Monitored Events             | Instrumentation Class | Initial Value | Current Value |
+-----------------------------------------------------------------------------+------------------------------+-----------------------+---------------+---------------+
| counts_monthly.aggregated_metrics.code_review_category_monthly_active_users | i_code_review_user_create_mr | RedisHLLMetric        | 13            | 14            |
| counts_monthly.aggregated_metrics.code_review_group_monthly_active_users    | i_code_review_user_create_mr | RedisHLLMetric        | 13            | 14            |
| counts_weekly.aggregated_metrics.code_review_category_monthly_active_users  | i_code_review_user_create_mr | RedisHLLMetric        | 0             | 1             |
| counts_weekly.aggregated_metrics.code_review_group_monthly_active_users     | i_code_review_user_create_mr | RedisHLLMetric        | 0             | 1             |
| redis_hll_counters.code_review.i_code_review_user_create_mr_monthly         | i_code_review_user_create_mr | RedisHLLMetric        | 8             | 9             |
| redis_hll_counters.code_review.i_code_review_user_create_mr_weekly          | i_code_review_user_create_mr | RedisHLLMetric        | 0             | 1             |
+-----------------------------------------------------------------------------+------------------------------+-----------------------+---------------+---------------+
+---------------------------------------------------------------------------------------------------------+
|                                             SNOWPLOW EVENTS                                             |
+------------------------------+--------------------------+---------+--------------+------------+---------+
| Event Name                   | Collector Timestamp      | user_id | namespace_id | project_id | plan    |
+------------------------------+--------------------------+---------+--------------+------------+---------+
| i_code_review_user_create_mr | 2023-10-11T10:17:15.504Z | 29      | 93           |            | default |
+------------------------------+--------------------------+---------+--------------+------------+---------+

모니터의 키보드 명령:

  • p 키는 모니터 일시 중지 및 시작을 전환합니다. 테이블을 선택하고 복사하는 작업을 보다 쉽게 만듭니다.
  • r 키는 모니터를 내부 상태로 재설정하고, 이전에 표시되던 이벤트를 제거합니다.
  • q 키는 모니터를 종료합니다.

Snowplow Micro

기본적으로 셀프 매니지드 인스턴스는 Snowplow를 통해 이벤트 데이터를 수집하지 않습니다. 로컬에서 이벤트를 테스트하기 위해 Snowplow Micro인 Docker 기반의 Snowplow 수집기를 사용할 수 있습니다:

  1. Docker가 설치되어 작동하는지 확인.

  2. Snowplow Micro를 활성화합니다:

    gdk config set snowplow_micro.enabled true
    
  3. 선택 사항. Snowplow Micro는 기본적으로 포트 9091에서 실행되며, 다음 명령을 사용하여 9092로 변경할 수 있습니다:

    gdk config set snowplow_micro.port 9092
    
  4. Procfile 및 YAML 구성을 다시 생성하려면 GDK를 재구성하세요:

    gdk reconfigure
    
  5. GDK를 다시 시작하세요:

    gdk restart
    
  6. 이제 로컬 인스턴스에서 보내는 모든 이벤트를 Snowplow Micro UI에서 볼 수 있으며, 특정 이벤트를 필터링할 수 있습니다.

Snowplow Micro UI 및 API 소개

[Snowplow Micro](https://www.youtube.com/watch?v=netZ0TogNcA)에 관한 비디오를 시청하세요.

GDK에서 수동 확인

이벤트가 트리거되고 메트릭이 업데이트 되는지 빠르게 테스트하려면 레일즈 콘솔에서 최신 값을 확인할 수 있습니다. 가장 최근의 이벤트 및 레코드가 출력에 포함되도록 아래 도우미를 로드해야 합니다.

전체 서비스 핑 페이로드 보기:

require_relative 'spec/support/helpers/service_ping_helpers.rb'
ServicePingHelpers.get_current_service_ping_payload

특정 메트릭의 현재 값을 보려면:

require_relative 'spec/support/helpers/service_ping_helpers.rb'
ServicePingHelpers.get_current_usage_metric_value(key_path)

Snowplow Analytics Debugger Chrome Extension

Snowplow Analytics Debugger는 프론트엔드 이벤트를 테스트하기 위한 브라우저 확장 프로그램입니다. 실제 서비스, 스테이징 및 로컬 개발 환경에서 작동합니다. 배포된 환경에서 올바른 이벤트가 전송되는지 확인하는 데 특히 적합합니다.

  1. Snowplow Analytics Debugger Chrome 브라우저 확장 프로그램을 설치하세요.
  2. Chrome DevTools를 열어 Snowplow Debugger 탭으로 이동하세요.
  3. GitLab 페이지에서 트리거된 모든 이벤트는 Snowplow Debugger 탭에 표시됩니다.

원격 이벤트 수집기

GitLab.com에서는 이벤트를 GitLab에서 구성한 수집기(collector)로 전송합니다. 기본적으로 자체 관리형 인스턴스에는 구성된 수집기가 없으며 Snowplow로 데이터를 수집하지 않습니다.

자체 관리형 GitLab 인스턴스를 사용자 정의 Snowplow 수집기로 구성할 수 있습니다.

  1. 왼쪽 사이드바에서 Admin을 선택합니다.
  2. Settings > General을 선택합니다.
  3. Snowplow를 확장합니다.
  4. Snowplow 추적 활성화를 선택하고 Snowplow 구성 정보를 입력합니다. 예를 들어 사용자 정의 snowplow 수집기가 your-snowplow-collector.net에서 사용 가능한 경우:

    이름
    수집기 호스트명 your-snowplow-collector.net
    앱 ID gitlab
    쿠키 도메인 .your-gitlab-instance.com
  5. 변경 사항 저장을 선택합니다.