1.7. Loki의 OTLP 데이터 수집
Logging과 함께OTLP(OpenTelemetry Protocol)를 사용하여 API 끝점을 사용할 수 있습니다. OTLP는 Loki를 위해 특별히 설계되지 않은 표준화된 형식이므로 OTLP는 OpenTelemetry의 데이터 형식을 Loki의 데이터 모델에 매핑하기 위해 추가 Loki 구성이 필요합니다. OTLP에는 스트림 레이블 또는 구조화된 메타데이터 와 같은 개념이 없습니다. 대신 OTLP는 다음 세 가지 범주로 그룹화된 속성으로 로그 항목에 대한 메타데이터를 제공합니다.
- 리소스
- 범위
- log
필요에 따라 여러 항목에 대해 동시에 또는 개별적으로 메타데이터를 설정할 수 있습니다.
1.7.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
에서 구조화된 메타데이터를 저장할 수 있습니다.
1.7.2. 속성 매핑
Loki Operator를 openshift-logging
모드로 설정하면 Loki Operator가 기본 속성 매핑 세트를 자동으로 적용합니다. 이러한 매핑은 특정 OTLP 속성을 스트림 레이블 및 Loki의 구조화된 메타데이터와 정렬합니다.
일반적인 설정의 경우 이러한 기본 매핑만으로도 충분합니다. 그러나 다음과 같은 경우 속성 매핑을 사용자 지정해야 할 수 있습니다.
- 사용자 지정 수집기 사용: 설정에 저장하지 않으려는 추가 속성을 생성하는 사용자 지정 수집기가 포함된 경우 매핑을 사용자 지정하여 Loki에서 해당 속성을 삭제하도록 하는 것이 좋습니다.
- 특성 세부 정보 수준 조정: 기본 특성 세트가 필요 이상으로 자세히 설명하는 경우 필수 속성으로만 줄일 수 있습니다. 이로 인해 과도한 데이터 스토리지를 방지하고 로깅 프로세스를 간소화할 수 있습니다.
1.7.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
설정을 통해 관리됩니다. 다음 예제 LokiStack
구성을 참조하십시오.
# ... spec: limits: global: otlp: {} 1 tenants: application: 2 otlp: {}
특성을 스트림 레이블에 매핑하는 데 글로벌 및 테넌트별 OTLP 구성을 모두 사용할 수 있습니다.
스트림 레이블은 LokiStack
리소스 구조가 반영하는 리소스 수준 속성에서만 파생됩니다. 다음 LokiStack
예제 구성을 참조하십시오.
spec: limits: global: otlp: streamLabels: resourceAttributes: - name: "k8s.namespace.name" - name: "k8s.pod.name" - name: "k8s.container.name"
로그 항목에서 리소스, 범위 또는 로그 유형의 특성을 삭제할 수 있습니다.
# ... spec: limits: global: otlp: streamLabels: # ... drop: resourceAttributes: - name: "process.command_line" - name: "k8s\\.pod\\.labels\\..+" regex: true scopeAttributes: - name: "service.name" logAttributes: - name: "http.route"
regex: true
를 설정하여 정규식을 사용하여 유사한 이름으로 속성에 대한 구성을 적용할 수 있습니다.
데이터 볼륨이 증가할 수 있으므로 스트림 레이블에는 정규식을 사용하지 마십시오.
스트림 레이블로 명시적으로 설정되지 않거나 항목에서 삭제된 속성은 기본적으로 구조화된 메타데이터로 저장됩니다.
1.7.2.2. OpenShift 기본값 사용자 정의
openshift-logging
모드에서는 특정 속성이 필요하며 OpenShift 함수에서 역할로 인해 구성에서 제거할 수 없습니다. 성능에 영향을 미치는 경우 권장되는 기타 속성은 삭제될 수 있습니다. 특성에 대한 자세한 내용은 OpenTelemetry 데이터 모델 특성을 참조하십시오.
사용자 정의 속성 없이 openshift-logging
모드를 사용하는 경우 OpenShift 툴과 즉시 호환성을 얻을 수 있습니다. 스트림 레이블 또는 일부 속성을 삭제해야 하는 경우 사용자 지정 구성을 사용합니다. 사용자 지정 구성은 기본 구성과 병합할 수 있습니다.
1.7.2.3. 권장 속성 제거
openshift-logging
모드에서 기본 속성을 줄이려면 권장 속성을 비활성화합니다.
# ...
spec:
tenants:
mode: openshift-logging
openshift:
otlp:
disableRecommendedAttributes: true 1
- 1
- 기본 속성을 필수 속성 또는 스트림 레이블로 제한하는 권장 속성을 제거하려면
disableRecommendedAttributes: true
를 설정합니다.참고이 설정은 기본 스트림 레이블을 제거하므로 쿼리 성능에 부정적인 영향을 미칠 수 있습니다. 쿼리에 필수 속성을 유지하려면 이 옵션을 사용자 지정 특성 구성과 페어링해야 합니다.
1.7.3. 추가 리소스
- Loki 레이블 (Grafana 문서)
- 구조화된 메타데이터 (Grafana 문서)
- OpenTelemetry 데이터 모델
- OpenTelemetry 속성 (OpenTelemetry 문서)