1.15. 메트릭, 로그 및 추적


메시에 애플리케이션을 추가한 후 애플리케이션을 통해 데이터 흐름을 확인할 수 있습니다. 자체 애플리케이션이 설치되어 있지 않은 경우 Bookinfo 샘플 애플리케이션을 설치하여 Red Hat OpenShift Service Mesh에서 관찰 기능이 작동하는 방식을 확인할 수 있습니다.

1.15.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로 로그인 을 클릭합니다.

1.15.2. Kiali 콘솔에 액세스

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

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

설치 프로세스는 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로 로그인 을 클릭합니다.

1.15.3. Kiali 콘솔에서 서비스 메시 데이터 보기

Kiali Graph는 메시 트래픽의 강력한 시각화를 제공합니다. 토폴로지는 실시간 요청 트래픽을 Istio 구성 정보와 결합하여 서비스 메시의 동작에 대한 즉각적인 통찰력을 제공하므로 문제를 신속하게 파악할 수 있습니다. 여러 그래프 유형을 사용하면 높은 수준의 서비스 토폴로지, 하위 수준 워크로드 토폴로지 또는 애플리케이션 수준 토폴로지로 트래픽을 시각화할 수 있습니다.

몇 가지의 그래프를 선택할 수 있습니다.

  • 앱 그래프는 동일한 레이블이 있는 애플리케이션에 대한 집계 워크로드를 보여줍니다.
  • 서비스 그래프는 메시의 각 서비스에 대한 노드를 표시되지만 그래프에서 모든 애플리케이션과 워크로드는 제외됩니다. 높은 수준의 보기를 제공하며 정의된 서비스에 대한 모든 트래픽을 집계합니다.
  • 버전이 지정된 앱 그래프는 애플리케이션의 각 버전에 대한 노드를 보여줍니다. 모든 애플리케이션 버전이 함께 그룹화됩니다.
  • 워크로드 그래프는 서비스 메시의 각 워크로드에 대한 노드를 표시합니다. 이 그래프는 애플리케이션 및 버전 레이블을 사용할 필요가 없습니다. 애플리케이션에서 버전 레이블을 사용하지 않는 경우 이 그래프를 사용하십시오.

그래프 노드는 다양한 정보로 장식되어 가상 서비스 및 서비스 항목과 같은 다양한 경로 라우팅 옵션과 오류 삽입 및 회로 차단기와 같은 특수 구성을 가리킵니다. mTLS 문제, 대기 시간 문제, 오류 트래픽 등을 확인할 수 있습니다. 그래프는 구성 가능하며, 트래픽 애니메이션을 표시할 수 있으며 강력한 찾기 및 숨기기 기능을 제공합니다.

범례 버튼을 클릭하여 그래프에 표시되는 모양, 색상, 화살표 및 배지에 대한 정보를 봅니다.

지표 요약을 보려면 그래프에서 노드 또는 에지를 선택하여 요약 세부 정보 패널에 지표 세부 정보를 표시합니다.

1.15.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 공동 기능
      • 레이아웃 2 cola

1.15.3.2. Kiali 콘솔에서 로그 보기

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

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

사전 요구 사항

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

절차

  1. Kiali 콘솔을 시작합니다.
  2. OpenShift로 로그인 을 클릭합니다.

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

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

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

1.15.3.3. Kiali 콘솔에서 지표 보기

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

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

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

Kiali를 사용하면 차트 크기를 선택하여 차트를 사용자 지정할 수 있습니다. Kiali는 소스 또는 대상 프록시 메트릭에서 보고한 메트릭을 표시할 수도 있습니다. 또한 Kiali는 메트릭에 대한 추적 범위를 오버레이할 수 있습니다.

사전 요구 사항

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

절차

  1. Kiali 콘솔을 시작합니다.
  2. OpenShift로 로그인 을 클릭합니다.

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

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

1.15.4. 분산 추적

분산 추적은 애플리케이션에서 서비스 호출의 경로를 추적하여 애플리케이션에서 개별 서비스의 성능을 추적하는 프로세스입니다. 사용자가 애플리케이션에서 작업을 수행할 때마다 여러 서비스가 상호 작용해야 응답을 생성할 수 있는 요청이 실행됩니다. 이 요청의 경로는 분산 트랜잭션이라고 합니다.

