GitLab Observability 개발 가이드라인
GitLab v19.2GitLab Observability를 개발하고 디버깅하는 방법은 여러 가지가 있습니다: GDK와 GitLab Observability Backend를 로컬에서 올인원으로 실행: Rails, Sidekiq 또는 Workhorse의 변경 사항을 만들거나 검증하려는 경우 가장 간단하고 권장되는 방법입니다.
GitLab Observability 개발 설정#
GitLab Observability를 개발하고 디버깅하는 방법은 여러 가지가 있습니다:
-
GDK와 GitLab Observability Backend를 로컬에서 올인원으로 실행: Rails, Sidekiq 또는 Workhorse의 변경 사항을 만들거나 검증하려는 경우 가장 간단하고 권장되는 방법입니다.
-
GDK를 로컬에서 실행하고 GitLab Observability Backend의 스테이징 인스턴스에 연결(GitLab Observability Backend). Rails, Sidekiq 또는 Workhorse의 변경 사항을 만들거나 검증하려는 경우의 대안적인 방법입니다.
-
전용
devvm사용. 더 복잡하지만 GitLab Observability Backend의 개발 배포를 포함합니다. GitLab Observability Backend 컴포넌트를 변경하려는 경우에 권장됩니다. -
모의 Observability 데이터로 GDK 실행. 프론트엔드 또는 Rails 변경 사항만 작업해야 하고 전체 스택이 필요하지 않은 경우, 또는 머지 리퀘스트 검토자에게 재현 단계를 제공할 때 유용합니다. 검토자는 머지 리퀘스트를 위해 전체 스택을 설정하고 싶지 않을 수 있습니다.
GDK를 실행하고 GitLab Observability Backend의 스테이징 인스턴스에 연결#
이 방법은 Cloud Connected Observability Backend를 활용합니다. GitLab 인스턴스에는 유효한 Cloud License가 필요하며, GitLab Observability Backend의 멀티 테넌트 GitLab 호스팅 인스턴스에 연결된 GitLab Self-Managed 인스턴스로 처리됩니다. 이 작동 방식에 대한 자세한 내용은 이 설계 문서를 참조하세요.
활성화 방법:
GDK 인스턴스에 GitLab Ultimate Self-Managed 구독을 추가합니다.
Continue with GitLab.com account 버튼을 선택하여 스테이징 Customers Portal에 로그인합니다. 기존 계정이 없으면 계정을 생성하라는 메시지가 표시됩니다.
-
기존 클라우드 활성화 코드가 없으면 새 구독 구매 링크 페이지의 Staging Self-Managed Ultimate Subscription 링크를 클릭합니다.
-
GDK 인스턴스의 사용자 수를 충당할 만큼 충분한 시트를 선택합니다(200개면 충분합니다).
-
테스트 신용카드를 사용하여 구독을 구매합니다.
이 단계가 완료되면 GitLab Ultimate Self-Managed 구독의 활성화 코드를 받게 됩니다.
customers-dot을 스테이징으로 가리키고 Observability URL을 스테이징으로 설정하는 환경 변수를 설정합니다. GDK의 경우 <gdk-root>/env.runit에서 설정할 수 있습니다:
export GITLAB_SIMULATE_SAAS=0
export GITLAB_LICENSE_MODE=test
export CUSTOMER_PORTAL_URL=https://customers.staging.gitlab.com
export OVERRIDE_OBSERVABILITY_QUERY_URL=https://observe.staging.gitlab.com
export OVERRIDE_OBSERVABILITY_INGEST_URL=https://observe.staging.gitlab.com
GDK/GCK가 아닌 인스턴스에서는 gitlab.rb 파일의 gitlab_rails['env']를 사용하여 변수를 설정할 수 있습니다:
gitlab_rails['env'] = {
'GITLAB_LICENSE_MODE' => 'test',
'CUSTOMER_PORTAL_URL' => 'https://customers.staging.gitlab.com',
'OVERRIDE_OBSERVABILITY_QUERY_URL' => 'https://observe.staging.gitlab.com',
'OVERRIDE_OBSERVABILITY_INGEST_URL' => 'https://observe.staging.gitlab.com'
}
GitLab Observability 기능의 기능 플래그를 활성화합니다:
Rails 콘솔 세션을 시작합니다:
GDK: gdk rails console
-
GCK:
make console -
GitLab Distribution: Rails 콘솔 세션 시작
-
Feature.enable(:observability_features);를 실행합니다.
인스턴스를 재시작합니다(예: gdk restart).
새 라이선스를 활성화하는 지침을 따릅니다.
프로젝트로 이동하여 탐색 메뉴의 Monitor 섹션에서 Tracing, Metrics, 또는 Logs를 선택하여 GitLab Observability 기능을 테스트합니다.
404 오류가 발생하면 라이선스 데이터를 수동으로 갱신해야 할 수 있습니다.
전용 devvm 사용#
devvm을 방문하여 설정 및 개발을 위한 README 지침을 따르세요.
OpenTelemetry Demo 앱을 사용하여 프로젝트에 데이터 전송#
OpenTelemetry Demo 앱은 여러 Docker 컨테이너(분산 시스템을 나타내는)를 실행하고 로그, 메트릭 및 트레이스를 로컬 GDK 인스턴스에 전송하는 좋은 방법입니다.
데모 앱 실행 지침을 참조할 수 있습니다.
OpenTelemetry Demo 앱 빠른 시작#
데모 리포지터리를 클론합니다:
git clone https://github.com/open-telemetry/opentelemetry-demo.git
데모 폴더로 이동합니다:
cd opentelemetry-demo/
로컬 GDK 인스턴스에 프로젝트를 생성합니다. 프로젝트 ID를 메모해 두세요.
새로 생성된 프로젝트에서 Developer 권한과 API 스코프를 가진 프로젝트 액세스 토큰을 생성합니다. 다음 단계에서 사용할 토큰을 저장합니다.
편집기를 사용하여 src/otelcollector/otelcol-config-extras.yml의 구성을 편집합니다. 다음 YAML을 추가하고 다음을 대체합니다:
$GDK_HOST는 호스트로, $GDK_PORT는 GitLab 인스턴스의 포트 번호로 대체합니다.
$PROJECT_ID는 프로젝트 ID로,$TOKEN은 이전 단계에서 생성한 토큰으로 대체합니다.
exporters:
otlphttp/gitlab:
endpoint: http://$GDK_HOST:$GDK_PORT/api/v4/projects/$PROJECT_ID/observability/
headers:
"private-token": "$TOKEN"
service:
pipelines:
traces:
exporters: [spanmetrics, otlphttp/gitlab]
metrics:
exporters: [otlphttp/gitlab]
logs:
exporters: [otlphttp/gitlab]
GDK와 Docker가 통신하려면 루프백 인터페이스를 설정해야 할 수 있습니다.
구성을 저장하고 데모 앱을 시작합니다:
docker compose up --force-recreate --remove-orphans --detach
GitLab 프로젝트의 Monitor 메뉴에서 로그, 메트릭 및 트레이스를 탐색하여 Telemetry를 확인합니다.
모의 Observability 데이터로 GDK 실행#
다음 패치를 적용하여 Observability API 호출을 로컬 모의 데이터로 재정의합니다:
git apply < <(curl --silent "https://gitlab.com/gitlab-org/opstrace/opstrace/-/snippets/3747939/raw/main/mock.patch")