InfoGrab DocsInfoGrab Docs

GitLab Self-Managed에서 Observability 설정

요약

Observability 데이터는 GitLab.com 인스턴스 외부의 별도 애플리케이션에서 수집됩니다. GitLab Self-Managed의 경우, 데이터 저장 위치를 직접 제어할 수 있습니다. GitLab Self-Managed 인스턴스에서 Observability를 설정하려면 다음 단계를 수행합니다:

Status: Experiment

Observability 데이터는 GitLab.com 인스턴스 외부의 별도 애플리케이션에서 수집됩니다. GitLab 인스턴스에 문제가 발생해도 Observability 데이터 수집이나 조회에 영향을 미치지 않으며, 그 반대도 마찬가지입니다.

GitLab Self-Managed의 경우, 데이터 저장 위치를 직접 제어할 수 있습니다.

워크플로#

GitLab Self-Managed 인스턴스에서 Observability를 설정하려면 다음 단계를 수행합니다:

  • 사전 요구 사항을 충족하는지 확인합니다.

  • 서버와 스토리지를 프로비저닝합니다.

  • Docker를 구성하고 컨테이너에 Observability를 설치합니다.

  • 네트워크 접근을 구성합니다.

  • 그룹의 URL을 구성합니다.

사전 요구 사항#

  • 다음 사양을 갖춘 EC2 인스턴스 또는 유사한 가상 머신이 필요합니다:

최소 사양: t3.large (2 vCPU, 8 GB RAM).

  • 권장 사양: 프로덕션 사용을 위해 t3.xlarge (4 vCPU, 16 GB RAM).

  • 최소 100 GB 스토리지 공간.

  • Docker 및 Docker Compose가 설치되어 있어야 합니다.

  • GitLab 버전이 18.1 이상이어야 합니다.

  • GitLab 인스턴스가 Observability 인스턴스에 연결되어 있어야 합니다.

서버 및 스토리지 프로비저닝#

AWS EC2의 경우:

  • 최소 2 vCPU 및 8 GB RAM을 갖춘 EC2 인스턴스를 시작합니다.

  • 최소 100 GB의 EBS 볼륨을 추가합니다.

  • SSH를 사용하여 인스턴스에 연결합니다.

스토리지 볼륨 마운트#

sudo mkdir -p /mnt/data
sudo mount /dev/xvdbb /mnt/data  # Replace xvdbb with your volume name
sudo chown -R $(whoami):$(whoami) /mnt/data

영구 마운트를 위해 /etc/fstab에 추가합니다:

echo '/dev/xvdbb /mnt/data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab

Docker 설치#

Ubuntu/Debian의 경우:

sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $(whoami)

Amazon Linux의 경우:

sudo dnf update
sudo dnf install -y docker
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $(whoami)

로그아웃 후 다시 로그인하거나 다음을 실행합니다:

newgrp docker

마운트된 볼륨을 사용하도록 Docker 구성#

sudo mkdir -p /mnt/data/docker
sudo bash -c 'cat > /etc/docker/daemon.json << EOF
{
  "data-root": "/mnt/data/docker"
}
EOF'
sudo systemctl restart docker

다음 명령으로 확인합니다:

docker info | grep "Docker Root Dir"

GitLab Observability 설치#

cd /mnt/data
git clone -b main https://gitlab.com/gitlab-org/embody-team/experimental-observability/gitlab_o11y.git
cd gitlab_o11y/deploy/docker
docker-compose up -d

타임아웃 오류가 발생하는 경우 다음을 사용합니다:

COMPOSE_HTTP_TIMEOUT=300 docker-compose up -d

선택 사항: 외부 ClickHouse 데이터베이스 사용#

원하는 경우 자체 ClickHouse 데이터베이스를 사용할 수 있습니다.

사전 요구 사항:

  • 외부 ClickHouse 인스턴스에 접근할 수 있으며, 필요한 인증 자격 증명으로 올바르게 구성되어 있는지 확인합니다.

docker-compose up -d를 실행하기 전에 다음 단계를 완료합니다:

  • docker-compose.yml 파일을 엽니다.

  • 다음 항목을 주석 처리합니다:

clickhousezookeeper 서비스.

  • x-clickhouse-defaultsx-clickhouse-depend 섹션.

  • 다음 파일에서 clickhouse:9000의 모든 항목을 관련 ClickHouse 엔드포인트 및 TCP 포트(예: my-clickhouse.example.com:9000)로 교체합니다. ClickHouse 인스턴스에 인증이 필요한 경우, 자격 증명을 포함하도록 연결 문자열도 업데이트해야 할 수 있습니다:

docker-compose.yml

  • otel-collector-config.yaml

  • prometheus-config.yml

GitLab Observability의 네트워크 접근 구성#

