로컬 설정 및 디버깅

내부 이벤트는 Snowplow라는 도구를 사용합니다. 내부 이벤트를 개발하고 테스트하려면 Snowplow와 관련된 여러 도구가 필요합니다.

테스트 도구 프런트엔드 추적 백엔드 추적 로컬 개발 환경 프로덕션 환경 프로덕션 환경
Snowplow Analytics Debugger Chrome Extension Yes No Yes Yes Yes
Snowplow Micro Yes Yes Yes No No

로컬에서 개발하기 위해서는 로컬 이벤트 수집기 설정 또는 원격 이벤트 수집기 설정 중 하나를 해야 합니다. 새로운 이벤트를 개발할 때는 로컬 설정과 함께 내부 이벤트 모니터를 사용하는 것이 좋습니다.

로컬 이벤트 수집기 설정

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

  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 reconfigure
    
  5. GDK를 다시 시작합니다:

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

Snowplow Micro UI 및 API 소개

[Snowplow Micro에 대한 동영상](https://www.youtube.com/watch?v=netZ0TogNcA)을 확인하세요.

원격 이벤트 수집기 설정

GitLab.com에서 이벤트는 GitLab이 구성한 수집기로 전송됩니다. Self-Managed 인스턴스는 기본적으로 수집기가 구성되어 있지 않으며 Snowplow를 통해 데이터를 수집하지 않습니다.

Self-Managed GitLab 인스턴스를 사용자 정의 Snowplow 수집기를 사용하도록 구성할 수 있습니다.

  1. 왼쪽 사이드바에서 관리 영역을 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. Snowplow를 확장합니다.
  4. Snowplow 추적 활성화를 선택하고 Snowplow 구성 정보를 입력합니다. 예:

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

내부 이벤트 모니터

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

로컬에서 Rails 앱 또는 rails console을 사용하면 이벤트가 트리거되고 메트릭이 업데이트되는 방식을 이해할 수 있습니다. 모니터를 이용할 수 있습니다.

원하는 이벤트를 모니터링하고 싶으면 모니터를 시작하고 하나 이상의 이벤트를 나열합니다. 이 예제에서는 i_code_review_user_create_mr를 모니터링하기를 원합니다:

rails runner scripts/internal_events/monitor.rb i_code_review_user_create_mr

모니터에는 두 개의 테이블이 표시됩니다. 상단 테이블에는 i_code_review_user_create_mr 이벤트에 정의된 모든 메트릭이 나열되어 있습니다. 가장 오른쪽 열은 모니터가 시작될 때 메트릭의 값과 가장 오른쪽 열은 각 메트릭의 현재 값이 표시됩니다. 하단 테이블에는 이벤트명과 일치하는 모든 Snowplow 이벤트의 선택된 속성이 나열됩니다.

새로운 i_code_review_user_create_mr 이벤트가 트리거되면 메트릭 값이 업데이트되고 SNOWPLOW 이벤트 테이블에 새로운 이벤트가 나타날 것입니다.

모니터는 아래와 같은 모습입니다.

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

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                          관련 메트릭들                                                                          |
+-----------------------------------------------------------------------------+------------------------------+-----------------------+---------------+---------------+
| 키 경로                                                                    | 모니터링된 이벤트             | 계측 클래스 | 초기 값 | 현재 값 |
+-----------------------------------------------------------------------------+------------------------------+-----------------------+---------------+---------------+
| counts_monthly.aggregated_metrics.code_review_category_monthly_active_users | i_code_review_user_create_mr | AggregatedMetric      | 13            | 14            |
| counts_monthly.aggregated_metrics.code_review_group_monthly_active_users    | i_code_review_user_create_mr | AggregatedMetric      | 13            | 14            |
| counts_weekly.aggregated_metrics.code_review_category_monthly_active_users  | i_code_review_user_create_mr | AggregatedMetric      | 0             | 1             |
| counts_weekly.aggregated_metrics.code_review_group_monthly_active_users     | i_code_review_user_create_mr | AggregatedMetric      | 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                                             |
+------------------------------+--------------------------+---------+--------------+------------+---------+
| 이벤트명                   | 수집기 타임스탬프      | 사용자 ID | 네임스페이스 ID | 프로젝트 ID | 계획    |
+------------------------------+--------------------------+---------+--------------+------------+---------+
| i_code_review_user_create_mr | 2023-10-11T10:17:15.504Z | 29      | 93           |            | default |
+------------------------------+--------------------------+---------+--------------+------------+---------+

GDK에서 관련 메트릭 값 매뉴얼으로 확인

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

전체 서비스 핑(payload)을 보려면:

spec/support/helpers/service_ping_helpers.rb'를 추가하고 ServicePingHelpers.get_current_service_ping_payload 실행합니다.

특정 메트릭에 대한 현재 값을 보려면:

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 개발자 도구를 열고 Snowplow Debugger 탭을 선택합니다.
  3. GitLab 페이지에서 트리거된 이벤트는 Snowplow Debugger 탭에 나타납니다.