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 콘솔의 절차

  1. OpenShift Container Platform 웹 콘솔에 cluster-admin 권한이 있는 사용자로 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우 dedicated-admin 역할의 계정이 있어야 합니다.
  2. 네트워킹 경로로 이동합니다.
  3. 경로 페이지의 네임스페이스 메뉴에서 Service Mesh Control Plane 프로젝트(예: istio-system )를 선택합니다.

    위치 열에는 각 경로에 연결된 주소가 표시됩니다.

  4. 필요한 경우 필터를 사용하여 액세스하려는 경로가 있는 구성 요소 콘솔을 찾습니다. 콘솔을 시작하려면 경로 위치를 클릭합니다.
  5. OpenShift를 사용하여 로그인을 클릭합니다.

CLI의 프로세스

  1. cluster-admin 역할의 사용자로 OpenShift Container Platform CLI에 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우 dedicated-admin 역할의 계정이 있어야 합니다.

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. Service Mesh Control Plane 프로젝트로 전환합니다. 이 예에서 istio-system 은 Service Mesh Control Plane 프로젝트입니다. 다음 명령을 실행합니다.

    $ oc project istio-system
  3. 다양한 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
  4. HOST/PORT 열에서 액세스할 콘솔의 URL을 브라우저로 복사하여 콘솔을 엽니다.
  5. OpenShift를 사용하여 로그인을 클릭합니다.

2.17.2. Kiali 콘솔에 액세스

Kiali 콘솔에서 애플리케이션의 토폴로지, 상태 및 지표를 볼 수 있습니다. 서비스에 문제가 발생하면 Kiali 콘솔을 사용하여 서비스를 통해 데이터 흐름을 볼 수 있습니다. 추상 애플리케이션, 서비스 및 워크로드를 포함하여 다양한 수준에서 메시 구성 요소에 대한 인사이트를 볼 수 있습니다. Kiali는 네임스페이스에 대한 대화형 그래프 보기도 실시간으로 제공합니다.

Kiali 콘솔에 액세스하려면 Red Hat OpenShift Service Mesh가 설치되어 Kiali가 설치되어 구성되어 있어야 합니다.

설치 프로세스에서 Kiali 콘솔에 액세스할 경로를 생성합니다.

Kiali 콘솔의 URL을 알고 있는 경우 직접 액세스할 수 있습니다. URL을 모르는 경우 다음 지침을 사용합니다.

관리자 절차

  1. 관리자 역할을 사용하여 OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 프로젝트를 클릭합니다.
  3. 프로젝트 페이지에서 필요한 경우 필터를 사용하여 프로젝트 이름을 찾습니다.
  4. 프로젝트 이름을 클릭합니다(예: info ).
  5. 프로젝트 세부 정보 페이지의 시작자 섹션에서 Kiali 링크를 클릭합니다.
  6. OpenShift Container Platform 콘솔에 액세스하는 데 사용하는 것과 동일한 사용자 이름 및 암호를 사용하여 Kiali 콘솔에 로그인합니다.

    Kiali 콘솔에 처음 로그인하면 볼 수 있는 권한이 있는 서비스 메시의 모든 네임스페이스가 표시되는 개요 페이지가 표시됩니다.

    콘솔 설치 및 네임스페이스가 아직 메시에 추가되지 않은 경우 istio-system 이외의 표시할 데이터가 없을 수 있습니다.

개발자를 위한 절차

  1. 개발자 역할을 사용하여 OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 프로젝트를 클릭합니다.
  3. 프로젝트 세부 정보 페이지에서 필요한 경우 필터를 사용하여 프로젝트 이름을 찾습니다.
  4. 프로젝트 이름을 클릭합니다(예: info ).
  5. 프로젝트 페이지의 시작 관리자 섹션에서 Kiali 링크를 클릭합니다.
  6. 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 마이크로 서비스에 액세스하는 사용자를 시뮬레이션합니다.

