티스토리 뷰

반응형

쿠버네티스 실습: Loki + Grafana로 로그 수집 및 모니터링 구축하기

앞선 글에서는 **Horizontal Pod Autoscaler(HPA)**를 통해 트래픽 부하에 따라 Pod 개수가 자동으로 늘어났다 줄어드는 구조를 실습했습니다.
이번 글에서는 운영 환경에서 필수적인 로그 수집 및 모니터링 시스템을 구축합니다. 여기서는 비교적 가볍고 설치가 쉬운 Loki + Grafana 스택을 사용합니다.


1) 왜 로그 모니터링이 중요한가?

  • Pod는 수시로 생성되고 사라집니다. 따라서 단순히 kubectl logs로 확인하면 금세 유실됩니다.
  • 운영 중 장애나 오류를 추적하려면 중앙 집중형 로그 관리가 필요합니다.
  • Loki는 Prometheus 스타일의 쿼리를 지원하는 경량 로그 수집기이며, Grafana와 함께 사용하면 실시간으로 로그를 조회할 수 있습니다.

2) Helm 설치 (패키지 매니저)

Helm은 쿠버네티스용 패키지 매니저입니다. Loki와 Grafana는 Helm Chart로 제공되므로 설치가 간편합니다.

brew install helm
helm version

3) Grafana + Loki 설치

3-1. Grafana repo 추가

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

3-2. Loki + Promtail 설치

Promtail은 Pod 로그를 수집해 Loki로 전달하는 에이전트입니다.

helm upgrade --install loki grafana/loki-stack \
  --set grafana.enabled=true,prometheus.enabled=true \
  --namespace monitoring --create-namespace

설치 확인:

kubectl get pods -n monitoring

예상 출력:

NAME                                      READY   STATUS    AGE
loki-0                                    1/1     Running   2m
promtail-abcde                            1/1     Running   2m
grafana-12345                             1/1     Running   2m

4) Grafana 접속

4-1. Service 확인

kubectl get svc -n monitoring

출력 예시:

NAME       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
grafana    ClusterIP   10.96.182.12    <none>        80/TCP         2m

4-2. 포트 포워딩으로 접속

kubectl port-forward svc/grafana 3000:80 -n monitoring

브라우저에서 http://localhost:3000 접속.

  • 기본 ID/PW: admin / prom-operator (또는 설치 시 지정된 값 확인).

5) Loki 데이터 소스 등록

  1. Grafana 로그인 후 Connections → Data sources → Loki 선택
  2. URL 입력: http://loki:3100
  3. 저장 후 연결 테스트

6) 로그 조회

Grafana Explore 메뉴에서 Loki를 선택 후 쿼리 입력:

{app="nestjs"}

→ NestJS Pod 로그 실시간 조회 가능

또는 Redis Pod 로그:

{app="redis"}

7) 대시보드 구성

  • 기본 제공 Loki 대시보드 가져오기
  • 특정 키워드(예: ERROR, WARN)를 필터링해 에러 로그 모니터링
  • HPA와 함께 보면 부하 → Pod 확장 → 로그 변화까지 실시간으로 확인 가능

8) 정리

  • Loki + Promtail + Grafana 설치로 중앙 집중형 로그 관리 구축
  • 포트 포워딩을 통해 Grafana에 접속하고, Loki를 데이터 소스로 연결
  • NestJS/NextJS/Redis/PostgreSQL 로그를 모두 수집해 대시보드에서 실시간 확인 가능

다음 글에서는 **애플리케이션 헬스체크 (Liveness, Readiness Probe)**를 적용하여 쿠버네티스가 서비스의 상태를 자동으로 감지하고, 불안정한 Pod를 교체하는 기능을 실습하겠습니다.


 

쿠버네티스,로그관리,Loki,Grafana,Promtail,모니터링,DevOps,애플리케이션로그,Minikube,K8s실습

반응형

 

 

 

1. Helm 설치 및 Loki-Stack 배포 방식 (권장 방식)

현재 설명하신 helm repo add 이후 바로 helm upgrade --install loki ... --set grafana.enabled=true, prometheus.enabled=true 방식도 충분히 작동하지만, 아래와 같은 방식이 더 명확하고 모범적입니다:

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm upgrade --install loki grafana/loki-stack \
  --namespace monitoring --create-namespace \
  --set grafana.enabled=true,promtail.enabled=true,prometheus.enabled=true

이 방식은 Loki, Promtail, Grafana 모두 한 번에 깔끔하게 설치되고, promtail.enabled를 명시해 로그 수집 에이전트를 확실하게 활성화할 수 있습니다. ([turn0search0], [turn0search5])


2. Grafana 초기 로그인 계정 정보

Helm 차트로 설치된 Grafana의 기본 로그인 정보는 다음과 같습니다:

  • 사용자명: admin
  • 비밀번호: prom-operator (chart 기본값)
    일부 리소스에서는 admin/admin이라 설명되지만, Loki-Stack이나 Prometheus-Operator 환경에서는 prom-operator가 기본값입니다. ([turn0search3], [turn0search5], [turn0search10])

따라서 문서 내 Grafana 접속 안내 시, 로그인 정보를 다음과 같이 정리하시면 좋을 것 같아요:

기본 아이디/비밀번호: admin / prom-operator


3. Namespace 및 리소스 네임스페이스 일치 확인

현재 monitoring 네임스페이스를 사용 중이지만, 일부 Helm 예시에서는 loki-stack 네임스페이스를 사용합니다. 예시 간 일관성을 유지하는 것이 중요해요.

  • --namespace monitoring으로 통일하거나, 아니면 모두 loki-stack으로 정리해 주세요. ([turn0search0], [turn0search8])

4. Loki 데이터 소스 등록 안내 정교화

Grafana에서 Loki 데이터 소스를 설정할 때, URL은 일반적으로 **“http://loki:3100”**이 맞습니다. 그러나 Helm 설치 시 기본 차트에서는 http://loki-stack-loki:3100/loki/api/v1/push처럼 네임이 다른 경우도 있으므로, 서비스 이름 체크 방법도 함께 안내하면 좋습니다:

kubectl get svc -n monitoring

→ Loki 서비스 이름과 포트 확인 후 URL 입력


보완 내용 요약

항목 보강 포인트

설치 명령 loki-stack chart를 --set promtail.enabled=true로 명확하게 활성화
Grafana 로그인 정보 admin / prom-operator (Helm 기본)로 정확히 안내
네임스페이스 정리 monitoring 또는 loki-stack으로 일관되게 통일
데이터 소스 URL 입력 실제 서비스 이름과 포트 확인 후 입력으로 정확도 ↑

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형