문서 목차
ORKESTRIX설치
로그 집계 (Loki + Fluent-bit)
Fluent bit 이 각 노드의 컨테이너 로그와 시스템 로그(syslog)를 수집해, Loki (중앙 로그 저장소)로 전송하여 Grafana에서 검색·조회할 수 있게 합니다.
QUANTUM C&S
Fluent-bit이 각 노드의 컨테이너 로그와 시스템 로그(syslog)를 수집해, Loki(중앙 로그 저장소)로 전송하여 Grafana에서 검색 · 조회할 수 있게 합니다.
Fluent-bit은 동시에 여러 목적지로 로그를 보낼 수 있는 범용 수집기입니다 — 이 클러스터에서는 같은 로그를 Loki(이 문서)와 OpenSearch(별도 문서) 양쪽에 동시에 전송합니다.
설정값
inventory/qks/group_vars/all/all-k8s.yaml:
qks_loki_enabled: true
qks_loki_version: 7.3.0
qks_loki_namespace: qks-monitoring
qks_loki_storage_size: 50Gi
qks_fluent_bit_enabled: true
qks_fluent_bit_version: 0.47.10
실행
Loki를 먼저 설치한 뒤 Fluent-bit을 설치합니다(Fluent-bit이 Loki로 로그를 보내므로 순서상 자연스럽습니다):
./install.sh ubuntu plays/qks-loki.yaml
./install.sh ubuntu plays/qks-fluent-bit.yaml
설치 흐름
plays/qks-loki.yaml
└─ Helm으로 Loki 배포 (저장소 역할, 내장 PVC로 로그 보관)
plays/qks-fluent-bit.yaml
└─ Helm으로 Fluent-bit 배포 (전 노드 DaemonSet)
- 컨테이너 로그(/var/log/containers/*) + 호스트 syslog 수집
- 로그 종류별로 태그를 분류(app/access/audit/syslog 등)
- 분류된 로그를 OpenSearch와 Loki 양쪽으로 동시 전송
설치 확인
kubectl get pods -n qks-monitoring | grep loki
kubectl get pods -n qks -o wide | grep fluent
Loki 파드가 Running, Fluent-bit 파드가 전체 노드 수만큼(DaemonSet) Running이어야 합니다.
실제 동작 확인
Loki에 실제로 로그가 들어오고 있는지 라벨 조회로 확인합니다:
LOKI_IP=$(kubectl get svc -n qks-monitoring qks-loki -o jsonpath='{.spec.clusterIP}')
curl -s "http://$LOKI_IP:3100/loki/api/v1/label/log_source/values"
syslog가 포함되어 있으면 최소한 호스트 로그는 정상 수집 중입니다.
실제 애플리케이션 로그까지 확인하려면, 테스트 파드로 직접 로그를 발생시켜 조회합니다:
kubectl create namespace ns-test
kubectl run log-test --image=busybox -n ns-test --restart=Never -- sh -c "while true; do echo 'HELLO_FROM_NS_TEST_POD'; sleep 5; done"
# Fluent-bit이 새 로그 파일을 인식할 때까지 1분 정도 대기
curl -s -G "http://$LOKI_IP:3100/loki/api/v1/query" --data-urlencode 'query={log_source="project"}'
HELLO_FROM_NS_TEST_POD 메시지가 조회되면 정상 동작하는 것입니다.
같은 로그가 OpenSearch에도 동시에 들어갔는지 확인합니다(OpenSearch 설치가 선행되어 있어야 합니다):
kubectl exec -n <qks_opensearch_namespace> qks-opensearch-0 -- \
curl -s -k -u admin:<pass> "https://localhost:9200/project-log-*/_search?q=message:HELLO_FROM_NS_TEST_POD"
동일한 메시지가 조회되면 Loki · OpenSearch 양쪽 동시 전송이 모두 정상입니다. 확인 후 정리:
kubectl delete namespace ns-test