TIL/Monitoring(k8s, grafana)

[K8s, Grafana] Loki 데이터량 확인 및 유지기간 설정 방법 확인(2.6.1)

쓱쓱565 2024. 12. 10. 18:54

Loki(2.6.1) 데이터량 확인 및 유지기간 설정 방법 확인

1. 데이터량 확인 방법

  • Prometheus 에서 아래 metric을 쿼리
    • loki_ingester_chunk_stored_bytes_total
  • 백분율 등의 형태로도 쿼리 가능.
(sum(loki_ingester_chunk_stored_bytes_total)  / sum(node_filesystem_size_bytes{mountpoint="/home"}) ) * 100

1) 시각화 시안

  • 퍼센트 게이지와 disk 크기 총량
  • 시계열 그래프


  • 텍스트

2. 유지기간 설정

1) 설정 방법: Loki compactor 설정

  • compactor: index(로그들의 색인 파일)를 압축 / 삭제하는 역할.
    • 삭제 설정: retention_enabled: true.
      • default는 false.
    • 설정 파일 예시
      • 2시간마다 로그 삭제 실시
      • 30일 이상 지난 로그들 삭제
compactor:
  working_directory: /data/retention # 작업에 필요한 temp 파일들이 생성되는 장소
  compaction_interval: 10m # compaction(압축) 의 적용 주기. 만약 적용 주기보다 실제 적용이 늦어졌을 경우, 즉시 적용됨.
  retention_enabled: true # 데이터 삭제 위해 필요. 
  retention_delete_delay: 2h # delete(압축) 의 적용 주기. 만약 적용 주기보다 실제 적용이 늦어졌을 경우, 즉시 적용됨. 
  retention_delete_worker_count: 150 # chunk 를 삭제할 goRoutine worker의 갯수를 제한할 수 있음. 
  delete_request_store: filesystem # retention_enabled가 true 일 경우 필요. s3, filesystem 등. loki-config의 schema-config -> object store 에 입력한 값과 동일한 값 입력할 것. 

limits_config:
  retention_period: 744h # 모든 로그 스트림에 공통적으로 적용됨. 
  retention_stream: # 특정 로그스트림에 적용할 설정값. 
  - selector: '{namespace="dev"}' # logQL 기반으로 index들을 선택할 수 있다. 
    priority: 1 # retention 설정의 우선도. 중복 적용되는 log stream이 있을 경우 priority 통해 적용 우선순위 구분. 
    period: 24h # selector 에 의해 선택된 stream 에만 적용할 period
 # per_tenant_override_config: /etc/overrides.yaml # 추가 설정 파일을 활용해 로그 retention 룰을 override 할 수 있음. 

로키 아키텍쳐


아키텍쳐: https://grafana.com/docs/loki/latest/get-started/architecture/#loki-architecture
Compactor 설명 링크: https://grafana.com/docs/loki/latest/get-started/architecture/#loki-architecture

3. 유지기간 설정 테스트 (6/13 시행)

1) 테스트용 loki-config.yml

  • 매 10분마다 삭제(retention) 실행.
  • 240시간(10일) 이상 지난 로그 삭제
compactor:
  working_directory: /data/retention
  compaction_interval: 10m
  retention_enabled: true
  retention_delete_delay: 10m
  retention_delete_worker_count: 150
  delete_request_store: filesystem

limits_config:
  retention_period: 240h

2) delete 테스트 이전 chunk 상태

  • 10일 이상 지난 로그들(~6/3) 이 남아있음.

3) 테스트 완료 후 chunk 상태

  • 10일 이상 지난 chunk들이 삭제됨.

4. 기타

  • 지원하지 않는 옵션
    • 특정 시간대에 compactor 실행 (ex: 매일 X 시에 만료 로그 삭제)
    • 저장소 사용량이 임계치 이상일 때 compactor 실행 (ex: 로그가 30gb 이상일 때 XX 만큼 삭제)