텔레메트리 데이터를 올바르게 수신하려면 GitLab Observability 인스턴스의 보안 그룹에서 특정 포트를 열어야 합니다:

  • AWS 콘솔 > EC2 > 보안 그룹으로 이동합니다.

  • GitLab Observability 인스턴스에 연결된 보안 그룹을 선택합니다.

  • 인바운드 규칙 편집을 선택합니다.

  • 다음 규칙을 추가합니다:

유형: Custom TCP, 포트: 8080, 소스: 사용자 IP 또는 0.0.0.0/0 (UI 접근용)

  • 유형: Custom TCP, 포트: 4317, 소스: 사용자 IP 또는 0.0.0.0/0 (OTLP gRPC용)

  • 유형: Custom TCP, 포트: 4318, 소스: 사용자 IP 또는 0.0.0.0/0 (OTLP HTTP용)

  • 유형: Custom TCP, 포트: 9411, 소스: 사용자 IP 또는 0.0.0.0/0 (Zipkin용 - 선택 사항)

  • 유형: Custom TCP, 포트: 14268, 소스: 사용자 IP 또는 0.0.0.0/0 (Jaeger HTTP용 - 선택 사항)

  • 유형: Custom TCP, 포트: 14250, 소스: 사용자 IP 또는 0.0.0.0/0 (Jaeger gRPC용 - 선택 사항)

  • 규칙 저장을 선택합니다.

이제 다음 주소에서 GitLab Observability UI에 접근할 수 있습니다:

http://[your-instance-ip]:8080

그룹의 URL 구성#

Rails 콘솔을 사용하여 그룹의 GitLab Observability URL을 구성합니다:

  • Rails 콘솔에 접근합니다:
docker exec -it gitlab gitlab-rails console
  • 그룹의 Observability 설정을 구성합니다:
group = Group.find_by_path('your-group-name')

Observability::GroupO11ySetting.create!(
  group_id: group.id,
  o11y_service_url: 'your-o11y-instance-url',
  o11y_service_user_email: 'your-email@example.com',
  o11y_service_password: 'your-secure-password',
  o11y_service_post_message_encryption_key: 'your-super-secret-encryption-key-here-32-chars-minimum'
)

다음 항목을 교체합니다:

