InfoGrab DocsInfoGrab Docs

GitLab Observability 개발 가이드라인

요약

GitLab Observability를 개발하고 디버깅하는 방법은 여러 가지가 있습니다: GDK와 GitLab Observability Backend를 로컬에서 올인원으로 실행: Rails, Sidekiq 또는 Workhorse의 변경 사항을 만들거나 검증하려는 경우 가장 간단하고 권장되는 방법입니다.

GitLab Observability 개발 설정#

GitLab Observability를 개발하고 디버깅하는 방법은 여러 가지가 있습니다:

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

인스턴스를 재시작합니다(예: 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

UI를 방문하여 데이터를 생성합니다.

GitLab 프로젝트의 Monitor 메뉴에서 로그, 메트릭 및 트레이스를 탐색하여 Telemetry를 확인합니다.

모의 Observability 데이터로 GDK 실행#

다음 패치를 적용하여 Observability API 호출을 로컬 모의 데이터로 재정의합니다:

git apply < <(curl --silent "https://gitlab.com/gitlab-org/opstrace/opstrace/-/snippets/3747939/raw/main/mock.patch")

GitLab Observability 개발 가이드라인

GitLab v19.2
원문 보기
요약

GitLab Observability를 개발하고 디버깅하는 방법은 여러 가지가 있습니다: GDK와 GitLab Observability Backend를 로컬에서 올인원으로 실행: Rails, Sidekiq 또는 Workhorse의 변경 사항을 만들거나 검증하려는 경우 가장 간단하고 권장되는 방법입니다.

GitLab Observability 개발 설정#

GitLab Observability를 개발하고 디버깅하는 방법은 여러 가지가 있습니다:

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

인스턴스를 재시작합니다(예: 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

UI를 방문하여 데이터를 생성합니다.

GitLab 프로젝트의 Monitor 메뉴에서 로그, 메트릭 및 트레이스를 탐색하여 Telemetry를 확인합니다.

모의 Observability 데이터로 GDK 실행#

다음 패치를 적용하여 Observability API 호출을 로컬 모의 데이터로 재정의합니다:

git apply < <(curl --silent "https://gitlab.com/gitlab-org/opstrace/opstrace/-/snippets/3747939/raw/main/mock.patch")