튜토리얼: Ruby on Rails 애플리케이션에 GitLab Observability 사용하기


이 기능의 사용 가능성은 기능 플래그에 의해 제어됩니다.
자세한 내용은 분산 추적 기능의 역사를 참조하세요.

이 튜토리얼에서는 GitLab Observability 기능을 사용하여 Ruby on Rails 애플리케이션을 생성, 구성, 계측 및 모니터링하는 방법을 배웁니다.

시작하기 전에

잠시 시간을 내어 다음 사항을 확인하세요:

  • GitLab.com 또는 GitLab Self-Managed에 대한 GitLab Ultimate 구독
  • Ruby on Rails의 로컬 설치
  • Git, Ruby on Rails 및 OpenTelemetry의 핵심 개념에 대한 기본 지식

새로운 GitLab 프로젝트 생성하기

먼저, 새로운 GitLab 프로젝트와 해당 액세스 토큰을 생성하세요.
이 튜토리얼에서는 프로젝트 이름을 animals로 사용합니다.

  1. 왼쪽 사이드바에서 상단의 Create new ( )와 New project/repository를 선택합니다.
  2. Create blank project를 선택합니다.
  3. 프로젝트 세부 정보를 입력합니다.
    • Project name 필드에 animals를 입력합니다.
  4. Create project를 선택합니다.
  5. animals 프로젝트에서 왼쪽 사이드바에서 Settings > Access tokens를 선택합니다.
  6. api 범위와 Developer 역할로 액세스 토큰을 생성합니다. 토큰 값을 안전한 곳에 저장하세요. 나중에 필요합니다.

Rails 애플리케이션 생성하기

다음으로, 우리가 계측할 수 있는 새로운 Ruby on Rails 애플리케이션이 필요합니다.
이 튜토리얼에서는 동물 목록을 저장할 장난감 애플리케이션을 생성해 보겠습니다.

애플리케이션을 생성하려면:

  1. 명령줄에서 다음을 실행합니다:

    rails new animals
    
  2. animals 디렉토리로 이동하고 애플리케이션을 실행합니다:

    cd animals
    rails server -p 8080
    
  3. 웹 브라우저에서 http://localhost:8080를 방문하고 애플리케이션이 올바르게 실행되고 있는지 확인합니다.
  4. Animal 클래스에 대한 모델 스캐폴드를 생성하고 생성된 데이터베이스 마이그레이션을 실행합니다:

    rails generate scaffold Animal species:string number_of_legs:integer dangerous:boolean
    rails db:migrate
    
  5. 애플리케이션을 다시 실행하고 http://localhost:8080/animals에서 동물 목록을 방문합니다. 동물을 생성, 수정 및 삭제해 보아 모든 것이 예상대로 작동하는지 확인합니다.
  6. OpenTelemetry 및 dotenv 젬을 Gemfile에 추가합니다:

    bundle add opentelemetry-sdk opentelemetry-instrumentation-all opentelemetry-exporter-otlp dotenv
    
  7. 구성을 처리하기 위해 초기화 파일을 생성하고 환경 변수를 저장할 .env 파일을 추가합니다:

    touch config/initializers/opentelemetry.rb
    touch .env
    
  8. config/initializers/opentelemetry.rb 파일을 편집하고 다음 코드를 추가합니다:

    require 'opentelemetry/sdk'
    require 'opentelemetry/instrumentation/all'
    require 'opentelemetry-exporter-otlp'
    
    OpenTelemetry::SDK.configure do |c|
      c.service_name = 'animals-rails'
      c.use_all()
    end
    
  9. 프로젝트 ID를 찾습니다:
    1. animal 프로젝트 개요 페이지에서 오른쪽 상단의 Actions ( )를 선택합니다.
    2. Copy project ID를 선택합니다. 복사된 ID를 나중에 사용하기 위해 저장합니다.
  10. .env 파일을 편집하고 다음 코드를 추가합니다:

    OTEL_EXPORTER = "otlphttp"
    OTEL_EXPORTER_OTLP_ENDPOINT = "https://gitlab.com/api/v4/projects/{{PROJECT_ID}}/observability"
    OTEL_EXPORTER_OTLP_HEADERS = "PRIVATE-TOKEN={{ACCESS_TOKEN}}"
    OTEL_LOG_LEVEL = "debug"
    

    이전에 얻은 PROJECT_IDACCESS_TOKEN의 값을 꼭 변경하세요.
    Self-Managed GitLab 인스턴스를 사용하는 경우, gitlab.com을 자가 관리 인스턴스 호스트네임으로 교체하세요.

추적 보기

이제 Observability 추적을 사용하도록 구성된 애플리케이션이 준비되었으므로, GitLab.com에서 내보낸 추적을 볼 수 있습니다.

내보낸 추적을 보려면:

  1. animals 애플리케이션을 다시 시작합니다.

  2. http://localhost:8080/animals를 방문하고 애플리케이션에서 몇 가지 작업을 수행합니다.

  3. animals 프로젝트에서 왼쪽 사이드바에서 모니터 > 추적을 선택합니다.
    모든 것이 제대로 작동하면 각 컨트롤러 작업에 대한 추적이 표시됩니다.

    메트릭 UI

  4. 선택 사항. 추적을 선택하여 해당 스팬을 봅니다.

    추적 UI

축하합니다! 애플리케이션을 성공적으로 생성하고 GitLab Observability 기능을 사용하도록 구성했으며 애플리케이션이 생성한 추적을 조사했습니다. 이 장난감 애플리케이션으로 계속 실험하거나 더 복잡한 애플리케이션을 구성하여 추적을 내보낼 수 있습니다.

Observability 추적은 아직 프로덕션 사용을 위해 준비되지 않았다는 점을 기억하세요. Ruby on Rails 애플리케이션에서 OpenTelemetry 수집기를 사용한 로그나 메트릭에 대한 공식 지원은 없습니다.