Istio 서비스 메시를 사용한 관찰 가능성 소개: Prometheus
Istio 서비스 메시는 사이드카 프록시를 사용하여 애플리케이션 계층에서 네트워크를 추상화합니다. Istio를 사용하여 인프라 전반에 걸친 모든 통신에 보안 및 고급 네트워킹 정책을 구현할 수 있습니다.
그러나 Istio의 또 다른 중요한 기능은 관찰 가능성입니다. 아래 이미지를 참조하여 인프라의 모든 마이크로서비스의 성능과 동작을 관찰할 수 있습니다. 대기업에서 사이트 신뢰성 엔지니어(SRE)의 주요 책임 중 하나는 CPU 사용률, 메모리 사용률, 대기 시간 및 처리량과 같은 애플리케이션의 골든 지표를 모니터링하는 것입니다.
이 기사에서는 SRE가 Istio, Prometheus 및 Grafana 세 가지 오픈 소스 소프트웨어를 통합하여 얻을 수 있는 이점에 대해 논의합니다. Istio는 가장 유명한 서비스 소프트웨어이고, Prometheus는 가장 널리 사용되는 모니터링 소프트웨어이며, Grafana는 가장 유명한 시각화 도구입니다.
참고: 단계는 Istio 1.17.X에 대해 테스트되었습니다.
Istio, Prometheus, Grafana 구성 비디오 시청
비디오에서 단계를 따르고 싶다면 비디오를 시청하세요:
1 단계: Istio 애드온으로 이동하여 Prometheus 및 Grafana YAML 파일 적용
먼저 명령을 사용하여 Istio 디렉토리의 애드온 폴더로 이동합니다. 저는 1.17.1을 사용하고 있으므로 저의 경로는 istio-1.17.1/samples/addons
입니다.
아이스티오는 이미 그라파나, 프로메테우스, 제이거, 키알리 등을 구성하기 위한 몇 가지 YAML 파일을 제공합니다. 다음 명령어를 사용하여 프로메테우스를 구성할 수 있습니다.
kubectl apply -f prometheus.yaml
kubectl apply -f grafana.yaml
이러한 추가 YAML들은 기본적으로 istio-system
네임스페이스에 적용됩니다.

2단계: 새 서비스 배포 및 Istio 인그레스 게이트웨이 포트 포워딩
작동 모델을 실험하기 위해 httpbin
서비스를 Istio를 활성화한 네임스페이스에 배포할 것입니다. 서비스로의 트래픽을 받기 위해 Istio 인그레스 게이트웨이의 객체를 생성할 것입니다.
또한 Istio 인그레스 게이트웨이를 특정 포트-7777로 포트 포워딩할 것입니다.

localhost:7777
에서 다음과 같은 화면을 볼 수 있어야 합니다.

3단계: 프로메테우스와 그라파나 대시보드 열기
다음 명령어를 사용하여 프로메테우스 대시보드를 열 수 있습니다.
istioctl dashboard prometheus
istioctl dashboard grafana
그라파나와 프로메테우스는 로컬호스트에서 열립니다.

4단계: Postman에서 HTTP 요청 보내기
httpbin
서비스가 트래픽 부하가 있을 때 CPU나 메모리를 어떻게 소비하는지 살펴보기 위해 Postman 앱에서 localhost:7777
로 GET
및 POST
요청을 몇 개 생성할 것입니다.

한 번 이상 GET
또는 POST
요청을 httpbin
서비스에 여러 번 보내면 자원이 사용되며, Grafana에서 이를 확인할 수 있습니다. 하지만 처음에는 Prometheus와 Grafana에서 httpbin
서비스의 메트릭을 구성해야 합니다.
5단계: Prometheus에서 메트릭 구성
Kubernetes 리소스와 관련된 다양한 메트릭 범위를 선택할 수 있습니다. 예를 들어 API 서버, 애플리케이션, 작업 부하, Envoy 등이 있습니다. 이 구성에서는 container_memory_working_set_bytes
메트릭을 선택할 것입니다.
Prometheus 애플리케이션에서는 다음 검색어를 사용하여 메트릭을 스크랩할 네임스페이스를 선택합니다: container_memory_working_set_bytes { namespace= "istio-telemetry"}
(istio-telemetry
는 httpbin
서비스가 배포된 Istio 지원 네임스페이스의 이름입니다)
이렇게 실행하면 네임스페이스의 메모리를 얻게 되지만, 포드의 메모리 사용량을 분석하기 위해 포드별로 그룹화하여 각 포드의 메모리 사용량을 합산하여 총 메모리 소비량을 계산할 수 있습니다. 다음 쿼리를 사용하면 원하는 결과를 얻을 수 있습니다: sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)

참고: Prometheus는 메트릭 데이터를 필터링, 슬라이싱, 다듬기 등을 위한 많은 유연성을 제공합니다. 이 글의 핵심 아이디어는 Istio가 메트릭을 방출하고 Prometheus로 전송하여 수집할 수 있는 기능을 보여주는 것이었습니다.
6단계: Grafana에서 Istio 메트릭 그래프 구성
이제 Prometheus에서 쿼리 sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)
를 간단히 사용하여 시간에 따른 그래프를 그릴 수 있습니다. Grafana에서 새 대시보드를 만들고 쿼리를 메트릭 브라우저에 붙여넣으면 됩니다. Grafana는 시계열 그래프를 그릴 것입니다. 다른 운영 팀 이해관계자들과 공유하기 위해 적절한 이름, 레전드, 제목으로 그래프를 편집할 수 있습니다.

Prometheus 메트릭을 Grafana에 표시하고 사용자 정의하는 몇 가지 방법이 있습니다. 기업의 요구에 따라 모든 사용자 정의를 선택할 수 있습니다. 동영상에서 몇 가지 실험을 진행했으니 괜찮으면 확인해보세요.
결론
Istio 서비스 메시는 인프라 전반의 전반적인 관찰 가능성을 제공하는 데 매우 강력합니다. 이 기사에서는 Istio, Prometheus 및 Grafana를 사용하여 메트릭 스크래핑 및 시각화의 작은 사용 사례만 제공했습니다. Istio를 사용하여 로깅 및 추적, 실시간 트래픽 분석을 수행할 수 있으며, 이러한 주제에 대해서는 향후 블로그 게시물에서 다룰 예정입니다.
Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring