웹 익스포터 (전용 메트릭 서버)
Prometheus를 사용하여 GitLab을 모니터링할 때, GitLab은 다양한 수집기를 실행하여 사용, 부하 및 성능과 관련된 데이터를 샘플링합니다. 그런 다음 GitLab은 하나 이상의 Prometheus 익스포터를 실행하여 이 데이터를 Prometheus 스크레이퍼가 이해할 수 있는 형식으로 제공할 수 있습니다. Prometheus 익스포터는 메트릭 데이터를 웹 서버로 직렬화하여 Prometheus 스크레이퍼가 이해할 수 있는 형식으로 만드는 HTTP 서버입니다.
웹 애플리케이션 메트릭을 익스포트할 수 있는 두 가지 메커니즘을 제공합니다.
- 메인 Rails 애플리케이션을 통해. 이는 우리가 사용하는 애플리케이션 서버인 Puma가 자체
/-/metrics
엔드포인트를 통해 메트릭 데이터를 제공하는 것을 의미합니다. 이것은 기본값이며, 수집된 메트릭의 양이 적은 소규모 GitLab 설치에 권장됩니다. - 전용 메트릭 서버를 통해. 이 서버를 활성화하면 Puma가 메트릭을 제공하는 유일한 프로세스를 추가로 실행합니다. 이 접근 방식은 매우 큰 GitLab 설치에 대해 더 나은 오류 격리 및 성능을 제공하지만 추가적인 메모리 사용량을 동반합니다. 이 접근 방식은 높은 성능과 가용성을 원하는 중대형 GitLab 설치에 권장됩니다.
전용 서버와 Rails /-/metrics
엔드포인트는 동일한 데이터를 제공하므로 기능적으로 동등하며 성능 특성만 다를 뿐입니다.
전용 서버를 활성화하려면:
- Prometheus를 활성화합니다.
-
/etc/gitlab/gitlab.rb
를 편집하여 다음 라인을 추가하거나 찾아서 주석 처리합니다.puma['exporter_enabled']
가true
로 설정되었는지 확인하세요.puma['exporter_enabled'] = true puma['exporter_address'] = "127.0.0.1" puma['exporter_port'] = 8083
- GitLab 번들 Prometheus를 사용하는 경우, 해당
scrape_config
가localhost:8083/metrics
를 가리키도록 확인합니다. 스크레이퍼 대상을 구성하는 방법에 대해서는 사용자 정의 스크래이퍼 구성 추가 페이지를 참조하세요. 외부 Prometheus 설정을 사용하는 경우, 외부 Prometheus 서버 사용을 대신 참조하세요. - 파일을 저장하고 GitLab을 다시 구성하여 변경 사항이 적용되도록 합니다.
이제 localhost:8083/metrics
에서 메트릭을 제공하고 스크레이핑할 수 있습니다.
HTTPS 활성화
- GitLab 15.2에서 소개되었습니다.
HTTPS를 통해 메트릭을 제공하려면 HTTP 대신에 익스포터 설정에서 TLS를 활성화합니다.
-
/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"
-
파일을 저장하고 GitLab을 다시 구성하여 변경 사항이 적용되도록 합니다.
TLS가 활성화되면 위에서 설명한 것과 동일한 port
및 address
가 사용됩니다. 메트릭 서버는 동시에 HTTP와 HTTPS를 제공할 수 없습니다.
문제 해결
Docker 컨테이너 공간 부족
Docker에서 GitLab을 실행하는 경우, 컨테이너 공간이 부족할 수 있습니다. 이는 웹 익스포터와 같이 공간 소비를 증가시키는 특정 기능을 활성화하는 경우 발생할 수 있습니다.
이 문제를 해결하려면 shm-size를 업데이트하세요.