프로세스

  1. Kiali 콘솔을 시작합니다.
  2. OpenShift를 사용하여 로그인을 클릭합니다.
  3. Kiali 콘솔에서 그래프 를 클릭하여 네임스페이스 그래프를 확인합니다.
  4. 네임스페이스 메뉴에서 애플리케이션 네임스페이스(예: info )를 선택합니다.
  5. 다른 그래프 레이아웃을 선택하려면 다음 중 하나 또는 둘 다를 수행합니다.

    • 그래프 상단에 있는 메뉴에서 다양한 그래프 데이터 그룹화를 선택합니다.

      • 앱 그래프
      • 서비스 그래프
      • 버전이 지정된 앱 그래프(기본값)
      • 워크로드 그래프
    • 그래프 하단의 범례에서 다른 그래프 레이아웃을 선택합니다.

      • 레이아웃 기본 dagre
      • 레이아웃 1 cose-bilkent
      • 레이아웃 2 콜라

2.17.3.2. Kiali 콘솔에서 로그 보기

Kiali 콘솔에서 워크로드의 로그를 볼 수 있습니다. 워크로드 세부 정보 페이지에는 애플리케이션 및 프록시 로그 를 모두 표시하는 통합 로그 뷰가 표시되는 로그 탭이 포함되어 있습니다. Kiali에 로그 표시를 원하는 빈도를 선택할 수 있습니다.

Kiali에 표시된 로그의 로깅 수준을 변경하려면 워크로드 또는 프록시의 로깅 구성을 변경합니다.

사전 요구 사항

  • 서비스 메시가 설치 및 구성되어 있습니다.
  • Kiali가 설치 및 구성되어 있습니다.
  • Kiali 콘솔의 주소입니다.
  • 메시에 애플리케이션 또는 Bookinfo 샘플 애플리케이션이 추가되었습니다.

프로세스

  1. Kiali 콘솔을 시작합니다.
  2. OpenShift를 사용하여 로그인을 클릭합니다.

    Kiali 개요 페이지에는 볼 수 있는 권한이 있는 메시에 추가된 네임스페이스가 표시됩니다.

  3. 워크로드 를 클릭합니다.
  4. 워크로드 페이지의 네임스페이스 메뉴에서 프로젝트를 선택합니다.
  5. 필요한 경우 필터를 사용하여 확인할 로그가 있는 워크로드를 찾습니다. 워크로드 이름을 클릭합니다. 예를 들어 ratings-v1 을 클릭합니다.
  6. 워크로드 세부 정보 페이지에서 로그 탭을 클릭하여 워크로드 로그를 확인합니다.
작은 정보

로그 항목이 표시되지 않으면 시간 범위 또는 새로 고침 간격을 조정해야 할 수 있습니다.

2.17.3.3. Kiali 콘솔에서 메트릭 보기

Kiali 콘솔에서 애플리케이션, 워크로드 및 서비스에 대한 인바운드 및 아웃바운드 메트릭을 볼 수 있습니다. 세부 정보 페이지에는 다음 탭이 포함되어 있습니다.

  • 인바운드 애플리케이션 메트릭
  • 아웃바운드 애플리케이션 지표
  • 인바운드 워크로드 메트릭
  • 아웃바운드 워크로드 메트릭
  • 인바운드 서비스 메트릭

이러한 탭에는 관련 애플리케이션, 워크로드 또는 서비스 수준에 맞게 사전 정의된 지표 대시보드가 표시됩니다. 애플리케이션 및 워크로드 세부 정보 보기에는 볼륨, 기간, 크기 또는 TCP 트래픽과 같은 요청 및 응답 메트릭이 표시됩니다. 서비스 세부 정보 보기에는 인바운드 트래픽에 대한 요청 및 응답 메트릭만 표시됩니다.

Kiali를 사용하면 차트 차원을 선택하여 차트를 사용자 지정할 수 있습니다. Kiali는 소스 또는 대상 프록시 메트릭에서 보고하는 메트릭을 제공할 수도 있습니다. 문제 해결을 위해 Kiali는 메트릭에 걸쳐 오버레이 추적을 수행할 수 있습니다.

