[Observability] Prometheus 연동 실습: Istio 메트릭 눈으로 직접 보기

y001·2025년 5월 3일

Istio 실전 스터디

목록 보기
24/26

이번 실습은 Istio가 수집한 메트릭 데이터를 Prometheus에서 직접 확인해보는 과정을 다룬다. Istio 공식 문서 Operations > Integrations > Prometheus 항목을 바탕으로 실습을 진행한다.


✅ 목표

Istio가 수집한 메트릭이 실제 Prometheus에 수집되는지 확인하고, 어떤 지표들을 직접 쿼리해볼 수 있는지 실습해본다.


✅ 환경 구성

  • Kubernetes: Minikube v1.35.0 (K8s v1.23.17)
  • Istio: 1.17.8 (Demo profile로 설치)
  • Prometheus: Istio demo profile에 기본 포함된 구성 사용

Istio의 demo 프로파일을 설치하면 Prometheus, Grafana, Jaeger까지 기본적으로 함께 배포되기 때문에 따로 설정할 건 없다.


✅ 실습 흐름 요약

  1. Istio demo profile 설치 (istioctl install --set profile=demo -y)
  2. httpbin / sleep 샘플 앱 배포 후 통신 확인
  3. Prometheus 포트포워딩
  4. 쿼리 날려서 메트릭 확인

✅ 실습 과정

1. Prometheus UI 접속

kubectl port-forward -n istio-system svc/prometheus 9090:9090

브라우저에서 http://localhost:9090 접속하면 Prometheus UI가 뜬다.

2. 메트릭 쿼리해 보기

예를 들어 아래 쿼리를 실행해보자:

istio_requests_total{destination_workload="httpbin", destination_workload_namespace="telemetry-test"}

🔍 쿼리 결과

  • httpbin 서비스로 들어온 요청 수를 보여주는 지표
  • version, source_workload, destination_service, response_code 등 다양한 라벨이 함께 수집됨
  • Telemetry API에서 커스텀 태그로 추가한 version="v1"도 함께 수집되어 있음

알게 된 점

  • Istio는 기본적으로 Envoy 프록시를 통해 메트릭을 수집하고 Prometheus에 전달함
  • demo 프로파일은 Prometheus와 통합이 이미 되어 있기 때문에 설치만 해도 바로 사용 가능
  • istio_requests_total, istio_tcp_sent_bytes_total 같은 기본 메트릭으로 서비스 간 요청 흐름, 오류율, 지연시간 등을 분석할 수 있음

언제 유용할까?

  • “지금 어떤 서비스가 느린가?”
  • “요청이 어디서 어디로 가장 많이 가는가?”
  • “어느 서비스에서 오류가 많이 나는가?”

이런 질문에 대한 해답을 Prometheus 쿼리로 바로 얻을 수 있다.


🧩 참고

  • 공식 문서: Prometheus Integration with Istio
  • 추천 메트릭: istio_requests_total, istio_request_duration_milliseconds, istio_tcp_sent_bytes_total, istio_response_bytes

0개의 댓글