InfoGrab DocsInfoGrab Docs

단일 계측 레이어

GitLab의 단일 계측 레이어(Single Instrumentation Layer)가 이벤트 추적을 추상화하는 방법과 구현 방법을 설명합니다.

단일 계측 레이어 # 단일 계측 레이어(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: - trac