사전 요구 사항

  • 서비스 메시가 설치 및 구성되어 있습니다.
  • Kiali가 설치 및 구성되어 있습니다.
  • Kiali 콘솔의 주소입니다.
  • (선택 사항) 분산 추적이 설치 및 구성되어 있습니다.

프로세스

  1. Kiali 콘솔을 시작합니다.
  2. OpenShift를 사용하여 로그인을 클릭합니다.

    Kiali 개요 페이지에는 볼 수 있는 권한이 있는 메시에 추가된 네임스페이스가 표시됩니다.

  3. 애플리케이션,워크로드 또는 서비스를 클릭합니다.
  4. 애플리케이션,워크로드 또는 서비스 페이지의 네임스페이스 메뉴에서 프로젝트를 선택합니다.
  5. 필요한 경우 필터를 사용하여 확인할 로그가 있는 애플리케이션, 워크로드 또는 서비스를 찾습니다. 이름을 클릭합니다.
  6. 애플리케이션 세부 정보, 워크로드 세부 정보 또는 서비스 세부 정보 페이지에서 인바운드 메트릭 또는 아웃 바운드 메트릭 탭을 클릭하여 메트릭을 확인합니다.

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 구성

ServiceMeshControlPlanespec.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 수집기로 보낼 수 있습니다.

프로세스

  1. 메시 네임스페이스에 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]

    1
    ServiceMeshMemberRoll 멤버 목록에 네임스페이스를 포함합니다.
    2
    이 예에서는 TempoStack 인스턴스가 tracing-system 네임스페이스에서 실행되고 있습니다. ServiceMeshMemberRoll 멤버 목록에 'tracing-system'과 같은 TempoStack 네임스페이스를 포함할 필요가 없습니다.
    참고
    • ServiceMeshMemberRoll 멤버 네임스페이스 중 하나에 OpenTelemetry 수집기의 단일 인스턴스를 생성합니다.
    • OpenTelemetryCollector 리소스에 sidecar.istio.io/inject: 'true' 를 추가하여 otel-collector 를 메시의 일부로 추가할 수 있습니다.
  2. otel-collector Pod 로그를 확인하고 Pod가 실행 중인지 확인합니다.

    otel-collector Pod 로그 검사 예

    $ oc logs -n info  -l app.kubernetes.io/name=otel-collector

  3. 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

  4. 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

  5. istiod 로그를 확인합니다.
  6. 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_timeouthaproxy.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에서 쿼리당 제한을 줄입니다.

  7. 애플리케이션에 요청을 보냅니다.
  8. 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 플랫폼 인스턴스가 설치 및 구성되어 있습니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 Operator 설치된 Operator를 클릭합니다.
  2. 프로젝트 메뉴를 클릭하고 Service Mesh Control Plane을 설치한 프로젝트(예: istio-system )를 선택합니다.
  3. Red Hat OpenShift Service Mesh Operator를 클릭합니다. Istio Service Mesh Control Plane 열에서 ServiceMeshControlPlane 리소스의 이름을 클릭합니다. (예: basic)
  4. 분산 추적 플랫폼(Jaeger) 인스턴스의 이름을 ServiceMeshControlPlane 에 추가합니다.

    1. YAML 탭을 클릭합니다.
    2. ServiceMeshControlPlane 리소스의 spec.addons.jaeger.name 에 분산 추적 플랫폼(Jaeger) 인스턴스의 이름을 추가합니다. 다음 예에서 distr-tracing-production 은 분산 추적 플랫폼(Jaeger) 인스턴스의 이름입니다.

      분산 추적 구성의 예

      spec:
        addons:
          jaeger:
            name: distr-tracing-production

    3. 저장을 클릭합니다.
  5. 다시 로드를 클릭하여 ServiceMeshControlPlane 리소스가 올바르게 구성되었는지 확인합니다.

2.17.4.3. 샘플링 속도 조정

