ByeongHunKim / Cloudclub-istio-skyline

☁️ Cloud Club's collaborative journey exploring Istio and service mesh technologies 🚀
https://www.cloudclub.kr/
2 stars 0 forks source link

[Troubleshooting] Istio metric ( 15020 port ) 을 cattle-monitoring-system에 있는 Prometheus + Grafana에 연결 #31

Open ByeongHunKim opened 1 week ago

ByeongHunKim commented 1 week ago

Issue Description / 이슈 설명 발생한 문제에 대해 간단히 설명해주세요

클러스터 리소스 모니터링은 cattle-monitoring-system ns에서 설치된 Prometheus + Grafana stack으로 구성되어있는 상태에서 istio-system ns에 별도의 세팅 없이 data source를 연결하는 과정

Steps to Reproduce / 재현 단계 문제를 재현하기 위한 단계를 설명해주세요:

  1. istio-system에 istiod, istio-ingressgateway 파드 존재
  2. istio-system에 ingress 설정에 alb가 매핑되어있어야 하며, 모든 요청을 istio-ingressagateway svc로 라우팅 해주는 설정 필요
  3. 별도의 prometheus, grafana는 cattle-monitoring-system에 되어있어야 함

Expected Behavior / 예상 동작 정상적으로 작동했을 때 예상되는 동작을 설명해주세요

k -n cattle-monitoring-system get servicemonitors 했을 때 istio 관련된 게 없어서 리소스를 apply 하면 istio grafana dashboard를 import한 후 접속해보면 매트릭을 읽을 수 있음

Actual Behavior / 실제 동작 실제로 발생한 동작이나 오류를 설명해주세요

k -n cattle-monitoring-system get servicemonitors 했을 때 istio 관련된 게 없어서 리소스를 apply 하면 istio grafana dashboard를 import한 후 접속해보면 매트릭을 읽을 수 없음 ( no data )

Logs / 로그 관련된 로그나 오류 메시지를 첨부해주세요

k -n istio-system exec -it deploy/istio-ingressgateway -- curl localhost:15020/metrics
# result로 metric이 존재하는 것 확인
k -n cattle-monitoring-system get servicemonitors
# istio 관련된 리소스가 없음
# NAME                                      AGE
# grafana                                   92d
# grafana-kube-state-metrics                92d
# grafana-prometheus-node-exporter          92d
# grafana-rancher-monitoring-alertmanager   92d
# grafana-rancher-monitoring-operator       92d
# grafana-rancher-monitoring-prometheus     92d

Configuration / 설정 문제와 관련된 Istio 설정이나 YAML 파일을 첨부해주세요

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: istio-prometheus-metrics
  namespace: cattle-monitoring-system
  labels:
    release: grafana
spec:
  endpoints:
  - honorLabels: true
    interval: 15s
    path: /metrics
    port: metrics
    scheme: http
  namespaceSelector:
    matchNames:
    - istio-system
  selector:
    matchLabels:
      istio: ingressgateway

Attempted Solutions / 시도한 해결 방법 문제를 해결하기 위해 시도해본 방법이 있다면 설명해주세요

# 존재하는 svc 확인
k get svn -n istio-system

# 해당 서비스의 port 확인
kubectl -n istio-system get svc istio-ingressgateway -o jsonpath='{.spec.ports[*].name}'
# 결과 : status-port http2 https 로 나옴 -> 15020 포트가 없음

# 해당 서비스에 15020 port 추가
k edit svc istio-ingressgateway -n istio-system

ports:
- name: metrics
  port: 15020
  protocol: TCP
  targetPort: 15020

Impact / 영향 이 문제가 서비스나 사용자에게 미치는 영향이 있다면 설명해주세요

Additional Context / 추가 정보 문제 해결에 도움이 될 만한 추가 정보나 스크린샷이 있다면 첨부해주세요

ByeongHunKim commented 1 week ago

제대로 알아야 할 것

  1. servicemonitors 가 무엇?
  2. istio-ingressgateway svc에 15020 port 추가한 게 어떻게 동작하는 것 인지 알아야 함