Red Hat OpenShift Service Mesh는 Red Hat OpenShift distributed tracing 플랫폼을 사용하여 개발자가 마이크로 서비스 애플리케이션에서 호출 흐름을 볼 수 있도록 합니다.

1.15.4.1. 기존 분산 추적 인스턴스 연결

OpenShift Container Platform에 기존 Red Hat OpenShift distributed tracing Platform(Jaeger) 인스턴스가 이미 있는 경우 분산 추적 플랫폼에 해당 인스턴스를 사용하도록 ServiceMeshControlPlane 리소스를 구성할 수 있습니다.

사전 요구 사항

  • 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 리소스가 올바르게 구성되었는지 확인합니다.

1.15.4.2. 샘플링 속도 조정

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

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

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

기본 설치에서 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 리소스가 올바르게 구성되었는지 확인합니다.

1.15.5. Jaeger 콘솔에 액세스

Jaeger 콘솔에 액세스하려면 Red Hat OpenShift Service Mesh가 설치되어 있어야 합니다. Red Hat OpenShift distributed tracing Platform (Jaeger)이 설치되어 구성되어 있어야 합니다.

설치 프로세스는 Jaeger 콘솔에 액세스하기 위한 경로를 생성합니다.

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

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. 왼쪽 탐색 창에서 Distributed Tracing 을 클릭합니다.
  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 네임스페이스입니다.

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

    콘솔 설치의 유효성을 확인하는 경우 표시할 추적 데이터가 없습니다.

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

1.15.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 콘솔에 로그인합니다.

1.15.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 콘솔에 로그인합니다.

1.15.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의 Thanos에 대한 토큰을 생성합니다.

    1. 다음 명령을 실행하여 SECRET 환경 변수를 설정합니다.

      $ SECRET=`oc get secret -n openshift-user-workload-monitoring |
       grep  prometheus-user-workload-token | head -n 1 | awk '{print $1 }'`
    2. 다음 명령을 실행하여 TOKEN 환경 변수를 설정합니다.

      $ TOKEN=`oc get secret $SECRET -n openshift-user-workload-monitoring -o jsonpath='{.data.token}' | base64 -d`
    3. 다음 명령을 실행하여 Kiali의 Thanos에 대한 토큰을 생성합니다.

      $ oc create secret generic thanos-querier-web-token -n istio-system --from-literal=token=$TOKEN
  2. user-workload 모니터링을 위해 Kiali를 구성합니다.

    apiVersion: kiali.io/v1alpha1
    kind: Kiali
    metadata:
      name: kiali-user-workload-monitoring
      namespace: istio-system
    spec:
      external_services:
        istio:
          url_service_version: 'http://istiod-basic.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: info 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
    OpenShift Container Platform 모니터링은 ServiceMonitorPodMonitor 오브젝트의 namespaceSelector 사양을 무시하므로 컨트롤 플레인 네임스페이스를 포함하여 모든 메시 네임스페이스에 PodMonitor 오브젝트를 적용해야 합니다.
    2
    "basic-istio-system" 문자열은 SMCP 이름과 해당 네임스페이스의 조합이지만 클러스터의 사용자 워크로드 모니터링을 사용하는 모든 메시에 고유한 레이블을 사용할 수 있습니다. 2단계에서 구성된 Kiali 리소스의 spec.prometheus.query_scope 는 이 값과 일치해야 합니다.
    참고

    user-workload 모니터링을 사용하는 메시가 하나뿐인 경우 Kiali 리소스의 mesh_id 재지정 및 spec.prometheus.query_scope 필드 모두 선택 사항입니다(메쉬_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 는 이 값과 일치해야 합니다.
    참고

    user-workload 모니터링을 사용하는 메시가 하나뿐인 경우 Kiali 리소스의 mesh_id 재지정 및 spec.prometheus.query_scope 필드 모두 선택 사항입니다(메쉬_id 레이블이 제거된 경우 여기에 제공된 query_scope 필드를 제거해야 함).

    user-workload 모니터링을 사용하여 여러 메시가 있을 수 있는 경우 Kiali 리소스의 mesh_id 레이블 재지정과 spec.prometheus.query_scope 필드 모두 Kiali 리소스의 메트릭만 표시해야 합니다. Kiali가 배포되지 않는 경우 mesh_id 재레이블링을 계속 적용하는 것이 좋습니다. 따라서 다른 메시와 메트릭을 구분할 수 있습니다.

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

1.15.9. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.