로깅
목차
로깅 개요
Istio 로그 계층
로그 유형
Access Log 설정
1. MeshConfig로 전역 Access Log 활성화
기본 텍스트 포맷
JSON 포맷 (구조화된 로그)
2. Telemetry API로 세밀한 제어
전체 메시에 JSON Access Log 활성화
네임스페이스별 로그 설정
워크로드별 상세 로깅
Telemetry API로 로그 커스터마이징
커스텀 로그 제공자 (Custom Log Provider)
1. OpenTelemetry로 로그 전송
2. 파일로 로그 저장 (Sidecar 볼륨 공유)
로그 포맷 커스터마이징
CEL 표현식을 사용한 동적 필드
변수
설명
예제
로그 필터링 및 샘플링
1. 조건부 로깅
에러와 느린 요청만 로깅
특정 경로 제외
HTTP 메서드 필터링
mTLS가 아닌 트래픽만 로깅 (보안 감사)
2. 샘플링 (Sampling)
확률적 샘플링 (10% 로깅)
조건부 + 샘플링 (에러는 100%, 정상은 1%)
3. 네임스페이스별 차등 로깅
Envoy 로그 레벨 조정
동적으로 로그 레벨 변경
전체 Envoy 로그 레벨
컴포넌트별 로그 레벨
주요 Envoy 로그 컴포넌트
컴포넌트
설명
사용 사례
영구적인 로그 레벨 설정
특정 워크로드에만 디버그 로그 적용
Promtail + Loki 통합
1. Grafana Loki 설치
Loki 배포 (Simple Scalable 모드)
2. Promtail 설치 (Istio Access Log 수집)
3. LogQL 쿼리 예제
기본 쿼리
고급 필터링
집계 및 통계
Grafana 로그 대시보드
1. Loki 데이터소스 추가
2. Istio Access Log 대시보드
대시보드 JSON
3. Grafana Alert 설정
로그와 메트릭/트레이스 연동
1. 로그에서 트레이스로 점프
2. 메트릭에서 로그로 드릴다운
3. 통합 대시보드 예제
성능 최적화
1. 로그 볼륨 줄이기
조건부 로깅으로 50-90% 감소
Health check 제외로 30-50% 감소
2. Loki 성능 튜닝
3. Promtail 최적화
문제 해결
Access Log가 보이지 않을 때
JSON 파싱 실패
Promtail이 로그를 수집하지 못할 때
로그 볼륨이 너무 클 때
참고 자료
마지막 업데이트