웹 수출기 (전용 메트릭 서버)

Tier: Free, Premium, Ultimate Offering: Self-managed

GitLab을 Prometheus로 모니터링하기 위해 GitLab은 사용량, 부하 및 성능과 관련된 데이터를 샘플링하는 다양한 수집기를 실행합니다. GitLab은 하나 이상의 Prometheus 내보내기를 실행하여 이 데이터를 Prometheus 스크래퍼에 사용할 수 있도록 만듭니다. Prometheus 내보내기는 메트릭 데이터를 Prometheus 스크래퍼가 이해할 수 있는 형식으로 직렬화하는 HTTP 서버입니다.

note
이 페이지는 웹 애플리케이션 메트릭에 대한 것입니다.
백그라운드 작업 메트릭을 내보내려면 Sidekiq 메트릭 서버 구성 방법을 알아보세요.

우리는 웹 애플리케이션 메트릭을 내보낼 수 있는 두 가지 메커니즘을 제공합니다:

  • 주요 Rails 애플리케이션을 통해. 이는 우리가 사용하는 애플리케이션 서버인 Puma가 메트릭 데이터를 자체 /-/metrics 엔드포인트를 통해 제공한다는 것을 의미합니다. 이것이 기본값이며, GitLab 메트릭에서 설명됩니다. 메트릭 수집량이 적은 소규모 GitLab 설치에는 이 기본값을 권장합니다.
  • 전용 메트릭 서버를 통해. 이 서버를 활성화하면 Puma가 메트릭을 제공하는 것을 전담하는 추가 프로세스를 시작하게 됩니다. 이 접근 방식은 매우 큰 GitLab 설치에서 더 나은 결함 격리 및 성능으로 이어지지만 추가 메모리 사용이 발생합니다. 높은 성능과 가용성을 추구하는 중간에서 큰 GitLab 설치에는 이 접근 방식을 권장합니다.

전용 서버와 Rails /-/metrics 엔드포인트는 동일한 데이터를 제공하므로 기능적으로 동등하며 성능 특성에서만 다릅니다.

전용 서버를 활성화하려면:

  1. Prometheus 활성화하기.
  2. /etc/gitlab/gitlab.rb를 편집하여 다음 줄을 추가(또는 찾아서 주석을 제거)하세요. puma['exporter_enabled']true로 설정되어 있는지 확인하세요:

    puma['exporter_enabled'] = true  
    puma['exporter_address'] = "127.0.0.1"  
    puma['exporter_port'] = 8083  
    
  3. GitLab 번들 Prometheus를 사용할 경우, 해당 scrape_configlocalhost:8083/metrics를 가리키고 있는지 확인하세요. 스크래퍼 대상을 구성하는 방법에 대해서는 사용자 정의 스크랩 구성 추가하기 페이지를 참조하세요. 외부 Prometheus 설치에 대해서는 외부 Prometheus 서버 사용하기를 참조하세요.
  4. 파일을 저장하고 GitLab 재구성하기하여 변경 사항이 적용되도록 합니다.

이제 메트릭을 localhost:8083/metrics에서 제공하고 수집할 수 있습니다.

HTTPS 활성화하기

메트릭을 HTTP 대신 HTTPS를 통해 제공하려면 내보내기 설정에서 TLS를 활성화하세요:

  1. /etc/gitlab/gitlab.rb를 편집하여 다음 줄을 추가(또는 찾아서 주석을 제거)하세요:

    puma['exporter_tls_enabled'] = true  
    puma['exporter_tls_cert_path'] = "/path/to/certificate.pem"  
    puma['exporter_tls_key_path'] = "/path/to/private-key.pem"  
    
  2. 파일을 저장하고 GitLab 재구성하기하여 변경 사항이 적용되도록 합니다.

TLS가 활성화되면 위에서 설명한 것처럼 동일한 portaddress가 사용됩니다. 메트릭 서버는 동시에 HTTP와 HTTPS를 제공할 수 없습니다.

문제 해결

Docker 컨테이너가 공간이 부족함

도커에서 GitLab 실행하기를 실행할 때, 컨테이너의 공간이 부족해질 수 있습니다. 이는 Web Exporter와 같이 공간 소비를 증가시키는 특정 기능을 활성화할 경우 발생할 수 있습니다.

이 문제를 해결하려면, shm-size를 업데이트하세요.