2.17. 메트릭, 로그 및 추적
메시에 애플리케이션을 추가하고 나면 애플리케이션을 통해 데이터 흐름을 확인할 수 있습니다. 자체 애플리케이션이 설치되어 있지 않은 경우 Bookinfo 샘플 애플리케이션을 설치하여 Red Hat OpenShift Service Mesh에서 관찰 기능이 작동하는 방식을 확인할 수 있습니다.
2.17.1. 콘솔 주소 검색
Red Hat OpenShift Service Mesh는 서비스 메시 데이터를 볼 수 있는 다음 콘솔을 제공합니다.
- Kiali 콘솔 - Kiali는 Red Hat OpenShift Service Mesh의 관리 콘솔입니다.
- Jaeger 콘솔 - Jaeger는 Red Hat OpenShift 분산 추적 플랫폼의 관리 콘솔입니다.
- Grafana 콘솔 - Grafana는 메시 관리자에게 Istio 데이터에 대한 고급 쿼리 및 메트릭 분석 및 대시보드를 제공합니다. 선택적으로 Grafana를 사용하여 서비스 메시 메트릭을 분석할 수 있습니다.
- Prometheus 콘솔 - Red Hat OpenShift Service Mesh는 Prometheus를 사용하여 서비스의 Telemetry 정보를 저장합니다.
Service Mesh Control Plane을 설치하면 설치된 각 구성 요소에 대한 경로가 자동으로 생성됩니다. 경로 주소가 있으면 Kiali, Jaeger, Prometheus 또는 Grafana 콘솔에 액세스하여 서비스 메시 데이터를 보고 관리할 수 있습니다.
사전 요구 사항
- 구성 요소를 활성화하고 설치해야 합니다. 예를 들어 분산 추적을 설치하지 않은 경우 Jaeger 콘솔에 액세스할 수 없습니다.
OpenShift 콘솔의 절차
-
OpenShift Container Platform 웹 콘솔에 cluster-admin 권한이 있는 사용자로 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우
dedicated-admin
역할의 계정이 있어야 합니다. -
네트워킹
경로로 이동합니다. 경로 페이지의 네임스페이스 메뉴에서 Service Mesh Control Plane 프로젝트(예:
istio-system
)를 선택합니다.위치 열에는 각 경로에 연결된 주소가 표시됩니다.
- 필요한 경우 필터를 사용하여 액세스하려는 경로가 있는 구성 요소 콘솔을 찾습니다. 콘솔을 시작하려면 경로 위치를 클릭합니다.
- OpenShift를 사용하여 로그인을 클릭합니다.
CLI의 프로세스
cluster-admin
역할의 사용자로 OpenShift Container Platform CLI에 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우dedicated-admin
역할의 계정이 있어야 합니다.$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
Service Mesh Control Plane 프로젝트로 전환합니다. 이 예에서
istio-system
은 Service Mesh Control Plane 프로젝트입니다. 다음 명령을 실행합니다.$ oc project istio-system
다양한 Red Hat OpenShift Service Mesh 콘솔의 경로를 가져오려면 다음 명령을 실행합니다.
$ oc get routes
이 명령은 Kiali, Jaeger, Prometheus, Grafana 웹 콘솔 및 서비스 메시의 기타 경로의 URL을 반환합니다. 출력은 다음과 유사합니다.
NAME HOST/PORT SERVICES PORT TERMINATION info-gateway bookinfo-gateway-yourcompany.com istio-ingressgateway http2 grafana grafana-yourcompany.com grafana <all> reencrypt/Redirect istio-ingressgateway istio-ingress-yourcompany.com istio-ingressgateway 8080 jaeger jaeger-yourcompany.com jaeger-query <all> reencrypt kiali kiali-yourcompany.com kiali 20001 reencrypt/Redirect prometheus prometheus-yourcompany.com prometheus <all> reencrypt/Redirect
-
HOST/PORT
열에서 액세스할 콘솔의 URL을 브라우저로 복사하여 콘솔을 엽니다. - OpenShift를 사용하여 로그인을 클릭합니다.
2.17.2. Kiali 콘솔에 액세스
Kiali 콘솔에서 애플리케이션의 토폴로지, 상태 및 지표를 볼 수 있습니다. 서비스에 문제가 발생하면 Kiali 콘솔을 사용하여 서비스를 통해 데이터 흐름을 볼 수 있습니다. 추상 애플리케이션, 서비스 및 워크로드를 포함하여 다양한 수준에서 메시 구성 요소에 대한 인사이트를 볼 수 있습니다. Kiali는 네임스페이스에 대한 대화형 그래프 보기도 실시간으로 제공합니다.
Kiali 콘솔에 액세스하려면 Red Hat OpenShift Service Mesh가 설치되어 Kiali가 설치되어 구성되어 있어야 합니다.
설치 프로세스에서 Kiali 콘솔에 액세스할 경로를 생성합니다.
Kiali 콘솔의 URL을 알고 있는 경우 직접 액세스할 수 있습니다. URL을 모르는 경우 다음 지침을 사용합니다.
관리자 절차
- 관리자 역할을 사용하여 OpenShift Container Platform 웹 콘솔에 로그인합니다.
-
홈
프로젝트를 클릭합니다. - 프로젝트 페이지에서 필요한 경우 필터를 사용하여 프로젝트 이름을 찾습니다.
-
프로젝트 이름을 클릭합니다(예:
info
). - 프로젝트 세부 정보 페이지의 시작자 섹션에서 Kiali 링크를 클릭합니다.
OpenShift Container Platform 콘솔에 액세스하는 데 사용하는 것과 동일한 사용자 이름 및 암호를 사용하여 Kiali 콘솔에 로그인합니다.
Kiali 콘솔에 처음 로그인하면 볼 수 있는 권한이 있는 서비스 메시의 모든 네임스페이스가 표시되는 개요 페이지가 표시됩니다.
콘솔 설치 및 네임스페이스가 아직 메시에 추가되지 않은 경우
istio-system
이외의 표시할 데이터가 없을 수 있습니다.
개발자를 위한 절차
- 개발자 역할을 사용하여 OpenShift Container Platform 웹 콘솔에 로그인합니다.
- 프로젝트를 클릭합니다.
- 프로젝트 세부 정보 페이지에서 필요한 경우 필터를 사용하여 프로젝트 이름을 찾습니다.
-
프로젝트 이름을 클릭합니다(예:
info
). - 프로젝트 페이지의 시작 관리자 섹션에서 Kiali 링크를 클릭합니다.
- OpenShift를 사용하여 로그인을 클릭합니다.
2.17.3. Kiali 콘솔에서 서비스 메시 데이터 보기
Kiali Graph는 메시 트래픽을 강력하게 시각화할 수 있습니다. 토폴로지는 실시간 요청 트래픽을 Istio 구성 정보와 결합하여 서비스 메시 동작에 대한 즉각적인 통찰력을 제공하여 문제를 신속하게 파악할 수 있습니다. 여러 그래프 유형을 사용하면 트래픽을 상위 수준 서비스 토폴로지, 하위 수준 워크로드 토폴로지 또는 애플리케이션 수준 토폴로지로 시각화할 수 있습니다.
몇 가지의 그래프를 선택할 수 있습니다.
- 앱 그래프는 동일한 레이블이 있는 애플리케이션에 대한 집계 워크로드를 보여줍니다.
- 서비스 그래프는 메시의 각 서비스에 대한 노드를 표시되지만 그래프에서 모든 애플리케이션과 워크로드는 제외됩니다. 높은 수준의 보기를 제공하며 정의된 서비스에 대한 모든 트래픽을 집계합니다.
- 버전이 지정된 앱 그래프는 애플리케이션의 각 버전에 대한 노드를 보여줍니다. 모든 애플리케이션 버전이 함께 그룹화됩니다.
- 워크로드 그래프는 서비스 메시의 각 워크로드에 대한 노드를 표시합니다. 이 그래프는 애플리케이션 및 버전 레이블을 사용할 필요가 없습니다. 애플리케이션에서 버전 레이블을 사용하지 않는 경우 이 그래프를 사용하십시오.
그래프 노드는 다양한 정보로 데코레이팅되어 가상 서비스 및 서비스 항목과 같은 다양한 경로 라우팅 옵션뿐만 아니라 fault-injection 및 회로 차단기와 같은 특수 구성을 가리킵니다. mTLS 문제, 대기 시간 문제, 오류 트래픽 등을 식별할 수 있습니다. Graph는 매우 구성 가능하며, 트래픽 애니메이션을 표시할 수 있으며 강력한 찾기 및 숨기기 기능이 있습니다.
범례 버튼을 클릭하여 그래프에 표시되는 셰이프, 색상, 화살표 및 배지에 대한 정보를 봅니다.
지표 요약을 보려면 그래프에서 노드 또는 에지를 선택하여 요약 세부 정보 패널에 지표 세부 정보를 표시합니다.
2.17.3.1. Kiali에서 그래프 레이아웃 변경
Kiali 그래프의 레이아웃은 애플리케이션 아키텍처 및 표시할 데이터에 따라 다르게 렌더링될 수 있습니다. 예를 들어 그래프 노드와 상호 작용 수는 Kiali 그래프를 렌더링하는 방법을 결정할 수 있습니다. 모든 상황에 맞게 잘 렌더링되는 단일 레이아웃을 생성할 수 없으므로 Kiali는 다양한 레이아웃을 선택할 수 있습니다.
사전 요구 사항
자체 애플리케이션이 설치되어 있지 않은 경우 Bookinfo 샘플 애플리케이션을 설치합니다. 그런 다음 다음 명령을 여러 번 입력하여 Bookinfo 애플리케이션에 대한 트래픽을 생성합니다.
$ curl "http://$GATEWAY_URL/productpage"
이 명령은 애플리케이션의
productpage
마이크로 서비스에 액세스하는 사용자를 시뮬레이션합니다.
프로세스
- Kiali 콘솔을 시작합니다.
- OpenShift를 사용하여 로그인을 클릭합니다.
- Kiali 콘솔에서 그래프 를 클릭하여 네임스페이스 그래프를 확인합니다.
-
네임스페이스 메뉴에서 애플리케이션 네임스페이스(예:
info
)를 선택합니다. 다른 그래프 레이아웃을 선택하려면 다음 중 하나 또는 둘 다를 수행합니다.
그래프 상단에 있는 메뉴에서 다양한 그래프 데이터 그룹화를 선택합니다.
- 앱 그래프
- 서비스 그래프
- 버전이 지정된 앱 그래프(기본값)
- 워크로드 그래프
그래프 하단의 범례에서 다른 그래프 레이아웃을 선택합니다.
- 레이아웃 기본 dagre
- 레이아웃 1 cose-bilkent
- 레이아웃 2 콜라
2.17.3.2. Kiali 콘솔에서 로그 보기
Kiali 콘솔에서 워크로드의 로그를 볼 수 있습니다. 워크로드 세부 정보 페이지에는 애플리케이션 및 프록시 로그 를 모두 표시하는 통합 로그 뷰가 표시되는 로그 탭이 포함되어 있습니다. Kiali에 로그 표시를 원하는 빈도를 선택할 수 있습니다.
Kiali에 표시된 로그의 로깅 수준을 변경하려면 워크로드 또는 프록시의 로깅 구성을 변경합니다.
사전 요구 사항
- 서비스 메시가 설치 및 구성되어 있습니다.
- Kiali가 설치 및 구성되어 있습니다.
- Kiali 콘솔의 주소입니다.
- 메시에 애플리케이션 또는 Bookinfo 샘플 애플리케이션이 추가되었습니다.
프로세스
- Kiali 콘솔을 시작합니다.
OpenShift를 사용하여 로그인을 클릭합니다.
Kiali 개요 페이지에는 볼 수 있는 권한이 있는 메시에 추가된 네임스페이스가 표시됩니다.
- 워크로드 를 클릭합니다.
- 워크로드 페이지의 네임스페이스 메뉴에서 프로젝트를 선택합니다.
- 필요한 경우 필터를 사용하여 확인할 로그가 있는 워크로드를 찾습니다. 워크로드 이름을 클릭합니다. 예를 들어 ratings-v1 을 클릭합니다.
- 워크로드 세부 정보 페이지에서 로그 탭을 클릭하여 워크로드 로그를 확인합니다.
로그 항목이 표시되지 않으면 시간 범위 또는 새로 고침 간격을 조정해야 할 수 있습니다.
2.17.3.3. Kiali 콘솔에서 메트릭 보기
Kiali 콘솔에서 애플리케이션, 워크로드 및 서비스에 대한 인바운드 및 아웃바운드 메트릭을 볼 수 있습니다. 세부 정보 페이지에는 다음 탭이 포함되어 있습니다.
- 인바운드 애플리케이션 메트릭
- 아웃바운드 애플리케이션 지표
- 인바운드 워크로드 메트릭
- 아웃바운드 워크로드 메트릭
- 인바운드 서비스 메트릭
이러한 탭에는 관련 애플리케이션, 워크로드 또는 서비스 수준에 맞게 사전 정의된 지표 대시보드가 표시됩니다. 애플리케이션 및 워크로드 세부 정보 보기에는 볼륨, 기간, 크기 또는 TCP 트래픽과 같은 요청 및 응답 메트릭이 표시됩니다. 서비스 세부 정보 보기에는 인바운드 트래픽에 대한 요청 및 응답 메트릭만 표시됩니다.
Kiali를 사용하면 차트 차원을 선택하여 차트를 사용자 지정할 수 있습니다. Kiali는 소스 또는 대상 프록시 메트릭에서 보고하는 메트릭을 제공할 수도 있습니다. 문제 해결을 위해 Kiali는 메트릭에 걸쳐 오버레이 추적을 수행할 수 있습니다.
사전 요구 사항
- 서비스 메시가 설치 및 구성되어 있습니다.
- Kiali가 설치 및 구성되어 있습니다.
- Kiali 콘솔의 주소입니다.
- (선택 사항) 분산 추적이 설치 및 구성되어 있습니다.
프로세스
- Kiali 콘솔을 시작합니다.
OpenShift를 사용하여 로그인을 클릭합니다.
Kiali 개요 페이지에는 볼 수 있는 권한이 있는 메시에 추가된 네임스페이스가 표시됩니다.
- 애플리케이션,워크로드 또는 서비스를 클릭합니다.
- 애플리케이션,워크로드 또는 서비스 페이지의 네임스페이스 메뉴에서 프로젝트를 선택합니다.
- 필요한 경우 필터를 사용하여 확인할 로그가 있는 애플리케이션, 워크로드 또는 서비스를 찾습니다. 이름을 클릭합니다.
- 애플리케이션 세부 정보, 워크로드 세부 정보 또는 서비스 세부 정보 페이지에서 인바운드 메트릭 또는 아웃 바운드 메트릭 탭을 클릭하여 메트릭을 확인합니다.
2.17.4. 분산 추적
분산 추적은 애플리케이션에서 서비스 호출의 경로를 추적하여 애플리케이션에서 개별 서비스의 성능을 추적하는 프로세스입니다. 사용자가 애플리케이션에서 작업을 수행할 때마다 여러 서비스가 상호 작용해야 응답을 생성할 수 있는 요청이 실행됩니다. 이 요청의 경로는 분산 트랜잭션이라고 합니다.
Red Hat OpenShift Service Mesh는 Red Hat OpenShift distributed tracing 플랫폼을 사용하여 개발자가 마이크로 서비스 애플리케이션에서 호출 흐름을 볼 수 있도록 합니다.
2.17.4.1. Red Hat OpenShift distributed tracing platform (Tempo) 및 Red Hat build of OpenTelemetry 구성
ServiceMeshControlPlane
의 spec.meshConfig.extensionProviders
사양에 이름이 지정된 요소와 opentelemetry
공급자를 추가하여 Red Hat OpenShift distributed tracing platform(Tempo)에 추적 데이터를 노출할 수 있습니다. 그런 다음 Telemetry 사용자 정의 리소스는 추적 범위를 수집하여 OpenTelemetry 수집기 끝점으로 전송하도록 Istio 프록시를 구성합니다.
메시 네임스페이스에 OpenTelemetry 인스턴스의 Red Hat 빌드를 생성하고 추적 데이터를 추적 플랫폼 백엔드 서비스에 전송하도록 구성할 수 있습니다.
사전 요구 사항
-
tracing-system
네임스페이스에서 Red Hat Tempo Operator를 사용하여 TempoStack 인스턴스를 생성했습니다. 자세한 내용은 "Red Hat OpenShift 분산 추적 플랫폼(Tempo) 설치"를 참조하십시오. -
권장 네임스페이스 또는
openshift-operators
네임스페이스에 OpenTelemetry Operator의 Red Hat 빌드를 설치했습니다. 자세한 내용은 "OpenTelemetry의 Red Hat 빌드 설치"를 참조하십시오. -
Red Hat OpenShift Service Mesh 2.5 이하를 사용하는 경우
ServiceMeshControlPlane
리소스의spec.tracing.type
매개변수를None
으로 설정하여 추적 데이터를 OpenTelemetry 수집기로 보낼 수 있습니다.
프로세스
메시 네임스페이스에 OpenTelemetry 수집기 인스턴스를 생성합니다. 이 예에서는
info
네임스페이스를 사용합니다.OpenTelemetry 수집기 구성 예
apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel namespace: info 1 spec: mode: deployment config: | receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 exporters: otlp: endpoint: "tempo-sample-distributor.tracing-system.svc.cluster.local:4317" 2 tls: insecure: true service: pipelines: traces: receivers: [otlp] processors: [] exporters: [otlp]
참고-
ServiceMeshMemberRoll
멤버 네임스페이스 중 하나에 OpenTelemetry 수집기의 단일 인스턴스를 생성합니다. -
OpenTelemetryCollector
리소스에sidecar.istio.io/inject: 'true'
를 추가하여otel-collector
를 메시의 일부로 추가할 수 있습니다.
-
otel-collector
Pod 로그를 확인하고 Pod가 실행 중인지 확인합니다.otel-collector
Pod 로그 검사 예$ oc logs -n info -l app.kubernetes.io/name=otel-collector
istio-system
네임스페이스에서 기존ServiceMeshControlPlane
CR(사용자 정의 리소스)을 생성하거나 업데이트합니다.SMCP 사용자 정의 리소스의 예
kind: ServiceMeshControlPlane apiVersion: maistra.io/v2 metadata: name: basic namespace: istio-system spec: addons: grafana: enabled: false kiali: enabled: true prometheus: enabled: true meshConfig: extensionProviders: - name: otel opentelemetry: port: 4317 service: otel-collector.info.svc.cluster.local policy: type: Istiod telemetry: type: Istiod version: v2.6
참고SMCP 2.5에서 2.6으로 업그레이드할 때
spec.tracing.type
매개변수를None
으로 설정합니다.SMCP
spec.tracing.type
매개변수 예spec: tracing: type: None
istio-system
네임스페이스에 Telemetry 리소스를 생성합니다.Telemetry 리소스 예
apiVersion: telemetry.istio.io/v1alpha1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing: - providers: - name: otel randomSamplingPercentage: 100
-
istiod
로그를 확인합니다. Kiali 리소스 사양을 구성하여 Kiali 워크로드 추적 대시보드를 활성화합니다. 대시보드를 사용하여 추적 쿼리 결과를 볼 수 있습니다.
Kiali 리소스의 예
apiVersion: kiali.io/v1alpha1 kind: Kiali # ... spec: external_services: tracing: query_timeout: 30 1 enabled: true in_cluster_url: 'http://tempo-sample-query-frontend.tracing-system.svc.cluster.local:16685' url: '[Tempo query frontend Route url]' use_grpc: true 2
- 1
- 기본
query_timeout
정수 값은 30초입니다. 값을 30초보다 크게 설정하는 경우 Kiali CR에서.spec.server.write_timeout
을 업데이트하고haproxy.router.openshift.io/timeout=50s
주석을 Kiali 경로에 추가해야 합니다..spec.server.write_timeout
및haproxy.router.openshift.io/timeout=
둘 다query_timeout
보다 커야 합니다. - 2
- 기본 HTTP 또는 gRPC 포트를 사용하지 않는 경우
in_cluster_url:
포트를 사용자 정의 포트로 교체합니다.
참고Kiali 1.73에서는 Jaeger 쿼리 API를 사용하므로 Tempo 리소스 제한에 따라 응답 시간이 길어집니다. Kiali UI에
could not fetch spans
오류 메시지가 표시되면 Tempo 구성을 확인하거나 Kiali에서 쿼리당 제한을 줄입니다.- 애플리케이션에 요청을 보냅니다.
-
istiod
Pod 로그 및otel-collector
Pod 로그를 확인합니다.
2.17.4.1.1. mTLS 암호화 서비스 메시 멤버 네임스페이스에서 OpenTelemetryCollector
구성
모든 트래픽은 Service Mesh dataPlane
mTLS 암호화를 활성화할 때 TLS 암호화입니다.
메시가 OpenTelemetryCollector
서비스와 통신할 수 있도록 하려면 OpenTelemetryCollector
서비스에 대한 DestinationRule
을 적용하여 TLS trafficPolicy
를 비활성화합니다.
DestinationRule
Tempo CR 예
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: otel-disable-tls spec: host: "otel-collector.info.svc.cluster.local" trafficPolicy: tls: mode: DISABLE
2.17.4.1.2. mTLS 암호화 서비스 메시 멤버 네임스페이스에서 Red Hat OpenShift distributed tracing Platform(Tempo) 구성
Service Mesh 멤버 네임스페이스가 아닌 네임스페이스에 TempoStack 인스턴스를 생성한 경우 이러한 추가 DestinationRule
구성이 필요하지 않습니다.
모든 트래픽은 Service Mesh dataPlane
mTLS 암호화를 활성화하고 tracing-system-mtls
와 같은 Service Mesh 멤버 네임스페이스에 TempoStack 인스턴스를 생성할 때 TLS 암호화됩니다. 이 암호화는 Tempo 분산 서비스에서 필요하지 않으며 TLS 오류를 반환합니다.
TLS 오류를 수정하려면 Tempo 및 Kiali에 DestinationRule
을 적용하여 TLS trafficPolicy
를 비활성화합니다.
DestinationRule
Tempo의 예
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: tempo namespace: tracing-system-mtls spec: host: "*.tracing-system-mtls.svc.cluster.local" trafficPolicy: tls: mode: DISABLE
DestinationRule
Kiali 예
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: kiali namespace: istio-system spec: host: kiali.istio-system.svc.cluster.local trafficPolicy: tls: mode: DISABLE
2.17.4.2. 기존 분산 추적 Jaeger 인스턴스 연결
OpenShift Container Platform에 기존 Red Hat OpenShift distributed tracing Platform(Jaeger) 인스턴스가 이미 있는 경우 분산 추적 플랫폼에 해당 인스턴스를 사용하도록 ServiceMeshControlPlane
리소스를 구성할 수 있습니다.
Red Hat OpenShift Service Mesh 2.5부터 Red Hat OpenShift distributed tracing Platform (Jaeger) 및 OpenShift Elasticsearch Operator는 더 이상 사용되지 않으며 향후 릴리스에서 제거됩니다. Red Hat은 현재 릴리스 라이프사이클 동안 이러한 기능에 대한 버그 수정 및 지원을 제공하지만 이러한 기능은 더 이상 개선 사항을 받지 않으며 제거됩니다. Red Hat OpenShift distributed tracing Platform (Jaeger) 대신 Red Hat OpenShift distributed tracing Platform (Tempo)을 대신 사용할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift distributed tracing 플랫폼 인스턴스가 설치 및 구성되어 있습니다.
프로세스
-
OpenShift Container Platform 웹 콘솔에서 Operator
설치된 Operator를 클릭합니다. - 프로젝트 메뉴를 클릭하고 Service Mesh Control Plane을 설치한 프로젝트(예: istio-system )를 선택합니다.
-
Red Hat OpenShift Service Mesh Operator를 클릭합니다. Istio Service Mesh Control Plane 열에서
ServiceMeshControlPlane
리소스의 이름을 클릭합니다. (예:basic
) 분산 추적 플랫폼(Jaeger) 인스턴스의 이름을
ServiceMeshControlPlane
에 추가합니다.- YAML 탭을 클릭합니다.
ServiceMeshControlPlane
리소스의spec.addons.jaeger.name
에 분산 추적 플랫폼(Jaeger) 인스턴스의 이름을 추가합니다. 다음 예에서distr-tracing-production
은 분산 추적 플랫폼(Jaeger) 인스턴스의 이름입니다.분산 추적 구성의 예
spec: addons: jaeger: name: distr-tracing-production
- 저장을 클릭합니다.
-
다시 로드를 클릭하여
ServiceMeshControlPlane
리소스가 올바르게 구성되었는지 확인합니다.
2.17.4.3. 샘플링 속도 조정
추적은 서비스 메시의 서비스 간 실행 경로입니다. 추적은 하나 이상의 범위로 구성됩니다. 범위는 이름, 시작 시간 및 기간이 있는 논리적 작업 단위입니다. 샘플링 비율은 추적이 유지되는 빈도를 결정합니다.
Envoy 프록시 샘플링 속도는 기본적으로 서비스 메시의 추적의 100%를 샘플링하도록 설정됩니다. 샘플링 속도가 높으면 클러스터 리소스와 성능이 소모되지만 문제를 디버깅할 때 유용합니다. 프로덕션에 Red Hat OpenShift Service Mesh를 배포하기 전에 값을 더 적은 비율의 추적으로 설정합니다. 예를 들어 spec.tracing.sampling
을 100
으로 설정하여 추적의 1%를 샘플링합니다.
0.01% 증분을 나타내는 스케일링된 정수로 Envoy 프록시 샘플링 비율을 구성합니다.
기본 설치에서 spec.tracing.sampling
은 추적의 100%를 샘플링하는 10000
으로 설정됩니다. 예를 들면 다음과 같습니다.
- 값을 10으로 설정하면 추적의 0.1%를 샘플링합니다.
- 값을 500으로 설정하면 추적의 5%가 샘플링됩니다.
Envoy 프록시 샘플링 비율은 서비스 메시에서 사용할 수 있는 애플리케이션에 적용되며 Envoy 프록시를 사용합니다. 이 샘플링 비율은 Envoy 프록시가 수집하고 추적하는 데이터의 양을 결정합니다.
Jaeger 원격 샘플링 비율은 서비스 메시 외부에 있는 애플리케이션에 적용되며 데이터베이스와 같은 Envoy 프록시를 사용하지 않습니다. 이 샘플링 비율은 분산 추적 시스템이 수집하고 저장하는 데이터의 양을 결정합니다. 자세한 내용은 분산 추적 구성 옵션을 참조하십시오.
프로세스
-
OpenShift Container Platform 웹 콘솔에서 Operator
설치된 Operator를 클릭합니다. - 프로젝트 메뉴를 클릭하고 컨트롤 플레인을 설치한 프로젝트(예: istio-system)를 선택합니다.
-
Red Hat OpenShift Service Mesh Operator를 클릭합니다. Istio Service Mesh Control Plane 열에서
ServiceMeshControlPlane
리소스의 이름을 클릭합니다. (예:basic
) 샘플링 속도를 조정하려면
spec.tracing.sampling
에 대해 다른 값을 설정합니다.- YAML 탭을 클릭합니다.
ServiceMeshControlPlane
리소스에서spec.tracing.sampling
의 값을 설정합니다. 다음 예에서는100
으로 설정합니다.Jaeger 샘플링 예
spec: tracing: sampling: 100
- 저장을 클릭합니다.
-
다시 로드를 클릭하여
ServiceMeshControlPlane
리소스가 올바르게 구성되었는지 확인합니다.
2.17.5. Jaeger 콘솔에 액세스
Jaeger 콘솔에 액세스하려면 Red Hat OpenShift Service Mesh가 설치되어 있어야 합니다. Red Hat OpenShift distributed tracing Platform (Jaeger)이 설치되어 구성되어 있어야 합니다.
설치 프로세스는 Jaeger 콘솔에 액세스하기 위한 경로를 생성합니다.
Jaeger 콘솔의 URL을 알고 있으면 직접 액세스할 수 있습니다. URL을 모르는 경우 다음 지침을 사용합니다.
Red Hat OpenShift Service Mesh 2.5부터 Red Hat OpenShift distributed tracing Platform (Jaeger) 및 OpenShift Elasticsearch Operator는 더 이상 사용되지 않으며 향후 릴리스에서 제거됩니다. Red Hat은 현재 릴리스 라이프사이클 동안 이 기능에 대한 버그 수정 및 지원을 제공하지만 이 기능은 더 이상 개선 사항을 받지 않으며 제거됩니다. Red Hat OpenShift distributed tracing Platform (Jaeger) 대신 Red Hat OpenShift distributed tracing Platform (Tempo)을 대신 사용할 수 있습니다.
OpenShift 콘솔의 절차
-
OpenShift Container Platform 웹 콘솔에 cluster-admin 권한이 있는 사용자로 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우
dedicated-admin
역할의 계정이 있어야 합니다. -
네트워킹
경로로 이동합니다. 경로 페이지의 네임스페이스 메뉴에서 Service Mesh Control Plane 프로젝트(예:
istio-system
)를 선택합니다.위치 열에는 각 경로에 연결된 주소가 표시됩니다.
-
필요한 경우 필터를 사용하여
jaeger
경로를 찾습니다. 콘솔을 시작하려면 경로 위치를 클릭합니다. - OpenShift를 사용하여 로그인을 클릭합니다.
Kiali 콘솔의 절차
- Kiali 콘솔을 시작합니다.
- 왼쪽 탐색 창에서 분산 추적 을 클릭합니다.
- OpenShift를 사용하여 로그인을 클릭합니다.
CLI의 프로세스
cluster-admin
역할의 사용자로 OpenShift Container Platform CLI에 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우dedicated-admin
역할의 계정이 있어야 합니다.$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
명령줄을 사용하여 경로 세부 정보를 쿼리하려면 다음 명령을 입력합니다. 이 예에서
istio-system
은 Service Mesh Control Plane 네임스페이스입니다.$ oc get route -n istio-system jaeger -o jsonpath='{.spec.host}'
-
브라우저를 시작하고
https://<JAEGER_URL>
로 이동합니다. 여기서<JAEGER_URL>
은 이전 단계에서 발견한 경로입니다. - OpenShift Container Platform 콘솔에 액세스하는 데 사용하는 것과 동일한 사용자 이름 및 암호를 사용하여 로그인합니다.
서비스 메시에 서비스를 추가하고 추적을 생성한 경우 필터를 사용하고 추적 찾기 버튼을 사용하여 추적 데이터를 검색할 수 있습니다.
콘솔 설치를 검증하는 경우 표시할 추적 데이터가 없습니다.
Jaeger 구성에 대한 자세한 내용은 분산 추적 설명서 를 참조하십시오.
2.17.6. Grafana 콘솔에 액세스
Grafana는 서비스 메시 메트릭을 보고 쿼리하고 분석하는 데 사용할 수 있는 분석 툴입니다. 이 예에서 istio-system
은 Service Mesh Control Plane 네임스페이스입니다. Grafana에 액세스하려면 다음을 수행합니다.
프로세스
- OpenShift Container Platform 웹 콘솔에 로그인합니다.
- 프로젝트 메뉴를 클릭하고 Service Mesh Control Plane을 설치한 프로젝트(예: istio-system )를 선택합니다.
- 경로를 클릭합니다.
- Grafana 행의 위치 열에서 링크를 클릭합니다.
- OpenShift Container Platform 인증 정보를 사용하여 Grafana 콘솔에 로그인합니다.
2.17.7. Prometheus 콘솔에 액세스
Prometheus는 마이크로 서비스에 대한 다차원 데이터를 수집하는 데 사용할 수 있는 모니터링 및 경고 툴입니다. 이 예에서 istio-system
은 Service Mesh Control Plane 네임스페이스입니다.
프로세스
- OpenShift Container Platform 웹 콘솔에 로그인합니다.
- 프로젝트 메뉴를 클릭하고 Service Mesh Control Plane을 설치한 프로젝트(예: istio-system )를 선택합니다.
- 경로를 클릭합니다.
- Prometheus 행의 위치 열에서 링크를 클릭합니다.
- OpenShift Container Platform 인증 정보를 사용하여 Prometheus 콘솔에 로그인합니다.
2.17.8. 사용자 워크로드 모니터링과 통합
기본적으로 Red Hat OpenShift Service Mesh(OSSM)는 메시에서 메트릭을 수집하기 위한 Prometheus 전용 인스턴스와 함께 SMCP(Service Mesh Control Plane)를 설치합니다. 그러나 프로덕션 시스템에는 사용자 정의 프로젝트에 대한 OpenShift Container Platform 모니터링과 같은 고급 모니터링 시스템이 필요합니다.
다음 단계에서는 서비스 메시를 사용자 워크로드 모니터링과 통합하는 방법을 보여줍니다.
사전 요구 사항
- 사용자 워크로드 모니터링이 활성화되어 있습니다.
- Red Hat OpenShift Service Mesh Operator 2.4가 설치되어 있습니다.
- Kiali Operator 1.65가 설치되어 있습니다.
프로세스
Kiali 서비스 계정에
cluster-monitoring-view
역할을 부여합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kiali-monitoring-rbac roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-monitoring-view subjects: - kind: ServiceAccount name: kiali-service-account namespace: istio-system
user-workload 모니터링을 위해 Kiali를 구성합니다.
apiVersion: kiali.io/v1alpha1 kind: Kiali metadata: name: kiali-user-workload-monitoring namespace: istio-system spec: external_services: prometheus: auth: type: bearer use_kiali_token: true query_scope: mesh_id: "basic-istio-system" thanos_proxy: enabled: true url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
Istio Operator 2.4를 사용하는 경우 이 구성을 사용하여 사용자 워크로드 모니터링을 위해 Kiali를 구성합니다.
apiVersion: kiali.io/v1alpha1 kind: Kiali metadata: name: kiali-user-workload-monitoring namespace: istio-system spec: external_services: istio: config_map_name: istio-<smcp-name> istio_sidecar_injector_config_map_name: istio-sidecar-injector-<smcp-name> istiod_deployment_name: istiod-<smcp-name> url_service_version: 'http://istiod-<smcp-name>.istio-system:15014/version' prometheus: auth: token: secret:thanos-querier-web-token:token type: bearer use_kiali_token: false query_scope: mesh_id: "basic-istio-system" thanos_proxy: enabled: true url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091 version: v1.65
외부 Prometheus에 대한 SMCP를 구성합니다.
apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic namespace: istio-system spec: addons: prometheus: enabled: false 1 grafana: enabled: false 2 kiali: name: kiali-user-workload-monitoring meshConfig: extensionProviders: - name: prometheus prometheus: {}
모니터링 네임스페이스에서 수신 트래픽을 허용하도록 사용자 정의 네트워크 정책을 적용합니다.
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: user-workload-access namespace: istio-system 1 spec: ingress: - from: - namespaceSelector: matchLabels: network.openshift.io/policy-group: monitoring podSelector: {} policyTypes: - Ingress
- 1
- 사용자 정의 네트워크 정책은 모든 네임스페이스에 적용해야 합니다.
Istio 프록시에서 트래픽 지표를 활성화하려면
Telemetry
오브젝트를 적용합니다.apiVersion: telemetry.istio.io/v1alpha1 kind: Telemetry metadata: name: enable-prometheus-metrics namespace: istio-system 1 spec: selector: 2 matchLabels: app: info metrics: - providers: - name: prometheus
ServiceMonitor
오브젝트를 적용하여 Istio 컨트롤 플레인을 모니터링합니다.apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: istiod-monitor namespace: istio-system 1 spec: targetLabels: - app selector: matchLabels: istio: pilot endpoints: - port: http-monitoring interval: 30s relabelings: - action: replace replacement: "basic-istio-system" 2 targetLabel: mesh_id
참고사용자 작업 부하 모니터링을 사용하는 메시가 하나만 있는 경우 Kiali 리소스의
mesh_id
레이블 재지정 및spec.prometheus.query_scope
필드는 모두 선택 사항입니다(그러나mesh_id
레이블이 제거된 경우 여기에 제공된query_scope
필드를 제거해야 합니다).클러스터의 여러 메시 인스턴스가 user-workload 모니터링을 사용할 수 있는 경우 Kiali 리소스의
mesh_id
레이블 재지정과spec.prometheus.query_scope
필드가 모두 필요합니다. 이렇게 하면 Kiali가 연결된 메시의 지표만 볼 수 있습니다.Kiali를 배포하지 않는 경우
mesh_id
레이블 재지정을 적용하여 다른 메시와 메트릭을 구분할 수 있습니다.PodMonitor
오브젝트를 적용하여 Istio 프록시에서 지표를 수집합니다.apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: istio-proxies-monitor namespace: istio-system 1 spec: selector: matchExpressions: - key: istio-prometheus-ignore operator: DoesNotExist podMetricsEndpoints: - path: /stats/prometheus interval: 30s relabelings: - action: keep sourceLabels: [__meta_kubernetes_pod_container_name] regex: "istio-proxy" - action: keep sourceLabels: [__meta_kubernetes_pod_annotationpresent_prometheus_io_scrape] - action: replace regex: (\d+);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}) replacement: '[$2]:$1' sourceLabels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_ip] targetLabel: __address__ - action: replace regex: (\d+);((([0-9]+?)(\.|$)){4}) replacement: $2:$1 sourceLabels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_ip] targetLabel: __address__ - action: labeldrop regex: "__meta_kubernetes_pod_label_(.+)" - sourceLabels: [__meta_kubernetes_namespace] action: replace targetLabel: namespace - sourceLabels: [__meta_kubernetes_pod_name] action: replace targetLabel: pod_name - action: replace replacement: "basic-istio-system" 2 targetLabel: mesh_id
- 1
- OpenShift Container Platform 모니터링은
ServiceMonitor
및PodMonitor
오브젝트의namespaceSelector
사양을 무시하므로 컨트롤 플레인 네임스페이스를 포함하여 모든 메시 네임스페이스에PodMonitor
오브젝트를 적용해야 합니다. - 2
"basic-istio-system"
문자열은 SMCP 이름과 해당 네임스페이스의 조합이지만 클러스터의 사용자 워크로드 모니터링을 사용하는 모든 메시에 고유한 레이블을 사용할 수 있습니다. 2단계에서 구성된 Kiali 리소스의spec.prometheus.query_scope
는 이 값과 일치해야 합니다.
참고사용자 작업 부하 모니터링을 사용하는 메시가 하나만 있는 경우 Kiali 리소스의
mesh_id
레이블 재지정 및spec.prometheus.query_scope
필드는 모두 선택 사항입니다(그러나mesh_id
레이블이 제거된 경우 여기에 제공된query_scope
필드를 제거해야 합니다).클러스터의 여러 메시 인스턴스가 user-workload 모니터링을 사용할 수 있는 경우 Kiali 리소스의
mesh_id
레이블 재지정과spec.prometheus.query_scope
필드가 모두 필요합니다. 이렇게 하면 Kiali가 연결된 메시의 지표만 볼 수 있습니다.Kiali를 배포하지 않는 경우
mesh_id
레이블 재지정을 적용하여 다른 메시와 메트릭을 구분할 수 있습니다.- OpenShift Container Platform 웹 콘솔을 열고 메트릭이 표시되는지 확인합니다.