구조화된 메타데이터란 무엇인가
경고: 구조화된 메타데이터는 스키마 버전이 13
이상인 경우 사용되는 청크 형식 V4에 추가되었습니다. 스키마 버전에 대한 자세한 내용은 스키마 구성을 참조하십시오.
적절하고 낮은 카디널리티의 레이블을 선택하는 것은 Loki를 효과적으로 운영하고 쿼리하는 데 중요합니다. 일부 메타데이터, 특히 인프라 관련 메타데이터는 로그 라인에 포함하기 어렵고, 인덱싱된 레이블로 효과적으로 저장하기에는 카디널리티가 너무 높아 인덱스 성능을 저하시킵니다.
구조화된 메타데이터는 메타데이터를 인덱싱하거나 로그 라인 내용 자체에 포함하지 않고 로그에 첨부하는 방법입니다. 유용한 메타데이터의 예로는 쿠버네티스 파드 이름, 프로세스 ID 또는 쿼리에서 자주 사용되지만 카디널리티가 높고 쿼리 시 추출 비용이 많이 드는 기타 레이블이 있습니다.
구조화된 메타데이터는 쿼리 시 파서를 적용할 필요 없이 로그 라인에서 일반적으로 필요한 메타데이터를 쿼리하는 데에도 사용할 수 있습니다. 예를 들어, 큰 json 덩어리나 복잡한 정규식 패턴을 사용하는 잘못 작성된 쿼리는 높은 성능 비용을 수반합니다. 유용한 메타데이터의 예로는 container_ID 또는 사용자 ID가 있습니다.
구조화된 메타데이터를 사용하는 경우
다음과 같은 경우에만 구조화된 메타데이터를 사용해야 합니다.
- OpenTelemetry 형식으로 데이터를 수집하는 경우, Grafana Alloy 또는 OpenTelemetry Collector를 사용합니다. 구조화된 메타데이터는 OpenTelemetry 데이터의 기본 수집을 지원하도록 설계되었습니다.
- 레이블로 사용해서는 안 되며 로그 라인에 존재하지 않는 높은 카디널리티의 메타데이터가 있는 경우. 몇 가지 예로는
process_id
또는thread_id
또는 쿠버네티스 파드 이름이 있을 수 있습니다. - Loki 로그를 시각화하고 탐색하기 위해 로그 드릴다운을 사용하는 경우. Loki 구성에서
discover_log_levels
및allow_structured_metadata
를true
로 설정해야 합니다. - 매월 75TB 이상의 로그를 수집하고 Loki 3.3부터 시작되는 Bloom 필터(실험적)를 사용하는 대규모 고객인 경우 Bloom 필터는 이제 구조화된 메타데이터를 활용합니다.
구조화된 메타데이터 활성화 또는 비활성화
Loki config.yaml 파일에서 구조화된 메타데이터를 활성화합니다.
limits_config:
allow_structured_metadata: true
volume_enabled: true
retention_period: 672h # 28일 보존
limits_config
섹션에서 "allow_structured_metadata: false"
를 설정하거나 명령줄 인수 -validation.allow-structured-metadata=false
를 설정하여 구조화된 메타데이터를 비활성화할 수 있습니다. OTLP 데이터 수집을 지원하려면 구조화된 메타데이터가 필요합니다.
로그 라인에 구조화된 메타데이터 첨부
각 로그 라인 및 타임스탬프와 함께 푸시 페이로드의 로그 라인에 구조화된 메타데이터를 첨부하는 옵션이 있습니다. HTTP 엔드포인트를 통해 Loki에 로그를 푸시하는 방법에 대한 자세한 내용은 HTTP API 설명서를 참조하십시오.
또는 Grafana Alloy 또는 Promtail을 사용하여 로그 라인에서 구조화된 메타데이터를 추출하고 첨부할 수 있습니다. 자세한 내용은 Promtail: 구조화된 메타데이터 스테이지를 참조하십시오.
Loki 버전 1.2.0부터 구조화된 메타데이터에 대한 지원이 Logstash 출력 플러그인에 추가되었습니다. 자세한 내용은 logstash를 참조하십시오.
경고: 구조화된 메타데이터 크기는 수집 속도 제한을 적용할 때 고려됩니다. 이와 함께 로그 라인당 첨부할 수 있는 구조화된 메타데이터의 양에는 별도의 제한이 있습니다.
# 로그 라인당 구조화된 메타데이터에 허용되는 최대 크기.
# CLI 플래그: -limits.max-structured-metadata-size
[max_structured_metadata_size: <int> | 기본값 = 64KB]
# 로그 라인당 최대 구조화된 메타데이터 항목 수.
# CLI 플래그: -limits.max-structured-metadata-entries-count
[max_structured_metadata_entries_count: <int> | 기본값 = 128]
구조화된 메타데이터 쿼리
구조화된 메타데이터는 반환된 각 로그 라인에 대해 자동으로 추출되어 쿼리에 대해 반환된 레이블에 추가됩니다. 레이블 필터 표현식을 사용하여 구조화된 메타데이터의 레이블을 사용하여 로그 라인을 필터링할 수 있습니다.
예를 들어, 구조화된 메타데이터로 일부 로그 라인에 첨부된 pod
레이블이 있는 경우 다음을 사용하여 로그 라인을 필터링할 수 있습니다.
{job="example"} | pod="myservice-abc1234-56789"
물론 한 번에 여러 구조화된 메타데이터 레이블로 필터링할 수 있습니다.
{job="example"} | pod="myservice-abc1234-56789" | trace_id="0242ac120002"
구조화된 메타데이터는 결과 레이블에 자동으로 추출되므로 일부 메트릭 쿼리는 maximum of series (50000) reached for a single query
와 같은 오류를 반환할 수 있습니다. Keep 및 Drop 단계를 사용하여 필요하지 않은 레이블을 필터링할 수 있습니다. 예를 들어:
count_over_time({job="example"} | trace_id="0242ac120002" | keep job [5m])
원본: https://grafana.com/docs/loki/latest/get-started/labels/structured-metadata/ (opens in a new tab)