Skip to main content

OpenTelemetry를 사용하여 외부 모니터링 설정

외부 모니터링 시스템을 구성하여 GitHub Enterprise Server 인스턴스에서 OpenTelemetry 메트릭을 수집하고 분석하도록 합니다.

외부 모니터링 방법

GitHub Enterprise Server 인스턴스를 OpenTelemetry를 사용한 외부 모니터링을 통해 기존 모니터링 인프라 및 도구와 통합할 수 있습니다. GitHub Enterprise Server는 외부 모니터링을 위한 두 가지 기본 방안을 제공합니다.

  1.        **Prometheus 엔드포인트**: 외부 도구가 긁어내도록 메트릭을 Prometheus 형식으로 노출
    
  2.        **사용자 지정 OpenTelemetry 파이프라인**: 외부 모니터링 시스템에 메트릭을 푸시하도록 OpenTelemetry 수집기 구성
    

참고 항목

클러스터 배포에서 각 노드는 자체 로컬 메트릭을 노출합니다. 여기에는 클러스터의 모든 서버에서 메트릭을 수집하지만 모니터링 엔드포인트를 통해서만 자체 로컬 메트릭을 노출하는 노드 서버가 포함됩니다. 클러스터의 모든 노드에서 메트릭을 수집하려면 각 노드에서 개별적으로 수집하도록 모니터링 시스템을 구성해야 합니다.

필수 조건

  • GitHub Enterprise Server 3.18 이상에서 OpenTelemetry 메트릭이 활성화된 경우
  • GitHub Enterprise Server 인스턴스와 외부 모니터링 시스템 간의 네트워크 연결
  • GitHub Enterprise Server 인스턴스 및 모니터링 시스템 모두에 대한 관리 액세스

모니터링 방법 선택

인프라 및 요구 사항에 가장 적합한 모니터링 방법을 선택합니다.

다음 경우에 Prometheus 엔드포인트를 사용합니다.

  • 기존 Prometheus 기반 모니터링 인프라가 있습니다.
  • 끌어오기 기반 모니터링 모델을 선호합니다.
  • 외부 도구를 사용하여 GitHub Enterprise Server 메트릭을 스크래핑하려고 합니다
  • 최소한의 구성으로 간단한 통합이 필요합니다.

사용자 지정 OpenTelemetry 파이프라인

다음과 같은 경우 사용자 지정 OpenTelemetry 파이프라인을 사용합니다.

  • 여러 모니터링 시스템에 동시에 메트릭을 푸시해야 합니다.
  • 메트릭을 외부로 보내기 전에 변환, 필터링 또는 집계하려고 합니다.
  • OTLP를 선호하는 클라우드 네이티브 모니터링 솔루션을 사용하고 있습니다.
  • 고급 메트릭 처리 기능이 필요합니다.

옵션 1: Prometheus 엔드포인트 사용

OpenTelemetry 모니터링 스택에는 수집된 모든 메트릭을 Prometheus 형식으로 노출하여 외부 모니터링 도구와 통합할 수 있도록 하는 Prometheus 호환 엔드포인트가 포함되어 있습니다. Prometheus에 대한 설명서의 텍스트 기반 형식 을 참조하세요.

Prometheus 엔드포인트 활성화

관리 콘솔 또는 CLI를 사용하여 Prometheus 엔드포인트를 활성화할 수 있습니다.

관리 콘솔 사용

  1. 페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.

  2. “Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.

  3. " 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.

  4. 모니터링 설정에서 OpenTelemetry 사용을 선택합니다.

  5. 필요에 따라 메트릭 보존메트릭 스크랩 간격 필드를 조정하여 성능을 최적화합니다.

  6.        **Prometheus 호환(/메트릭) 엔드포인트 사용을** 선택합니다.
    
  7.        **엔드포인트 암호** 필드에 강력한 암호를 입력하여 엔드포인트에 대한 액세스를 제어합니다.
    
  8. 필요에 따라 쉼표로 구분된 목록 필드의 신뢰할 수 있는 IPv4/IPv6 주소 또는 CIDR 블록에서 엔드포인트에 액세스할 수 있는 IP 주소 또는 CIDR 블록을 입력합니다.

{ 데이터 reusables.enterprise_management_console.save-settings %}%

