Loki
로그 집계 시스템
Promtail로부터 수집된 로그를 저장하는 컴포넌트이며, Grafana에서 제공하는 오픈소스 기반의 로그 집계 시스템입니다.
Turaco에서 Loki 컴포넌트 사용 방법을 기술합니다.
투라코 ""아키텍처 설계" 메뉴로 진입 후, Loki 컴포넌트를 아래와 같이 디자이너 화면에 배치합니다.
Loki 컴포넌트는 "수집 및 분석" 카테고리에 있습니다.

① 디자이너 화면에서 "수집 및 분석" 섹션에서 Loki 컴포넌트를 드래그 & 드랍하여 추가합니다.
② 추가한 컴포넌트에 원하는 "컴포넌트 이름" 및 **"설명"**을 입력 후 "확인"을 클릭합니다.
이름과 설명을 입력 후 확인을 선택하면 디자이너 화면에 컴포넌트가 배치됩니다.
해당 컴포넌트를 클릭하면 아래와 같이 컴포넌트 프로퍼티를 설정할 수 있습니다.

① 컴포넌트에서 필수 입력하거나 선택해야 할 프로퍼티("*"로 표시된 항목)가 설정되지 않았을 경우, "Required"라는 경고 아이콘이 표시됩니다. 필수 값을 입력하거나 선택시 해당 경고 아이콘이 사라집니다.
② 컴포넌트 배치시 설정한 "이름" 및 "설명"이 표시됩니다. 변경을 원할 경우 변경이 가능합니다.
③ 컴포넌트 환경 설정 버튼을 클릭하여 컴포넌트 실행을 위한 환경 설정값을 선택합니다.
환경 구성
템포가 동작하기 위한 **"환경 설정"**과 **"수집기(Collector)"**를 위한 내용으로 구성되어 있으며, 동작을 위한 환경 설정값은 쿠버네티스 리소스인 ConfigMap으로 저장되며 Tempo 실행 시 ConfigMap에 설정된 값을 참조합니다.
프로퍼티 설정창에서 "환경 설정" 버튼을 클릭하여 컴포넌트 배포를 위한 환경을 설정합니다.
컴포넌트 설정 버튼 클릭시 아래와 같은 환경을 설정할 수 있으며 "Template" 드롭박스에서 적절한 설정값을 선택합니다.

컴포넌트 선택 화면에서는 설정 내용을 수정할 수 없습니다. 컴포넌트에 반영후 수정이 가능합니다.
또한 선택환 환경 설정 내용은 "컴포넌트 수정" 기능을 통해 변경이 가능합니다.

"환경 설정" 초기값은 Loki가 동작하기 위한 기본값으로 설정되어 있으며 필요한 경우 수정할 수 있습니다.
① Tempo 실행을 위한 기본값입니다.
설정값 중 {{ }} 안에 있는 내용은 Turaco에서 생성된 HelmChart의 Values.yaml의 내용이 적용됩니다.
수정시 적상동작 하지 않을 수 있으니 가급적 수정하지 않기를 권고합니다.
ConfigMap으로 저장되는 환경 설정 기본값은 다음과 같습니다.
(필요한 경우 수정이 가능하며 저장 후 배포가 가능합니다)
1) auth_enabled
auth_enabled가 true로 설정시, X-Scope-OrgID 헤더를 통해 인증을 활성화 할수 있습니다.
false로 설정된 경우 OrgID는 항상 'fake'로 설정됩니다.
auth_enabled: false
2) chunk_store_config
chunk_store_config 블록은 청크가 캐시되는 방법과 백업 저장소에 저장하기 전에 대기하는 시간을 구성합니다.
chunk_store_config:
max_look_back_period: 0s
3) Compactor
성능을 위해 인덱스 샤드를 압축하는 옵션을 구성합니다.
compactor:
shared_store: filesystem
working_directory: /data/loki/boltdb-shipper-compactor
4) Ingester
Ingester는 키 값 저장소에 Ingester 자신을 등록하는 방법을 구성합니다.
memberlist:
abort_if_cluster_join_fails: false
join_members:
- `{{ .Values.tempo.name }}`-gossip-ring
5) Limits_config
limits_config 블록은 Loki에서 Global 및 Tenant별 제한을 구성합니다.
limits_config:
multitenancy_enabled: false
6) Memberlist
Loki에 포함된 노드들은 노드간 통신을 위해 Gossip 프로토콜을 사용합니다.
이러한 프로토콜을 사용하는 노드들을 Gossip 구성원이라 하고 memberlist는 이러한 구성원 목록을 구성합니다.
member_list:
overrides:
per_tenant_override_config: /conf/overrides.yaml
7) Schema_config
청크 인덱스 스키마와 저장 위치를 구성합니다.
schema_config:
configs:
- from: "2020-10-24"
index:
period: 24h
prefix: index_
object_store: filesystem
schema: v11
store: boltdb-shipper
8) Server
Loki에 연결된 컴포넌트 서버에 대한 환경을 구성합니다.
server:
grpc_listen_port: 9095
http_listen_port: `<<port_number>>`
9) Server
지정된 스토리지 제공자에 대한 추가 객체 저장소를 구성합니다.
(지원되는 스토어: aws, azure, bos, filesystem, gcs, swift)
storage_config:
boltdb_shipper:
active_index_directory: /data/loki/boltdb-shipper-active
cache_location: /data/loki/boltdb-shipper-cache
cache_ttl: 24h
shared_store: filesystem
filesystem:
directory: /data/loki/chunks
10) Table_manager
Table_manager는 데이터 보존을 위한 테이블 관리자를 구성합니다.
table_manager:
retention_deletes_enabled: false
retention_period: 0s
Loki 환경 구성에 대한 상세 내용은 여기를 참고하세요.