추적은 서비스 메시의 서비스 간 실행 경로입니다. 추적은 하나 이상의 범위로 구성됩니다. 범위는 이름, 시작 시간 및 기간이 있는 논리적 작업 단위입니다. 샘플링 비율은 추적이 유지되는 빈도를 결정합니다.

Envoy 프록시 샘플링 속도는 기본적으로 서비스 메시의 추적의 100%를 샘플링하도록 설정됩니다. 샘플링 속도가 높으면 클러스터 리소스와 성능이 소모되지만 문제를 디버깅할 때 유용합니다. 프로덕션에 Red Hat OpenShift Service Mesh를 배포하기 전에 값을 더 적은 비율의 추적으로 설정합니다. 예를 들어 spec.tracing.sampling100 으로 설정하여 추적의 1%를 샘플링합니다.

0.01% 증분을 나타내는 스케일링된 정수로 Envoy 프록시 샘플링 비율을 구성합니다.

기본 설치에서 spec.tracing.sampling은 추적의 100%를 샘플링하는 10000으로 설정됩니다. 예를 들면 다음과 같습니다.

  • 값을 10으로 설정하면 추적의 0.1%를 샘플링합니다.
  • 값을 500으로 설정하면 추적의 5%가 샘플링됩니다.
참고

Envoy 프록시 샘플링 비율은 서비스 메시에서 사용할 수 있는 애플리케이션에 적용되며 Envoy 프록시를 사용합니다. 이 샘플링 비율은 Envoy 프록시가 수집하고 추적하는 데이터의 양을 결정합니다.

Jaeger 원격 샘플링 비율은 서비스 메시 외부에 있는 애플리케이션에 적용되며 데이터베이스와 같은 Envoy 프록시를 사용하지 않습니다. 이 샘플링 비율은 분산 추적 시스템이 수집하고 저장하는 데이터의 양을 결정합니다. 자세한 내용은 분산 추적 구성 옵션을 참조하십시오.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 Operator 설치된 Operator를 클릭합니다.
  2. 프로젝트 메뉴를 클릭하고 컨트롤 플레인을 설치한 프로젝트(예: istio-system)를 선택합니다.
  3. Red Hat OpenShift Service Mesh Operator를 클릭합니다. Istio Service Mesh Control Plane 열에서 ServiceMeshControlPlane 리소스의 이름을 클릭합니다. (예: basic)
  4. 샘플링 속도를 조정하려면 spec.tracing.sampling에 대해 다른 값을 설정합니다.

    1. YAML 탭을 클릭합니다.
    2. ServiceMeshControlPlane 리소스에서 spec.tracing.sampling의 값을 설정합니다. 다음 예에서는 100으로 설정합니다.

      Jaeger 샘플링 예

      spec:
        tracing:
          sampling: 100

    3. 저장을 클릭합니다.
  5. 다시 로드를 클릭하여 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 콘솔의 절차

  1. OpenShift Container Platform 웹 콘솔에 cluster-admin 권한이 있는 사용자로 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우 dedicated-admin 역할의 계정이 있어야 합니다.
  2. 네트워킹 경로로 이동합니다.
  3. 경로 페이지의 네임스페이스 메뉴에서 Service Mesh Control Plane 프로젝트(예: istio-system )를 선택합니다.

    위치 열에는 각 경로에 연결된 주소가 표시됩니다.

  4. 필요한 경우 필터를 사용하여 jaeger 경로를 찾습니다. 콘솔을 시작하려면 경로 위치를 클릭합니다.
  5. OpenShift를 사용하여 로그인을 클릭합니다.

Kiali 콘솔의 절차

  1. Kiali 콘솔을 시작합니다.
  2. 왼쪽 탐색 창에서 분산 추적 을 클릭합니다.
  3. OpenShift를 사용하여 로그인을 클릭합니다.

