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

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

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

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

웹 응용 프로그램 메트릭을 내보내는 두 가지 메커니즘을 제공합니다:

  • 주 어플리케이션 레일즈(예: 우리가 사용하는 어플리케이션 서버인 Puma)을 통해서입니다. 이는 Puma가 자체 /-/metrics 엔드포인트를 통해 메트릭 데이터를 제공하게 합니다. 이것이 기본값이며, 작게 수집된 메트릭이 있는 소규모 GitLab 설치에 적합합니다.
  • 전용 메트릭 서버를 통해입니다. 이 서버를 활성화하면 Puma가 메트릭을 제공하는 유일한 프로세스를 추가로 실행하게 됩니다. 이 접근 방식은 매우 큰 GitLab 설치에 대한 더 나은 장애 격리 및 성능을 제공하지만 추가적인 메모리 사용량이 발생합니다. 높은 성능과 가용성을 추구하는 중대형 GitLab 설치에 이 접근 방식을 권장합니다.

전용 서버와 레일즈 /-/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를 제공할 수 없습니다.

문제 해결

도커 컨테이너 공간이 부족함

도커에서 GitLab을 실행할 때, 컨테이너의 공간이 부족해질 수 있습니다. 이는 웹 익스포터 등 공간 사용량을 증가시키는 특정 기능을 활성화하는 경우에 발생할 수 있습니다.

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