명령줄 인터페이스 사용

  1. GitHub Enterprise Server 인스턴스에 SSH로 접속합니다.

  2. Prometheus 엔드포인트를 사용하도록 설정합니다.

    ghe-config observability.metrics.prometheus-endpoint-enabled true
    ghe-config-apply
    
  3. 엔드포인트에 대한 인증 설정(강력하게 권장):

    ghe-config observability.metrics.prometheus-endpoint-password your-secure-password
    ghe-config-apply
    

"Prometheus 엔드포인트에 접근"

Prometheus 엔드포인트는 다음 위치에서 사용할 수 있습니다.

http://[hostname]:8010/metrics

인증은 다음을 사용합니다.

  •         **사용자 이름**: `ghes-metrics`
    
  •         **암호**: 구성에 설정된 값
    

메트릭을 스크래핑하도록 외부 도구 구성

Prometheus 엔드포인트에서 메트릭을 긁어내도록 다양한 외부 모니터링 도구를 구성할 수 있습니다.

Prometheus

Prometheus 구성 파일에 다음 작업 구성을 추가합니다.

scrape_configs:
  - job_name: 'github-enterprise-server'
    static_configs:
      - targets: ['your-ghes-hostname:8010']
    basic_auth:
      username: 'ghes-metrics'
      password: 'your-secure-password'
    scrape_interval: 30s
    metrics_path: '/metrics'
    scheme: http
    tls_config:
      # Set `true` only when testing with self-signed certificates
      insecure_skip_verify: false

기타 모니터링 도구

Prometheus 엔드포인트는 다음을 포함하여 Prometheus 형식 메트릭을 스크래핑할 수 있는 모든 모니터링 도구와 호환됩니다.

  • Grafana(Prometheus 데이터 원본 사용)
  • Datadog(Prometheus 검사 사용)
  • New Relic(Prometheus 통합 사용)
  • 빅토리아 메트릭
  • InfluxDB(Prometheus 입력 플러그 인 사용)

Prometheus 엔드포인트에 대한 보안 고려 사항

메트릭 엔드포인트를 보호하기 위해 추가 보안 조치를 구현할 수 있습니다.

암호 보호

Prometheus 엔드포인트는 암호를 사용하여 액세스를 제한하도록 지원합니다. 관리 콘솔 또는 명령줄 인터페이스를 통해 구성할 수 있습니다.

  •         **관리 콘솔 사용**:
    

    모니터링 설정에서 엔드포인트 암호 필드를 사용하여 엔드포인트에 대한 액세스를 제어하는 강력한 암호를 입력합니다.

  •         **명령줄 인터페이스 사용**:
    
    ghe-config observability.metrics.prometheus-endpoint-password your-secure-password
    ghe-config-apply
    

IP 허용 목록

Prometheus 엔드포인트는 향상된 보안을 위해 IP 허용 목록을 지원합니다. 관리 콘솔 또는 명령줄 인터페이스를 통해 구성할 수 있습니다.

  •         **관리 콘솔 사용**:
    

    모니터링 설정에서 쉼표로 구분된 목록 필드의 신뢰할 수 있는 IPv4/IPv6 주소 또는 CIDR 블록을 사용하여 엔드포인트에 액세스할 수 있어야 하는 IP 주소 또는 CIDR 블록을 입력합니다.

  •         **명령줄 인터페이스 사용**:
    
    ghe-config observability.metrics.prometheus-endpoint-trusted-ips "10.0.0.0/8,192.168.0.0/16"
    ghe-config-apply
    

엔드포인트 테스트

메트릭을 내보내고 있는지 확인합니다.

# Test the Prometheus endpoint
curl -u ghes-metrics:your-password http://your-ghes-hostname:8010/metrics

옵션 2: 사용자 지정 OpenTelemetry 파이프라인 사용

GitHub Enterprise Server는 사용자 지정 OpenTelemetry 수집기 구성을 지원하므로 사용자 지정 파이프라인, 내보내기 및 프로세서를 추가하여 모니터링 기능을 확장할 수 있습니다. 이렇게 하면 기본 GitHub Enterprise Server 관찰성 스택을 유지하면서 메트릭을 외부 모니터링 시스템에 제공할 수 있습니다.