your-group-name을 실제 그룹 경로로 교체합니다.

  • your-o11y-instance-url을 GitLab Observability 인스턴스 URL로 교체합니다(예: http://192.168.1.100:8080).

  • 이메일과 비밀번호를 원하는 자격 증명으로 교체합니다.

  • 암호화 키를 32자 이상의 보안 문자열로 교체합니다.

다음 단계#

GitLab Self-Managed에서 Observability 설정

GitLab v19.1
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

Observability 데이터는 GitLab.com 인스턴스 외부의 별도 애플리케이션에서 수집됩니다. GitLab Self-Managed의 경우, 데이터 저장 위치를 직접 제어할 수 있습니다. GitLab Self-Managed 인스턴스에서 Observability를 설정하려면 다음 단계를 수행합니다:

Status: Experiment

Observability 데이터는 GitLab.com 인스턴스 외부의 별도 애플리케이션에서 수집됩니다. GitLab 인스턴스에 문제가 발생해도 Observability 데이터 수집이나 조회에 영향을 미치지 않으며, 그 반대도 마찬가지입니다.

GitLab Self-Managed의 경우, 데이터 저장 위치를 직접 제어할 수 있습니다.

워크플로#

GitLab Self-Managed 인스턴스에서 Observability를 설정하려면 다음 단계를 수행합니다:

  • 사전 요구 사항을 충족하는지 확인합니다.

  • 서버와 스토리지를 프로비저닝합니다.

  • Docker를 구성하고 컨테이너에 Observability를 설치합니다.

  • 네트워크 접근을 구성합니다.

  • 그룹의 URL을 구성합니다.

사전 요구 사항#

  • 다음 사양을 갖춘 EC2 인스턴스 또는 유사한 가상 머신이 필요합니다:

최소 사양: t3.large (2 vCPU, 8 GB RAM).

  • 권장 사양: 프로덕션 사용을 위해 t3.xlarge (4 vCPU, 16 GB RAM).

  • 최소 100 GB 스토리지 공간.

  • Docker 및 Docker Compose가 설치되어 있어야 합니다.

  • GitLab 버전이 18.1 이상이어야 합니다.

  • GitLab 인스턴스가 Observability 인스턴스에 연결되어 있어야 합니다.

서버 및 스토리지 프로비저닝#

AWS EC2의 경우:

  • 최소 2 vCPU 및 8 GB RAM을 갖춘 EC2 인스턴스를 시작합니다.

  • 최소 100 GB의 EBS 볼륨을 추가합니다.

  • SSH를 사용하여 인스턴스에 연결합니다.

스토리지 볼륨 마운트#

sudo mkdir -p /mnt/data
sudo mount /dev/xvdbb /mnt/data  # Replace xvdbb with your volume name
sudo chown -R $(whoami):$(whoami) /mnt/data

영구 마운트를 위해 /etc/fstab에 추가합니다:

echo '/dev/xvdbb /mnt/data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab

Docker 설치#

Ubuntu/Debian의 경우:

sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $(whoami)

Amazon Linux의 경우:

sudo dnf update
sudo dnf install -y docker
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $(whoami)

로그아웃 후 다시 로그인하거나 다음을 실행합니다:

newgrp docker

마운트된 볼륨을 사용하도록 Docker 구성#

sudo mkdir -p /mnt/data/docker
sudo bash -c 'cat > /etc/docker/daemon.json << EOF
{
  "data-root": "/mnt/data/docker"
}
EOF'
sudo systemctl restart docker

다음 명령으로 확인합니다:

docker info | grep "Docker Root Dir"

GitLab Observability 설치#

cd /mnt/data
git clone -b main https://gitlab.com/gitlab-org/embody-team/experimental-observability/gitlab_o11y.git
cd gitlab_o11y/deploy/docker
docker-compose up -d

타임아웃 오류가 발생하는 경우 다음을 사용합니다:

COMPOSE_HTTP_TIMEOUT=300 docker-compose up -d

선택 사항: 외부 ClickHouse 데이터베이스 사용#

원하는 경우 자체 ClickHouse 데이터베이스를 사용할 수 있습니다.

사전 요구 사항:

  • 외부 ClickHouse 인스턴스에 접근할 수 있으며, 필요한 인증 자격 증명으로 올바르게 구성되어 있는지 확인합니다.

docker-compose up -d를 실행하기 전에 다음 단계를 완료합니다:

  • docker-compose.yml 파일을 엽니다.

  • 다음 항목을 주석 처리합니다:

clickhousezookeeper 서비스.

  • x-clickhouse-defaultsx-clickhouse-depend 섹션.

  • 다음 파일에서 clickhouse:9000의 모든 항목을 관련 ClickHouse 엔드포인트 및 TCP 포트(예: my-clickhouse.example.com:9000)로 교체합니다. ClickHouse 인스턴스에 인증이 필요한 경우, 자격 증명을 포함하도록 연결 문자열도 업데이트해야 할 수 있습니다:

docker-compose.yml

  • otel-collector-config.yaml

  • prometheus-config.yml

GitLab Observability의 네트워크 접근 구성#

텔레메트리 데이터를 올바르게 수신하려면 GitLab Observability 인스턴스의 보안 그룹에서 특정 포트를 열어야 합니다:

  • AWS 콘솔 > EC2 > 보안 그룹으로 이동합니다.

  • GitLab Observability 인스턴스에 연결된 보안 그룹을 선택합니다.

  • 인바운드 규칙 편집을 선택합니다.

  • 다음 규칙을 추가합니다:

유형: Custom TCP, 포트: 8080, 소스: 사용자 IP 또는 0.0.0.0/0 (UI 접근용)

  • 유형: Custom TCP, 포트: 4317, 소스: 사용자 IP 또는 0.0.0.0/0 (OTLP gRPC용)

  • 유형: Custom TCP, 포트: 4318, 소스: 사용자 IP 또는 0.0.0.0/0 (OTLP HTTP용)

  • 유형: Custom TCP, 포트: 9411, 소스: 사용자 IP 또는 0.0.0.0/0 (Zipkin용 - 선택 사항)

  • 유형: Custom TCP, 포트: 14268, 소스: 사용자 IP 또는 0.0.0.0/0 (Jaeger HTTP용 - 선택 사항)

  • 유형: Custom TCP, 포트: 14250, 소스: 사용자 IP 또는 0.0.0.0/0 (Jaeger gRPC용 - 선택 사항)

  • 규칙 저장을 선택합니다.

이제 다음 주소에서 GitLab Observability UI에 접근할 수 있습니다:

http://[your-instance-ip]:8080

그룹의 URL 구성#

Rails 콘솔을 사용하여 그룹의 GitLab Observability URL을 구성합니다:

  • Rails 콘솔에 접근합니다:
docker exec -it gitlab gitlab-rails console
  • 그룹의 Observability 설정을 구성합니다:
group = Group.find_by_path('your-group-name')

Observability::GroupO11ySetting.create!(
  group_id: group.id,
  o11y_service_url: 'your-o11y-instance-url',
  o11y_service_user_email: 'your-email@example.com',
  o11y_service_password: 'your-secure-password',
  o11y_service_post_message_encryption_key: 'your-super-secret-encryption-key-here-32-chars-minimum'
)

다음 항목을 교체합니다:

your-group-name을 실제 그룹 경로로 교체합니다.

  • your-o11y-instance-url을 GitLab Observability 인스턴스 URL로 교체합니다(예: http://192.168.1.100:8080).

  • 이메일과 비밀번호를 원하는 자격 증명으로 교체합니다.

  • 암호화 키를 32자 이상의 보안 문자열로 교체합니다.

다음 단계#