튜토리얼: 루비 온 레일 애플리케이션과 GitLab Observability 사용하기

이 기능의 가용성은 기능 플래그에 의해 제어됩니다. 자세한 정보는 분산 추적 기능의 이력을 참조하세요.

이 튜토리얼에서는 GitLab Observability 기능을 사용하여 루비 온 레일 애플리케이션을 생성, 구성, 계측 및 모니터링하는 방법을 배우게 됩니다.

시작하기 전에

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

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

새로운 GitLab 프로젝트 생성

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

  1. 왼쪽 사이드바에서 맨 위의 새로 만들기 () 및 새 프로젝트/저장소 만들기를 선택하세요.
  2. 빈 프로젝트 만들기를 선택하세요.
  3. 프로젝트 세부 정보를 입력하세요.
    • 프로젝트 이름 필드에 animals를 입력하세요.
  4. 프로젝트 만들기를 선택하세요.
  5. animals 프로젝트에서 왼쪽 사이드바에서 설정 > 액세스 토큰을 선택하세요.
  6. api 범위와 개발자 역할을 가진 액세스 토큰을 생성하세요. 나중에 필요하므로 토큰 값을 안전한 곳에 저장하세요.

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. Gemfile에 OpenTelemetry 및 dotenv gem을 추가하세요:

    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 프로젝트 개요 페이지에서 오른쪽 상단에 있는 작업 ()을 선택하세요.
    2. 프로젝트 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 프로젝트에서 왼쪽 사이드바에서 모니터 > 추적을 선택하세요. 모든 것이 올바르게 작동하면 각 컨트롤러 작업에 대한 추적을 볼 수 있어야 합니다.

    Metrics UI

  4. 선택 사항. 추적을 선택하여 해당 스팬을 볼 수 있습니다.

    Traces UI

축하합니다! GitLab Observability 기능을 사용하도록 구성된 애플리케이션을 성공적으로 생성하고 해당 애플리케이션이 생성한 추적을 검토했습니다. 이 토이 애플리케이션을 계속 실험하거나 더 복잡한 애플리케이션을 구성하여 추적을 내보내는 방법을 시도해볼 수 있습니다.

Observability 추적은 아직 제품 사용에 맞추어져 있지 않습니다. 루비 온 레일 애플리케이션에서 OpenTelemetry 수집기를 사용하여 로그나 지표를 공식적으로 지원하는 것이 아님을 기억하세요.