웹 익스포터 (전용 메트릭 서버)

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

Prometheus로 GitLab을 모니터링할 때, GitLab은 애플리케이션을 샘플링하여 사용, 부하 및 성능과 관련된 데이터를 수집하는 다양한 수집기를 실행합니다. 그런 다음 GitLab은 하나 이상의 Prometheus 익스포터를 실행하여 이러한 데이터를 Prometheus 스크레이퍼가 이해할 수 있는 형식으로 제공할 수 있습니다. Prometheus 익스포터는 메트릭 데이터를 Prometheus 스크레이퍼가 이해할 수 있는 형식으로 직렬화하는 HTTP 서버입니다.

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

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

  • 주요 Rails 애플리케이션을 통해. 즉, 사용하는 응용 프로그램 서버인 Puma가 자체 /-/metrics 엔드포인트를 통해 메트릭 데이터를 제공합니다. 이것이 기본값이며 GitLab 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를 가리키도록합니다. 스크레이퍼 대상을 구성하는 방법은 사용자 정의 스크레이핑 구성 추가 페이지를 참조하세요. 외부 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 컨테이너 공간이 부족함

Docker에서 GitLab을 실행할 때 컨테이너의 공간이 부족할 수 있습니다. 이것은 Web 익스포터와 같이 공간 소비를 증가시키는 특정 기능을 활성화한 경우 발생할 수 있습니다.

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