title: "Istio overview: Observability"
description: |
	대표적 Service Mesh 제품인 Istio에 대한 overview로 Kubernetes를 배경으로 설명한다.
	Istio overview: Architecture, Traffic Management에 이어 Observability feature에 대해 다룬다(이후 Istio overview: Security, Istio overview: Extensibility, Etc.로 이어진다).
cleanUrl: /sw-engineer/istio-overview-2
ogImage: "<https://anyflower.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F7570d2fc-66b1-4e23-bb3c-ff7b56842b0d%2F22eee8c6-00e9-4414-8102-9c1ddb90ec86%2FUntitled.png?table=block&id=d6de15ff-a83e-41b1-89eb-f1f99f806362&spaceId=7570d2fc-66b1-4e23-bb3c-ff7b56842b0d&width=1420&userId=&cache=v2>"
floatFirstTOC: right

Introduction

대표적 Service Mesh 제품인 Istio에 대한 overview로 Kubernetes를 배경으로 설명한다.

Istio overview: Architecture, Traffic Management 에 이어 Observability feature에 대해 다룬다(이후 Istio overview: Security, Istio overview: Extensibility, Etc. 로 이어 진다).

참조한 문서는 글 내부 및 References 에 달았다.

Summary

Observability

Observability 데이터(signal)는 일반적으로 metrics, logs, traces으로 나뉘는데, Service Mesh는 app에 대한 이들 데이터 모두를 수집하여 각 signal 별 backend로 전한다. 수집은 app과 별개의 process로 동작하는 이상, app이 노출하는 endpoint 수준에서 이루어진다.

Untitled

위 그림은 Istio component 종류 별 수집 대상 Observability signal 및 각 signal backend로의 전달 방법을 나타낸다. Metrics는 Prometheus의 수집 방법(scraping; PULL 방식) 그대로를 사용하고, traces는 Istio가 직접 trace backend로 전달하며, Log는 stdout으로 보내어 이후 Fluent-bit 등이 log backend로 보내는 것이 일반적이다.

Metrics

Metrics

Metrics는 시스템, 애플리케이션 및 인프라의 성능, 상태 및 동작을 모니터링하고 이해하기 위해 수집되고 사용되는 정량적 데이터로, Istio는 4개의 golden signal(Latency, Traffic, Errors, Saturation) 모두를 지원한다.

Metrics에 대응하는 Istio의 signal backend는 Prometheus로서, logs와 traces와는 달리 OpenTelemetry 지원이 없다. OpenTelemetry 환경에서 조차 일반적으로 metric backend이 사용됨을 감안하면 이는 큰 문제가 아니나, Traces와 Logs와의 연계 분석을 위한 Exemplars 지원이 없다는 점은 상당히 아쉬운 점이다(Metrics, Logs, Traces 간 상호연관 참고).

<aside> 💡 Istio/Envoy의 Exemplars 지원에 관하여

Prometheus뿐 아니라 Prometheus metric format에서 출발한 open 표준인 OpenMetrics 역시 Exemplars를 지원한다.

Envoy의 이에 대한 지원의 경우 아래와 같이 오래 전에 요청이 있었는데, 24.05.29 기준으로 며칠 전에야 이를 구현하겠다는 contributer가 나타난 상황이다.

https://github.com/envoyproxy/envoy/issues/22621

</aside>

아래는 이들 4개 signal 각각에 대한 Istio 표준 목록 중 대표적인 metrics이다.