사용자 지정 구성에 대한 중요한 고려 사항

  • 사용자 지정 구성은 기본 GitHub Enterprise Server OpenTelemetry 구성에 추가됩니다.
  •         **예약된 경로**: 경로 `/ghes` 이며 `/internal` GitHub Enterprise Server 내부용으로 예약되어 있으며 사용자 지정 구성 파일에서 사용해서는 안 됩니다.
    
  •         `otlp/ghes` 및 `prometheus/ghes` 수신기는 사용자 정의 파이프라인에서 활용할 수 있는 GitHub Enterprise Server 메트릭의 내장된 원본입니다.
    
  • 프로덕션 환경에 적용하기 전에 비프로덕션 환경에서 구성을 철저히 테스트합니다.
  • 추가 파이프라인으로 CPU 및 메모리 사용량이 증가할 수 있으므로 사용자 지정 구성을 사용하도록 설정한 후 리소스 사용량 모니터링

사용자 지정 OpenTelemetry 구성 사용

관리 콘솔 또는 명령줄 인터페이스를 사용하여 사용자 지정 OpenTelemetry 구성을 사용하도록 설정할 수 있습니다.

관리 콘솔 사용

  1. 페이지의 오른쪽 상단에 있는 GitHub Enterprise Server의 관리 계정에서 을 클릭합니다.

  2. “Site admin”(사이트 관리자) 페이지에 아직 없는 경우 왼쪽 상단에서 Site admin(사이트 관리자)을 클릭합니다.

  3. " 사이트 관리자" 사이드바에서 관리 콘솔 을 클릭합니다.

  4. 모니터링 설정에서 먼저 OpenTelemetry 사용을 선택합니다.

  5.        **사용자 지정 OpenTelemetry 수집기 파이프라인 사용을** 선택합니다.
    
  6.        **찾아보기...** 단추를 사용하여 사용자 지정 OpenTelemetry 수집기 구성 파일(*.yml)을 업로드합니다. [인기 있는 모니터링 시스템에 대한 예제 구성을](#example-configurations-for-popular-monitoring-systems) 참조하세요.
    
  7. "설정" 사이드바에서 설정 저장을 클릭합니다.

    참고 항목

    관리 콘솔에 설정을 저장하면 시스템 서비스가 다시 시작되어 사용자에게 표시되는 가동 중지 시간이 발생할 수 있습니다.

  8. 구성 실행이 완료될 때까지 기다립니다.

명령줄 사용

  1. GitHub Enterprise Server 인스턴스에 SSH로 접속하여 다음 명령을 실행합니다.

    ghe-config observability.metrics.custom-config-enabled true
    
  2. 다음 위치에서 사용자 지정 OpenTelemetry 구성 파일을 만듭니다./data/user/common/otelcol.yaml

    sudo nano /data/user/common/otelcol.yaml
    
  3. 사용자 지정 구성을 추가합니다( 인기 있는 모니터링 시스템에 대한 예제 구성 참조).

  4. 구성을 적용합니다.

    ghe-config-apply
    

다음 예제에서는 인기 있는 모니터링 플랫폼에 대해 사용자 지정 OpenTelemetry 파이프라인을 구성하는 방법을 보여 줍니다. 다른 내보내기 또는 사용자 고유의 내보내기 만들기에 대한 자세한 내용은 OpenTelemetry Collector의 리포지토리를 참조하세요.

Grafana Cloud

---
exporters:
  prometheusremotewrite:
    endpoint: "http://prometheus-us-central1.grafana.net/api/prom/push"
    headers:
      Authorization: "Bearer your-grafana-cloud-token"

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [prometheusremotewrite]

Datadog

---
exporters:
  datadog:
    api:
      site: datadoghq.com
      key: your-datadog-api-key
    host_metadata:
      enabled: true

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [datadog]

New Relic (뉴 렐릭)

---
exporters:
  otlp:
    endpoint: "http://otlp.nr-data.net:4317"
    headers:
      api-key: "your-new-relic-license-key"

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [otlp]

범용 OTLP 엔드포인트

---
exporters:
  otlp:
    endpoint: "http://your-otel-collector:4317"
    headers:
      api-key: "your-api-key"
    tls:
      insecure: false

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [otlp]

네트워크 및 보안 고려 사항

선택한 모니터링 접근 방식에 따라 네트워크 및 보안 설정을 구성합니다.

TLS 및 인증서

외부 모니터링 시스템에 대한 보안 연결의 경우:

  • 가능한 경우 유효한 TLS 인증서 사용
  • 모니터링 시스템에서 적절한 tls_config 설정 구성
  • 향상된 보안을 위해 mTLS(상호 TLS)를 사용하는 것이 좋습니다.

다음 단계