로컬 설정 및 디버깅
GitLab v19.1브라우저에서 사용자 상호작용을 추적하려면, 개인 정보 보호 필터(예: AdBlock, uBlock) 및 추적 거부(Do-Not-Track, DNT)와 같은 브라우저 설정이 영향을 미칩니다. 내부 이벤트는 내부적으로 Snowplow라는 도구를 사용합니다.
브라우저에서 사용자 상호작용을 추적하려면, 개인 정보 보호 필터(예: AdBlock, uBlock) 및 추적 거부(Do-Not-Track, DNT)와 같은 브라우저 설정이 영향을 미칩니다. 자세한 내용은 추적에 영향을 미치는 설정을 참조하세요.
내부 이벤트는 내부적으로 Snowplow라는 도구를 사용합니다. 내부 이벤트를 개발하고 테스트하기 위해 프론트엔드 및 백엔드 이벤트를 테스트하는 여러 도구가 있습니다:
| 테스트 도구 | 프론트엔드 추적 | 백엔드 추적 | 로컬 개발 환경 | 프로덕션 환경 | 개별 이벤트 표시 |
|---|---|---|---|---|---|
| Internal Events Monitor | Yes | Yes | Yes | Yes | Yes |
| Snowplow Micro | Yes | Yes | Yes | No | Yes |
| GDK 수동 확인 | Yes | Yes | Yes | Yes | No |
| Snowplow Analytics Debugger Chrome Extension | Yes | No | Yes | Yes | Yes |
| Remote event collector | Yes | No | Yes | No | Yes |
로컬 개발 시 새 이벤트를 활발하게 개발할 때는 Internal Events Monitor를 사용하는 것을 권장합니다.
Internal Events Monitor#
Internal Events Tracking Monitor 데모 영상을 시청하세요.
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 이벤트의 선택된 속성이 나열됩니다. 이 테이블이 표시되려면, 이벤트 추적을 활성화하거나(Admin > Settings > Metrics and profiling > Event tracking에서 "Enable event tracking"을 선택하고 변경 사항을 저장) GDK를 Snowplow Micro로 실행하도록 구성해야 합니다.
새로운 i_code_review_user_create_mr 이벤트가 발생하면, 메트릭 값이 업데이트되고 SNOWPLOW EVENTS 테이블에 새 이벤트가 나타납니다.
모니터의 모양은 아래와 같습니다.
Updated at 2023-10-11 10:17:59 UTC
Monitored events: 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#
GitLab 18.0부터 Self-Managed 인스턴스는 기본적으로 이벤트 데이터를 수집합니다. 18.0 이전 버전에서 GitLab Self-Managed 인스턴스는 기본적으로 Snowplow를 통해 이벤트 데이터를 수집하지 않습니다. Docker 기반 Snowplow 수집기인 Snowplow Micro를 사용하여 이벤트를 로컬에서 테스트할 수 있습니다:
-
Docker가 설치되어 작동하는지 확인합니다.
-
Snowplow Micro를 활성화합니다:
gdk config set snowplow_micro.enabled true
- 선택 사항. Snowplow Micro는 기본적으로
9091포트에서 실행됩니다. 다음 명령을 실행하여9092로 변경할 수 있습니다:
gdk config set snowplow_micro.port 9092
- GDK를 재구성하여 Procfile 및 YAML 설정을 재생성합니다:
gdk reconfigure
- GDK를 재시작합니다:
gdk restart
- 이제 Snowplow Micro UI에서 로컬 인스턴스가 보내는 모든 이벤트를 확인하고 특정 이벤트를 필터링할 수 있습니다. Snowplow Micro UI는
/micro/ui경로에서 찾을 수 있습니다. 예:http://localhost:9092/micro/ui.
Snowplow Micro UI 및 API 소개#
Snowplow Micro 영상을 시청하세요.
GDK 수동 확인#
이벤트가 트리거되고 메트릭이 업데이트되는지 빠르게 테스트하려면, rails 콘솔에서 최신 값을 확인할 수 있습니다. 출력에 가장 최근의 이벤트 및 레코드가 포함되도록 아래의 헬퍼를 로드해야 합니다.
전체 서비스 핑 페이로드를 확인하려면:
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는 프론트엔드 이벤트를 테스트하기 위한 브라우저 확장 프로그램입니다. 프로덕션, 스테이징, 로컬 개발 환경에서 모두 작동합니다. 배포된 환경에서 올바른 이벤트가 전송되는지 확인하는 데 특히 적합합니다.
-
Snowplow Analytics Debugger Chrome 브라우저 확장 프로그램을 설치합니다.
-
Chrome DevTools를 열고 Snowplow Debugger 탭으로 이동합니다.
-
GitLab 페이지에서 트리거된 모든 이벤트가 Snowplow Debugger 탭에 나타납니다.
Remote event collector#
GitLab.com에서 이벤트는 GitLab이 운영하는 수집기(snowplowprd.trx.GitLab.net)로 직접 전송됩니다. GitLab 18.0부터 Self-Managed 및 Dedicated 인스턴스는 이벤트 데이터를 먼저 로컬에서 수집한 다음, GitLab 이벤트 수집기(events.GitLab.net)로 전달합니다. 18.0 이전 버전에서 GitLab Self-Managed 인스턴스는 수집기가 구성되어 있지 않으며 기본적으로 Snowplow로 데이터를 수집하지 않습니다.
인스턴스를 사용자 지정 Snowplow 수집기를 사용하도록 구성할 수 있습니다.
-
오른쪽 상단 모서리에서 Admin을 선택합니다.
-
왼쪽 사이드바에서 Settings > General을 선택합니다.
-
Snowplow를 펼칩니다.
-
Enable Snowplow tracking을 선택하고 Snowplow 구성 정보를 입력합니다. 예를 들어 사용자 지정 Snowplow 수집기가
your-snowplow-collector.net에서 사용 가능한 경우:
| 이름 | 값 |
|---|---|
| Collector hostname | your-snowplow-collector.net |
| App ID | gitlab |
| Cookie domain | .your-gitlab-instance.com |
- Save changes를 선택합니다.