로컬 설정 및 디버깅
GitLab v19.4요약
브라우저에서 사용자 상호 작용을 추적하려면 개인정보 보호 필터(예: AdBlock, uBlock)와 Do-Not-Track(DNT) 같은 브라우저 설정을 조정해야 할 수 있습니다. 내부 이벤트는 내부적으로 Snowplow라는 도구를 사용합니다.
브라우저에서 사용자 상호 작용을 추적하려면 개인정보 보호 필터(예: AdBlock, uBlock)와 Do-Not-Track(DNT) 같은 브라우저 설정을 조정해야 할 수 있습니다. 자세한 내용은 추적에 영향을 주는 설정을 참고합니다.
내부 이벤트는 내부적으로 Snowplow라는 도구를 사용합니다. 내부 이벤트를 개발하고 테스트할 때 프론트엔드와 백엔드 이벤트를 확인할 수 있는 도구가 여러 가지 있습니다.
| 테스트 도구 | 프론트엔드 추적 | 백엔드 추적 | 로컬 개발 환경 | 프로덕션 환경 | 개별 이벤트 표시 |
|---|---|---|---|---|---|
| 내부 이벤트 모니터 | 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 |
| 원격 이벤트 수집기 | Yes | No | Yes | No | Yes |
로컬 개발에서 새 이벤트를 적극적으로 개발하는 중이라면 내부 이벤트 모니터 사용을 권장합니다.
내부 이벤트 모니터#
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가 발생시키는 이벤트를 보여 줍니다. 수집기를 실행하지 않고 기능 스펙에서 이러한 이벤트를 검증하려면 기능 스펙에서 Snowplow 이벤트 캡처를 참고합니다.
GDK 수동 확인#
이벤트가 트리거되고 지표가 갱신되는지 빠르게 확인하려면 rails console에서 최신 값을 조회할 수 있습니다. 가장 최근 이벤트와 레코드가 출력에 포함되도록 아래 헬퍼를 반드시 로드합니다.
전체 서비스 핑 페이로드를 보려면 다음을 실행합니다.
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 탭에 표시됩니다.
원격 이벤트 수집기#
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.netApp ID gitlabCookie domain .your-gitlab-instance.com -
Save changes를 선택합니다.