Web exporter (전용 메트릭 서버)

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

Prometheus를 사용하여 GitLab 모니터링할 때, GitLab은 애플리케이션을 위해 데이터를 샘플링하는 다양한 수집기(collectors)를 실행합니다. 이를 통해 GitLab은 하나 이상의 Prometheus 익스포터를 실행하여 이러한 데이터를 Prometheus 스크레이퍼에 제공할 수 있습니다. Prometheus 익스포터는 메트릭 데이터를 Prometheus 스크레이퍼가 이해할 수 있는 형식으로 직렬화하는 HTTP 서버입니다.

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

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

  • 주요 Rails 애플리케이션을 통해. 즉, 사용하는 응용프로그램 서버인 Puma가 자체 /-/metrics 엔드포인트를 통해 메트릭 데이터를 사용할 수 있도록 합니다. 이 기본 설정은 작은 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를 가리키는지 확인하세요. 스크레이퍼 대상을 구성하는 방법은 사용자 정의 scrape 구성 추가 페이지를 참조하세요. 외부 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를 업데이트하세요.