기존 추적을 내부 이벤트 추적으로 마이그레이션
GitLab Internal Events Tracking은 폐기된 Snowplow 및 Redis/RedisHLL 이벤트 추적 옵션 위에 통합된 API를 노출합니다.
이 페이지에서는 이전 방법 중 하나에서 내부 이벤트 추적을 사용하는 방법에 대해 설명합니다.
기존 Snowplow 추적에서의 마이그레이션
이미 Snowplow에서 이벤트를 추적 중이라면 내부 이벤트 추적으로 전환하여 Self-Managed형 인스턴스에서 메트릭을 수집할 수도 있습니다.
내부 이벤트에서 트리거된 이벤트는 이전에 Snowplow를 직접 추적했을 때와 비교해 특별한 속성을 가지고 있습니다.
-
category
는 이벤트가 발생한 위치로 자동 설정됩니다. 프론트엔드 이벤트의 경우 페이지 이름이고, 백엔드 이벤트의 경우 클래스 이름입니다. 페이지 이름 또는 클래스 이름이 사용되지 않으면,"InternalEventTracking"
의 기본값이 사용됩니다.
마이그레이션하기 전에 이 변경이 적합한지 확인하고 대시보드가 이에 맞게 변경되었는지 확인하세요.
백엔드
이미 Gitlab::Tracking.event
를 사용하여 Snowplow 이벤트를 추적하고 내부 이벤트 추적으로 마이그레이션하려는 경우, 다음과 같이 시작할 수 있습니다.
include Gitlab::InternalEventsTracking
track_internal_event('ci_templates_unique', namespace: namespace, project: project, user: user, additional_properties: { label: label })
label
, property
및 value
속성은 additional_properties
해시 내부로 전송되어야 합니다. 원래 호출에 포함되지 않았다면 additional_properties
인수는 생략할 수 있습니다.
또한 추적하고자 하는 메트릭에 대한 정의를 생성해야 합니다.
메트릭 정의를 생성하기 위해 생성기를 사용할 수 있습니다.
ruby scripts/internal_events/cli.rb
생성기는 필요한 입력을 한 단계씩 안내합니다.
프론트엔드
Vue 컴포넌트에서 Tracking
mixin을 사용 중이라면 InternalEvents
mixin으로 바꿀 수 있습니다.
예를 들어 현재 Vue 컴포넌트가 다음과 같이 보인다면:
import Tracking from '~/tracking';
...
mixins: [Tracking.mixin()]
...
...
this.track('some_label', options)
내부 이벤트 추적으로 변환한 후에는 다음과 같이 보여야 합니다:
import { InternalEvents } from '~/tracking';
...
mixins: [InternalEvents.mixin()]
...
...
this.trackEvent('action', {}, 'category')
현재 category
를 전달하고 유지해야 하는 경우, 이전 예제에서 처럼 trackEvent
메서드의 세 번째 인수로 전달할 수 있습니다. 그러나 새 이벤트에 대해 category
매개변수를 사용하는 것은 강하게 권장하지 않습니다. 이는 기본적으로 이벤트가 트리거된 위치에 대한 정보로 채워지기 때문입니다.
이 MR를 사용할 수 있습니다. 이 MR은 devops_adoption_app
컴포넌트를 내부 이벤트 추적을 사용하도록 마이그레이션합니다.
Snowplow 추적에서 label
, value
, 및 property
를 사용 중이라면 이를 세 번째 인수로 받는 객체로 trackEvent
함수에 전달할 수 있습니다. 이는 선택 사항입니다.
Vue Mixin을 사용하는 경우:
this.trackEvent('i_code_review_user_apply_suggestion', {
label: 'push_event',
property: 'golang',
value: 20
});
원시 JavaScript를 사용하는 경우:
InternalEvents.trackEvent('i_code_review_user_apply_suggestion', {
label: 'admin',
property: 'system',
value: 20
});
컴포넌트에서 data-track-action
을 사용 중이라면 내부 이벤트 추적으로 마이그레이션하려면 data-track-action
을 data-event-tracking
으로 변경해야 합니다. data-track-label
, data-track-property
및 data-track-value
와 같은 추가 추적 속성이 있는 경우, 각각을 각각 data-event-label
, data-event-property
, data-event-value
로 대체할 수 있습니다.
예를 들어 버튼이 다음과 같이 정의되어 있다면:
<gl-button
:href="diffFile.external_url"
:title="externalUrlLabel"
:aria-label="externalUrlLabel"
target="_blank"
data-track-action="click_toggle_external_button"
data-track-label="diff_toggle_external_button"
data-track-property="diff_toggle_external"
icon="external-link"
/>
이를 내부 이벤트 추적으로 변환하면 다음과 같습니다:
<gl-button
:href="diffFile.external_url"
:title="externalUrlLabel"
:aria-label="externalUrlLabel"
target="_blank"
data-event-tracking="click_toggle_external_button"
data-event-label="diff_toggle_external_button"
data-event-property="diff_toggle_external"
icon="external-link"
data-event-tracking
속성에 전달할 동작만 필요하다는 점에 유의하십시오. 이는 Snowplow 및 RedisHLL 모두에 전달될 것입니다.
RedisHLL 추적에서의 마이그레이션
백엔드
현재 RedisHLL
에서 메트릭을 추적 중이라면 다음과 같이 하십시오:
Gitlab::UsageDataCounters::HLLRedisCounter.track_event(:git_write_action, values: current_user.id)
내부 이벤트 추적을 사용하려면 다음 단계를 따르세요:
-
git_write_action
을 설명하는 이벤트 정의를 생성합니다 (가이드). -
20210216182041_action_monthly_active_users_git_write.yml
및20210216184045_git_write_action_weekly.yml
같은 이벤트 섹션에git_write_action
을 나열하는 메트릭 정의를 찾습니다. - 메트릭 정의 파일에서
data_source
를redis_hll
에서internal_events
로 변경합니다. -
instrumentation_class
속성을 제거합니다. 내부 이벤트 메트릭에 사용되지 않습니다. -
메트릭 정의 파일의 양식에
events
섹션을 추가합니다.events: - name: git_write_action unique: user.id
고유한 사용자가 아닌 다른 것을 계산 중인 경우
project.id
또는namespace.id
를 사용합니다. - 메트릭 정의 파일에서
options
섹션을 제거합니다. -
HLLRedisCounter.track_event
대신Gitlab::InternalEventsTracking
모듈을 포함하고track_internal_event
를 호출합니다.- Gitlab::UsageDataCounters::HLLRedisCounter.track_event(:git_write_action, values: current_user.id) + include Gitlab::InternalEventsTracking + track_internal_event('project_created', user: current_user)
-
이벤트에 추가 값을 추가할 수 있습니다. 보통 데이터 웨어하우스에 있기 유용한 정보인
project
및namespace
를 추가합니다.- Gitlab::UsageDataCounters::HLLRedisCounter.track_event(:git_write_action, values: current_user.id) + include Gitlab::InternalEventsTracking + track_internal_event('project_created', user: current_user, project: project, namespace: namespace)
-
internal event tracking
공유 예제를 사용하여 테스트를 업데이트합니다. -
이벤트의 이름을 hll_redis_legacy_events에서 제거합니다.
- 이벤트를 hll_redis_key_overrides 파일에 추가합니다. 파일에 사용된 형식은
project_created-user: 'project_created'
입니다. 여기서project_created
는 이벤트의 이름이고user
는 메트릭 정의 파일에서 지정된 고유값입니다.
프런트엔드
프런트엔드에서 trackRedisHllUserEvent
를 호출하여 프런트엔드 이벤트를 추적하는 경우, mixin, 순수 JavaScript 또는 데이터 추적 속성을 사용하여 내부 이벤트로 변환할 수 있습니다.
각 방법에 대한 예제는 빠른 시작 가이드에서 확인할 수 있습니다.