로깅

지원 버전: Istio 1.28 마지막 업데이트: 2026년 2월 19일

Istio의 로깅 기능을 통해 서비스 메시의 모든 활동을 기록하고 분석할 수 있습니다. Access Log, Envoy 로그, 구조화된 로그를 활용하여 트래픽 분석, 디버깅, 보안 감사를 수행합니다.

목차

로깅 개요

Istio 로그 계층

spinner

로그 유형

  1. Access Log: 모든 HTTP/TCP 요청/응답 기록

  2. Envoy Proxy Log: Envoy 내부 동작 로그

  3. Istiod Log: 컨트롤 플레인 로그

  4. Application Log: 애플리케이션 자체 로그

Access Log 설정

1. MeshConfig로 전역 Access Log 활성화

기본 텍스트 포맷

적용:

JSON 포맷 (구조화된 로그)

2. Telemetry API로 세밀한 제어

Telemetry API를 사용하면 네임스페이스, 워크로드별로 로그를 제어할 수 있습니다.

전체 메시에 JSON Access Log 활성화

네임스페이스별 로그 설정

워크로드별 상세 로깅

Telemetry API로 로그 커스터마이징

커스텀 로그 제공자 (Custom Log Provider)

1. OpenTelemetry로 로그 전송

2. 파일로 로그 저장 (Sidecar 볼륨 공유)

로그 포맷 커스터마이징

CEL 표현식을 사용한 동적 필드

사용 가능한 변수:

변수
설명
예제

request.method

HTTP 메서드

GET, POST

request.path

요청 경로

/api/v1/users

request.url_path

URL 경로 (쿼리 제외)

/api/v1/users

request.headers

요청 헤더

request.headers['user-agent']

response.code

HTTP 상태 코드

200, 404, 500

response.headers

응답 헤더

response.headers['content-type']

response.flags

Envoy 응답 플래그

UH, UF, URX

duration

요청 지속 시간 (ms)

123

connection.mtls

mTLS 사용 여부

true, false

source.principal

소스 서비스 계정

spiffe://...

destination.principal

대상 서비스 계정

spiffe://...

로그 필터링 및 샘플링

1. 조건부 로깅

에러와 느린 요청만 로깅

특정 경로 제외

HTTP 메서드 필터링

mTLS가 아닌 트래픽만 로깅 (보안 감사)

2. 샘플링 (Sampling)

확률적 샘플링 (10% 로깅)

조건부 + 샘플링 (에러는 100%, 정상은 1%)

3. 네임스페이스별 차등 로깅

Envoy 로그 레벨 조정

동적으로 로그 레벨 변경

전체 Envoy 로그 레벨

컴포넌트별 로그 레벨

주요 Envoy 로그 컴포넌트

컴포넌트
설명
사용 사례

admin

Admin 인터페이스

Admin API 디버깅

aws

AWS 통합

AWS 서비스 문제

connection

TCP 연결

연결 문제 디버깅

filter

HTTP 필터

필터 체인 분석

forward_proxy

Forward 프록시

프록시 동작 추적

grpc

gRPC

gRPC 통신 문제

hc

Health check

Health check 실패

http

HTTP

HTTP 요청/응답 추적

http2

HTTP/2

HTTP/2 프로토콜 이슈

jwt

JWT 인증

JWT 토큰 검증

lua

Lua 스크립트

Lua 필터 디버깅

main

메인 로직

일반적인 Envoy 동작

router

라우팅

라우팅 결정 추적

runtime

런타임 구성

동적 구성 변경

upstream

Upstream 클러스터

Backend 연결 문제

client

HTTP 클라이언트

아웃바운드 요청

pool

연결 풀

연결 풀 관리

rbac

RBAC 필터

권한 문제 디버깅

영구적인 로그 레벨 설정

특정 워크로드에만 디버그 로그 적용

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. 로그에서 트레이스로 점프

Grafana에서 Loki 로그를 보다가 특정 요청의 trace를 바로 확인할 수 있습니다.

사용 방법:

  1. Grafana Explore에서 Loki 로그 확인

  2. 로그 항목에서 "View Trace" 링크 클릭

  3. 자동으로 Tempo로 이동하여 해당 trace 확인

2. 메트릭에서 로그로 드릴다운

3. 통합 대시보드 예제

성능 최적화

1. 로그 볼륨 줄이기

조건부 로깅으로 50-90% 감소

Health check 제외로 30-50% 감소

2. Loki 성능 튜닝

3. Promtail 최적화

문제 해결

Access Log가 보이지 않을 때

JSON 파싱 실패

Promtail이 로그를 수집하지 못할 때

로그 볼륨이 너무 클 때

참고 자료

마지막 업데이트