CLI의 프로세스

  1. cluster-admin 역할의 사용자로 OpenShift Container Platform CLI에 로그인합니다. Red Hat OpenShift Dedicated를 사용하는 경우 dedicated-admin 역할의 계정이 있어야 합니다.

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. 명령줄을 사용하여 경로 세부 정보를 쿼리하려면 다음 명령을 입력합니다. 이 예에서 istio-system 은 Service Mesh Control Plane 네임스페이스입니다.

    $ oc get route -n istio-system jaeger -o jsonpath='{.spec.host}'
  3. 브라우저를 시작하고 https://<JAEGER_URL>로 이동합니다. 여기서 <JAEGER_URL>은 이전 단계에서 발견한 경로입니다.
  4. OpenShift Container Platform 콘솔에 액세스하는 데 사용하는 것과 동일한 사용자 이름 및 암호를 사용하여 로그인합니다.
  5. 서비스 메시에 서비스를 추가하고 추적을 생성한 경우 필터를 사용하고 추적 찾기 버튼을 사용하여 추적 데이터를 검색할 수 있습니다.

    콘솔 설치를 검증하는 경우 표시할 추적 데이터가 없습니다.

Jaeger 구성에 대한 자세한 내용은 분산 추적 설명서 를 참조하십시오.

2.17.6. Grafana 콘솔에 액세스

Grafana는 서비스 메시 메트릭을 보고 쿼리하고 분석하는 데 사용할 수 있는 분석 툴입니다. 이 예에서 istio-system 은 Service Mesh Control Plane 네임스페이스입니다. Grafana에 액세스하려면 다음을 수행합니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 프로젝트 메뉴를 클릭하고 Service Mesh Control Plane을 설치한 프로젝트(예: istio-system )를 선택합니다.
  3. 경로를 클릭합니다.
  4. Grafana 행의 위치 열에서 링크를 클릭합니다.
  5. OpenShift Container Platform 인증 정보를 사용하여 Grafana 콘솔에 로그인합니다.

2.17.7. Prometheus 콘솔에 액세스

Prometheus는 마이크로 서비스에 대한 다차원 데이터를 수집하는 데 사용할 수 있는 모니터링 및 경고 툴입니다. 이 예에서 istio-system 은 Service Mesh Control Plane 네임스페이스입니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 프로젝트 메뉴를 클릭하고 Service Mesh Control Plane을 설치한 프로젝트(예: istio-system )를 선택합니다.
  3. 경로를 클릭합니다.
  4. Prometheus 행의 위치 열에서 링크를 클릭합니다.
  5. 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가 설치되어 있습니다.

프로세스

  1. 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
  2. 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
  3. 외부 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: {}
    1
    OSSM에서 제공하는 기본 Prometheus 인스턴스를 비활성화합니다.
    2
    Grafana를 비활성화합니다. 외부 Prometheus 인스턴스에서는 지원되지 않습니다.
  4. 모니터링 네임스페이스에서 수신 트래픽을 허용하도록 사용자 정의 네트워크 정책을 적용합니다.

    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
    사용자 정의 네트워크 정책은 모든 네임스페이스에 적용해야 합니다.
  5. 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
    1
    컨트롤 플레인 네임스페이스에서 생성된 Telemetry 오브젝트는 메시의 모든 워크로드에 적용됩니다. Telemetry를 하나의 네임스페이스에 적용하려면 대상 네임스페이스에 오브젝트를 생성합니다.
    2
    선택 사항: selector.matchLabels 사양을 설정하면 Telemetry 오브젝트가 대상 네임스페이스의 특정 워크로드에 적용됩니다.
  6. 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
    1
    Istiod 서비스를 모니터링하므로 Istio 컨트롤 플레인 네임스페이스에서 이 ServiceMonitor 오브젝트를 생성합니다. 이 예에서 네임스페이스는 istio-system 입니다.
    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 레이블 재지정을 적용하여 다른 메시와 메트릭을 구분할 수 있습니다.

  7. 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 모니터링은 ServiceMonitorPodMonitor 오브젝트의 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 레이블 재지정을 적용하여 다른 메시와 메트릭을 구분할 수 있습니다.

  8. OpenShift Container Platform 웹 콘솔을 열고 메트릭이 표시되는지 확인합니다.

2.17.9. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.