단일 계측 레이어
GitLab v19.1단일 계측 레이어(Single Instrumentation Layer)는 하나의 인터페이스를 사용하여 GitLab에서 모든 이벤트를 추적할 수 있는 이벤트 추적 추상화입니다. 단일 계측 레이어를 사용하면 다음이 가능합니다:
단일 계측 레이어#
단일 계측 레이어(Single Instrumentation Layer)는 하나의 인터페이스를 사용하여 GitLab에서 모든 이벤트를 추적할 수 있는 이벤트 추적 추상화입니다. Internal Event 프레임워크의 이벤트 정의를 사용하여 이벤트 처리 로직을 선언합니다.
단일 계측 레이어가 필요한 이유#
단일 계측 레이어를 사용하면 다음이 가능합니다:
-
이벤트와 처리 로직을 한 곳에서 계측
-
계측과 처리 모두에 동일한 이벤트 정의를 사용
-
동일한 이벤트에 대한 중복 추적 코드 작성 불필요
단일 계측 레이어의 작동 방식#
이벤트 정의는 처리 로직의 선언적 명세로 사용되며, 이벤트 속성, 추적 파라미터 및 기타 메타데이터의 단일 진실 공급원(Single Source Of Truth, SSOT)입니다.
계측 레이어 추적 메서드(InternalEventsTracking.track_internal_event)가 호출되면,
계측 레이어는 페이로드를 Internal Events로 전달합니다. 이벤트에 추가 트래커가 정의되어 있는 경우,
선언 순서대로 호출되며 원래 페이로드가 파라미터로 전달됩니다. 자세한 내용은
추적 시스템에 구현하는 방법을 참조하세요.
flowchart TD
A[Application code] -->|.track_internal_event| B(Instrumentation Layer)
B --> C[Extra trackers]
B --> D[Internal Events]
C -->|Ai Tracking| E[AiTracking.track_event]
C -->|Contribution Analytics| F[ContributionAnalyticsTracking.track_event]
D --> G[Redis/HLL Counters, Service Ping metrics]
D --> |Snowplow tracking enabled?| H[Snowplow]
추가 추적 시스템#
이벤트가 추적 시스템(예: AiTracking)에서 처리될 때, 이벤트 정의를 확장하여 추가 처리 로직을 포함시킵니다. 예시
이 로직은 표준 인터페이스를 사용하는 추가 처리 클래스로 선언됩니다.
추적 시스템에 구현하는 방법#
추적 시스템에 구현하려면 다음을 수행해야 합니다:
새 이벤트 정의를 추가하거나 기존 정의를 사용합니다(이벤트 사전 참조).
새 추적 클래스에서 처리 로직을 구현합니다. 클래스에는 이벤트 이름과 추가 명명된 파라미터를 받는 클래스 메서드 track_event가 있어야 합니다.
module Gitlab
module Tracking
class NewTrackingSystemProcessor
def self.track_event(event_name, **kwargs)
# add your tracking logic here
end
end
end
end
extra_trackers: 속성에 새 추적 클래스를 추가하여 이벤트 정의를 확장합니다.
extra_trackers:
- tracking_class: Gitlab::Tracking::NewTrackingSystemProcessor
protected_properties:
processor_type:
description: The type of the processor
protected_properties에는 지정된 추적 클래스에만 독점적으로 전송될 속성이 포함됩니다.
Internal Events 프레임워크를 사용하여 코드에서 이벤트를 트리거합니다.
**kwargs는 Internal Events 프레임워크에서 추적 클래스로 추가 파라미터를 전달하는 데 사용됩니다.
실제 파라미터는 위의 이벤트 호출에 전달된 추적 파라미터에 따라 다릅니다.
일반적으로 user, namespace, project와 함께 추가 데이터를 전달하는 데 사용할 수 있는 protected_properties가 포함됩니다.
추적 시스템은 extra_trackers: 속성의 순서에 따라 트리거됩니다.
단일 계측 레이어를 사용하는 시스템#
-
Internal Event. 추적 레이어를 구현하는 주요 시스템입니다.