2.5. Loki의 OTLP 데이터 수집
로깅 6.1은 OTLP(OpenTelemetry Protocol)를 사용하여 API 엔드포인트를 활성화합니다. OTLP는 Loki를 위해 특별히 설계되지 않은 표준화된 형식이므로 OpenTelemetry의 데이터 형식을 Loki의 데이터 모델에 매핑하려면 Loki의 측에 대한 추가 구성이 필요합니다. OTLP에는 스트림 레이블 또는 구조화된 메타데이터 와 같은 개념이 없습니다. 대신 OTLP는 세 가지 범주로 그룹화된 속성으로 로그 항목에 대한 메타데이터를 제공합니다.
- 리소스
- 범위
- log
이렇게 하면 필요에 따라 여러 항목에 대해 동시에 또는 개별적으로 메타데이터를 설정할 수 있습니다.
2.5.1. OTLP 데이터 수집용 LokiStack 구성
OTLP(OpenTelemetry Protocol) 출력 로그 전달자는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
OTLP 수집에 대한 LokiStack
CR(사용자 정의 리소스)을 구성하려면 다음 단계를 따르십시오.
사전 요구 사항
- Loki 설정이 스키마 버전 13에 도입된 구조화된 메타데이터를 지원하는지 확인하여 OTLP 로그 수집을 활성화합니다.
프로세스
스키마 버전을 설정합니다.
새
LokiStack
CR을 생성할 때 스토리지 스키마 구성에서version: v13
을 설정합니다.참고기존 구성의 경우
version: v13
과effectiveDate
를 사용하여 새 스키마 항목을 추가합니다. 스키마 버전 업데이트에 대한 자세한 내용은 업그레이드 스키마 (Grafana 문서)를 참조하십시오.
다음과 같이 스토리지 스키마를 구성합니다.
스토리지 스키마 구성 예
# ... spec: storage: schemas: - version: v13 effectiveDate: 2024-10-25
effectiveDate
가 전달되면 v13 스키마가 적용되어LokiStack
에서 구조화된 메타데이터를 저장할 수 있습니다.
2.5.2. 속성 매핑
Loki Operator가 openshift-logging
모드로 설정되면 기본 속성 매핑 세트가 자동으로 적용됩니다. 이러한 매핑은 특정 OTLP 속성을 Loki의 스트림 레이블 및 구조화된 메타데이터와 조정합니다.
일반적인 설정의 경우 이러한 기본 매핑만으로도 충분합니다. 그러나 다음과 같은 경우 속성 매핑을 사용자 지정해야 할 수 있습니다.
- 사용자 지정 수집기 사용: 설정에 추가 속성을 생성하는 사용자 지정 수집기가 포함된 경우 이러한 특성이 Loki에 유지되도록 매핑을 사용자 정의하는 것이 좋습니다.
- 특성 세부 정보 수준 조정: 기본 특성 세트가 필요 이상으로 자세히 설명하는 경우 필수 속성으로만 줄일 수 있습니다. 이로 인해 과도한 데이터 스토리지를 방지하고 로깅 프로세스를 간소화할 수 있습니다.
스트림 레이블 또는 구조화된 메타데이터에 매핑되지 않은 속성은 Loki에 저장되지 않습니다.
2.5.2.1. OpenShift의 사용자 정의 속성 매핑
openshift-logging
모드에서 Loki Operator를 사용하는 경우 속성 매핑은 OpenShift 기본값을 따르지만 사용자 정의 매핑을 구성하여 조정할 수 있습니다. 사용자 지정 매핑을 사용하면 추가 구성이 특정 요구 사항을 충족할 수 있습니다.
openshift-logging
모드에서 사용자 정의 속성 매핑은 모든 테넌트 또는 필요에 따라 개별 테넌트에 대해 전역적으로 구성할 수 있습니다. 사용자 정의 매핑이 정의되면 OpenShift 기본값에 추가됩니다. 기본 권장 라벨이 필요하지 않은 경우 테넌트 구성에서 비활성화할 수 있습니다.
Loki Operator와 Loki 자체의 주요 차이점은 상속 처리입니다. Loki는 default_resource_attributes_as_index_labels
만 기본적으로 테넌트에 복사하는 반면 Loki Operator는 openshift-logging
모드의 각 테넌트에 전체 글로벌 구성을 적용합니다.
LokiStack
내에서 속성 매핑 구성은 limits
설정을 통해 관리됩니다.
# ... spec: limits: global: otlp: {} 1 tenants: application: otlp: {} 2
글로벌 및 테넌트별 OTLP 구성 모두 속성을 스트림 레이블 또는 구조화된 메타데이터에 매핑할 수 있습니다. 로그 항목을 Loki 스토리지에 저장하려면 하나 이상의 스트림 레이블이 필요하므로 이 구성이 해당 요구 사항을 충족하는지 확인합니다.
스트림 레이블은 LokiStack
리소스 구조가 반영하는 리소스 수준 속성에서만 파생됩니다.
spec: limits: global: otlp: streamLabels: resourceAttributes: - name: "k8s.namespace.name" - name: "k8s.pod.name" - name: "k8s.container.name"
반대로 구조화된 메타데이터는 리소스, 범위 또는 로그 수준 특성에서 생성할 수 있습니다.
# ... spec: limits: global: otlp: streamLabels: # ... structuredMetadata: resourceAttributes: - name: "process.command_line" - name: "k8s\\.pod\\.labels\\..+" regex: true scopeAttributes: - name: "service.name" logAttributes: - name: "http.route"
Loki에서 유사한 속성을 매핑할 때 속성 이름에 regex: true
를 설정하여 정규식을 사용합니다.
데이터 볼륨이 증가할 수 있으므로 스트림 레이블에는 정규식을 사용하지 마십시오.
2.5.2.2. OpenShift 기본값 사용자 정의
openshift-logging
모드에서는 특정 속성이 필요하며 OpenShift 함수에서 역할로 인해 구성에서 제거할 수 없습니다. 성능에 영향을 주는 경우 레이블이 지정된 기타 속성이 비활성화될 수 있습니다.
사용자 정의 속성 없이 openshift-logging
모드를 사용하는 경우 OpenShift 툴과 즉시 호환성을 얻을 수 있습니다. 스트림 레이블 또는 구조화된 메타데이터로 추가 속성이 필요한 경우 사용자 지정 구성을 사용합니다. 사용자 지정 구성은 기본 구성과 병합할 수 있습니다.
2.5.2.3. 권장 속성 제거
openshift-logging
모드에서 기본 속성을 줄이려면 권장 속성을 비활성화합니다.
# ...
spec:
tenants:
mode: openshift-logging
openshift:
otlp:
disableRecommendedAttributes: true 1
- 1
- 기본 속성을 필수 속성으로 제한하는 권장 속성을 제거하려면
disableRecommendedAttributes: true
를 설정합니다.
이 옵션은 기본 속성으로 인해 성능 또는 스토리지 문제가 발생하는 경우 유용합니다. 이 설정은 기본 스트림 레이블을 제거하므로 쿼리 성능에 부정적인 영향을 미칠 수 있습니다. 쿼리에 필수 속성을 유지하려면 이 옵션을 사용자 지정 특성 구성과 페어링해야 합니다.