Grafana

Grafana

Grafana는 Istio용 대시보드를 구성하는 데 사용할 수 있는 오픈 소스 모니터링 솔루션이에요. Grafana를 사용해 Istio의 상태와 서비스 메시 내 애플리케이션의 상태를 모니터링할 수 있어요.

출처: Istio 문서

본문

구성 (Configuration)

자체 대시보드를 만들 수도 있지만, Istio는 메시와 컨트롤 플레인의 가장 중요한 메트릭 전부에 대한 사전 구성된 대시보드 세트를 제공해요.

  • 메시 대시보드(Mesh Dashboard): 메시의 모든 서비스에 대한 개요를 제공해요.
  • 서비스 대시보드(Service Dashboard): 서비스에 대한 메트릭의 상세한 분석을 제공해요.
  • 워크로드 대시보드(Workload Dashboard): 워크로드에 대한 메트릭의 상세한 분석을 제공해요.
  • 성능 대시보드(Performance Dashboard): 메시의 리소스 사용량을 모니터링해요.
  • 컨트롤 플레인 대시보드(Control Plane Dashboard): 컨트롤 플레인의 상태와 성능을 모니터링해요.
  • WASM 확장 대시보드(WASM Extension Dashboard): 메시 전역의 WebAssembly 확장 런타임과 로딩 상태에 대한 개요를 제공해요.
  • Ztunnel 대시보드(Ztunnel Dashboard): Istio ambient 모드에서 사용되는 ztunnel 컴포넌트를 모니터링해요.

Grafana를 이런 대시보드로 구성하는 방법에는 몇 가지가 있어요:

옵션 1: 빠른 시작 (Quick start)

Istio는 모든 Istio 대시보드가 이미 설치된 Grafana를 빠르게 띄울 수 있는 기본 샘플 설치를 제공해요:

$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.31/samples/addons/grafana.yaml

이 명령이 클러스터에 Grafana를 배포해줘요. 이 설치는 데모용으로만 의도된 것이고, 성능이나 보안을 위해 튜닝된 건 아니에요.

옵션 2: grafana.com에서 기존 배포로 임포트 (Import from grafana.com into an existing deployment)

Istio 대시보드를 기존 Grafana 인스턴스에 빠르게 임포트하려면 Grafana UI의 Import 버튼을 사용해 위의 대시보드 링크를 추가할 수 있어요. 대시보드를 임포트할 때는 Prometheus 데이터 소스를 선택해야 한다는 점을 기억해요.

한 번에 모든 대시보드를 임포트하는 스크립트를 사용할 수도 있어요. 예를 들어:

$ # Address of Grafana
$ GRAFANA_HOST="http://localhost:3000"
$ # Login credentials, if authentication is used
$ GRAFANA_CRED="USER:PASSWORD"
$ # The name of the Prometheus data source to use
$ GRAFANA_DATASOURCE="Prometheus"
$ # The version of Istio to deploy
$ VERSION=1.31.1
$ # Import all Istio dashboards
$ for DASHBOARD in 7639 11829 7636 7630 7645 13277 21306; do
$     REVISION="$(curl -s https://grafana.com/api/dashboards/${DASHBOARD}/revisions -s | jq ".items[] | select(.description | contains(\"${VERSION}\")) | .revision" | tail -n 1)"
$     curl -s https://grafana.com/api/dashboards/${DASHBOARD}/revisions/${REVISION}/download > /tmp/dashboard.json
$     echo "Importing $(cat /tmp/dashboard.json | jq -r '.title') (revision ${REVISION}, id ${DASHBOARD})..."
$     curl -s -k -u "$GRAFANA_CRED" -XPOST \
$         -H "Accept: application/json" \
$         -H "Content-Type: application/json" \
$         -d "{\"dashboard\":$(cat /tmp/dashboard.json),\"overwrite\":true, \
$             \"inputs\":[{\"name\":\"DS_PROMETHEUS\",\"type\":\"datasource\", \
$             \"pluginId\":\"prometheus\",\"value\":\"$GRAFANA_DATASOURCE\"}]}" \
$         $GRAFANA_HOST/api/dashboards/import
$     echo -e "\nDone\n"
$ done

대시보드의 새 리비전은 각 Istio 버전에 대해 만들어져요. 호환성을 보장하려면 배포하는 Istio 버전에 맞는 적절한 리비전을 선택하는 것을 권장해요.

옵션 3: 구현별 방법 (Implementation-specific methods)

Grafana는 다른 방법으로도 설치하고 구성할 수 있어요. Istio 대시보드를 임포트하려면 해당 설치 방법의 문서를 참고해요. 예를 들어:

  • Grafana 프로비저닝 공식 문서.
  • stable/grafana Helm 차트에 대한 대시보드 임포트.

See also

애드온 통합 재구성하기 (Reworking our Addon Integrations) — 텔레메트리 애드온 설치를 관리하는 새로운 방법.

Apache SkyWalking — Apache SkyWalking과 연동하는 방법.

디버그 엔드포인트 (Debug Endpoints) — 모니터링과 트러블슈팅을 위해 istiod 디버그 엔드포인트에 접근하기.

Jaeger — Jaeger와 연동하는 방법.

Kiali — Kiali와 연동하는 방법.

Prometheus — Prometheus와 연동하는 방법.

더 알아보기 (Learn more)