앞서 이스티오를 구성할때, 4가지 종류의 에드온을 설치를 손쉽게 할 수 있었다.
(다음 문서 참고 : https://velog.io/@borab/Istio)
하지만 막상 세팅을 끝내고 보니, 이 Telemetry 가 유용한 것은 알지만 잘 모르는 기능들이 었기 때문에 방치만 하고 사용하지 않았다. 이번 기회에 각각 어떤 역할을 제공하는지 알아보자
이스티오를 설치 할때 예시로 제공한 에드온은 총 4가지이다.
grafana
prometheus
jaeger
kiali
일단 이해를 돕기 위해 이스티오를 세팅하고 예제를 띄워보자
이것은 이전 포스팅 https://velog.io/@borab/Istio 을 참고하면 된다.
환경 : MAC OS, Kubernetes 1.22, istio-1.12.1
명령어 요약
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.12.1
export PATH="$PATH:/Users/istio-1.12.1/bin"
istioctl x precheck
istioctl install --set profile=demo -y
kubectl create ns istio-test
kubectl label namespace istio-test istio-injection=enabled
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml -n istio-test
kubectl get all -n istio-test
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml -n istio-test
istioctl analyze -n istio-test
kubectl apply -f samples/addons
kubectl rollout status deployment/kiali -n istio-system
istioctl dashboard kiali
http://localhost:20001/kiali
istioctl dashboard grafana
http://localhost:3000
istioctl dashboard jaeger
http://localhost:16686
istioctl dashboard prometheus
http://localhost:9090
화면 세팅
Telemetry 세팅
https://prometheus.io/
https://github.com/prometheus/prometheus
https://medium.com/finda-tech/prometheus%EB%9E%80-cf52c9a8785f
version 2.26.0
오픈 소스 모니터링 및 경고 툴킷으로, Cloud Native Computing Foundation(CNCF)에 속해있기도 하다.
Job/exporters는 실제로 메트릭 정보를 수집하는 프로세스로 주기적으로 서비스 디스커버리로 부터 메트릭을 pulling 방식을 통에 가져온다. 또한 /metric 이라는 앤드포인트를 제공하여 http로 메트릭 정보를 Get 해온다
하지만 프로메테우스의 단점은 시각화 기능이 부족하다. 위에 이미지에 보는 UI를 보면 알겠지만 저것으로 한번에 알아보지 못할 것이다. 따라서 데이터 시각화 도구인 grafana 와 함께 사용하고 있다
https://github.com/grafana/grafana
https://grafana.com/docs/
Grafana는 데이터 시각화 분석 플랫폼으로 Prometheus, Elasticsearch 등 30가지 이상의 수집도구나 db이랑 연동해서 데이터를 시각화 해준다.
https://www.redhat.com/ko/topics/microservices/what-is-jaeger
https://www.jaegertracing.io/
분산 서비스간 트랜잭션을 추적하는 오픈소스 프로그램으로 마이크로서비스에서 트랜잭션을 추적하는데 사용한다.
여기서 나오는 개념이 분산추적: Distributed tracing
이다. 기존에 모놀리식 서비스 같은 경우에는 APM(Application Performance Manangement) 를 사용해서 로그를 추적하였지만, 마이크로서비스 같은 경우에는 로그가 분산되어 있고, 서비스 간 호출이 복잡하게 나타나 기존 APM 만으로는 부족하게 되었다.
분산 추적은 이와 같은 여러 개의 서비스가 분산되어 있는 마이크로서비스 환경에서 이벤트(12 factor에서는 로그를 이벤트 스트림으로 취급) 전체를 추적하고 파악하는 것을 말한다.
이런 분산 추적 서비스의 종류로는 Jeager 뿐만아니나 Zipkin, Pinpoint 등이 존재하고, 더 많은 종류를 알고 싶다면 다음 사이트(https://opentracing.io/) 를 참고하면 된다.
Jaeger 같은 경우에는 분산 추적 솔루션 중 가장 널리 알려진 오픈소스이다.
Istio 의 모니터링 오픈 소스로, 서피드 메시 포폴로지를 시각화 한다. 또한 Jaeger나 Prometheus, Grafana 연동해서 사용할 수 있다. Kiali는 kubernetes cluster API 를 사용해서 파드나, 서비스, 디플로이먼트 같은 쿠버네티스 오브젝트 정보를 가져올 수 있고, 그에 대한 시각화 기능을 제공한다.