4장. 분산 추적 플랫폼(Tempo)


4.1. 분산 추적 플랫폼(Tempo) 설치

중요

Tempo Operator는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

분산 추적 플랫폼(Tempo)을 설치하려면 다음 단계를 수행해야 합니다.

  1. 지원되는 오브젝트 스토리지를 설정합니다.
  2. Tempo Operator 설치합니다.
  3. 오브젝트 스토리지 인증 정보에 대한 시크릿을 생성합니다.
  4. TempoStack 인스턴스에 대한 네임스페이스를 생성합니다.
  5. TempoStack 사용자 지정 리소스를 생성하여 TempoStack 인스턴스를 하나 이상 배포합니다.

4.1.1. 웹 콘솔에서 분산 추적 플랫폼(Tempo) 설치

웹 콘솔의 관리자 보기에서 임시(Distributed tracing platform)를 설치할 수 있습니다.

사전 요구 사항

절차

  1. Tempo Operator를 설치합니다.

    1. Operators OperatorHub 로 이동하여 Tempo Operator 를 검색합니다.
    2. OpenShift Operator for Tempo 설치 설치 Operator 보기로 이동하여 Tempo Operator 를 선택합니다.

      중요

      이렇게 하면 기본 사전 설정을 사용하여 Operator가 설치됩니다.

      • 업데이트 채널 stable
      • 설치 모드 클러스터의 모든 네임스페이스
      • 설치된 네임스페이스 openshift-tempo-operator
      • 업데이트 승인 자동
    3. 설치된 Operator 페이지의 세부 정보 탭에서 ClusterServiceVersion 세부 정보에서 설치 상태Succeeded인지 확인합니다.
  2. 후속 단계에서 생성할 TempoStack 인스턴스에 대해 선택한 프로젝트를 생성합니다. 프로젝트 프로젝트 생성.
  3. TempoStack 인스턴스에 대해 생성한 프로젝트에서 오브젝트 스토리지 버킷에 대한 시크릿을 생성합니다. 워크로드 시크릿 생성 YAML에서.

    표 4.1. 필수 시크릿 매개변수
    스토리지 공급자

    시크릿 매개변수

    Red Hat OpenShift Data Foundation

    name: tempostack-dev-odf # example

    bucket: <bucket_name> # requires an ObjectBucketClaim

    endpoint: https://s3.openshift-storage.svc

    access_key_id: <data_foundation_access_key_id>

    access_key_secret: <data_foundation_access_key_secret>

    MinIO

    MinIO Operator 를 참조하십시오.

    name: tempostack-dev-minio # example

    bucket: <minio_bucket_name> # MinIO documentation

    endpoint: <minio_bucket_endpoint>

    access_key_id: <minio_access_key_id>

    access_key_secret: <minio_access_key_secret>

    Amazon S3

    name: tempostack-dev-s3 # example

    bucket: <s3_bucket_name> # Amazon S3 documentation

    endpoint: <s3_bucket_endpoint>

    access_key_id: <s3_access_key_id>

    access_key_secret: <s3_access_key_secret>

    Microsoft Azure Blob Storage

    name: tempostack-dev-azure # example

    container: <azure_blob_storage_container_name> # Microsoft Azure documentation

    account_name: <azure_blob_storage_account_name>

    account_key: <azure_blob_storage_account_key>

    GCP(Google Cloud Platform)의 Google Cloud Storage

    name: tempostack-dev-gcs # example

    bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project

    key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication

    Amazon S3 및 MinIO 스토리지의 시크릿 예

    apiVersion: v1
    kind: Secret
    metadata:
      name: minio-test
    stringData:
      endpoint: http://minio.minio.svc:9000
      bucket: tempo
      access_key_id: tempo
      access_key_secret: <secret>
    type: Opaque

  4. TempoStack 인스턴스를 생성합니다.

    참고

    동일한 클러스터의 별도의 프로젝트에서 여러 TempoStack 인스턴스를 생성할 수 있습니다.

    1. Operator 설치된 Operator 로 이동합니다.
    2. TempoStack TempoStack YAML 보기를 선택합니다.
    3. YAML 보기에서 TempoStack 사용자 정의 리소스(CR)를 사용자 지정합니다.

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage:
          secret:
            name: <secret-name> 1
            type: <secret-provider> 2
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
      1
      시크릿 metadata에 있는 name 값입니다.
      2
      허용되는 값은 Azure Blob Storage에 azure, Google Cloud Storage용 gcs, Amazon S3, MinIO 또는 Red Hat OpenShift Data Foundation의 경우 s3 입니다.

      AWS S3 및 MinIO 스토리지에 대한 TempoStack CR의 예

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: simplest
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage:
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route

      이 예제에 배포된 스택은 Jaeger UI로 데이터를 시각화할 수 있는 HTTP 및 OpenTelemetry Protocol(OTLP)을 통해 Jaeger Thrift를 수신하도록 구성되어 있습니다.

    4. 생성을 선택합니다.

검증

  1. 프로젝트: 드롭다운 목록을 사용하여 TempoStack 인스턴스의 프로젝트를 선택합니다.
  2. Operator 설치된 Operator로 이동하여 TempoStack 인스턴스의 상태가 Condition: Ready 인지 확인합니다.
  3. 워크로드 Pod 로 이동하여 TempoStack 인스턴스의 모든 구성 요소 Pod가 실행 중인지 확인합니다.
  4. Tempo 콘솔에 액세스합니다.

    1. 네트워킹 경로Ctrl+F 로 이동하여 tempo 를 검색합니다.
    2. 위치 열에서 URL을 열어 Tempo 콘솔에 액세스합니다.
    3. 웹 콘솔의 클러스터 관리자 인증 정보를 사용하려면 OpenShift로 로그인을 선택합니다.

      참고

      Tempo 콘솔은 처음에 Tempo 콘솔 설치 후 추적 데이터를 표시하지 않습니다.

4.1.2. CLI를 사용하여 분산 추적 플랫폼(Tempo) 설치

명령줄에서 분산 추적 플랫폼(Tempo)을 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 클러스터 관리자가 활성 OpenShift CLI(oc) 세션입니다.

    작은 정보
    • OpenShift CLI(oc) 버전이 최신 버전인지 확인하고 OpenShift Container Platform 버전과 일치하는지 확인합니다.
    • oc login 을 실행합니다.

      $ oc login --username=<your_username>
  • 오브젝트 스토리지 공급자( Red Hat OpenShift Data Foundation,MinIO,Amazon S3,Azure Blob Storage,Google Cloud Storage )를 사용하고 있습니다.

절차

  1. Tempo Operator를 설치합니다.

    1. 다음 명령을 실행하여 Tempo Operator에 대한 프로젝트를 생성합니다.

      $ oc apply -f - << EOF
      apiVersion: project.openshift.io/v1
      kind: Project
      metadata:
        labels:
          kubernetes.io/metadata.name: openshift-tempo-operator
          openshift.io/cluster-monitoring: "true"
        name: openshift-tempo-operator
      EOF
    2. 다음 명령을 실행하여 operator 그룹을 생성합니다.

      $ oc apply -f - << EOF
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: openshift-tempo-operator
        namespace: openshift-tempo-operator
      spec:
        upgradeStrategy: Default
      EOF
    3. 다음 명령을 실행하여 서브스크립션을 생성합니다.

      $ oc apply -f - << EOF
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: tempo-product
        namespace: openshift-tempo-operator
      spec:
        channel: stable
        installPlanApproval: Automatic
        name: tempo-product
        source: redhat-operators
        sourceNamespace: openshift-marketplace
      EOF
    4. 다음 명령을 실행하여 Operator 상태를 확인합니다.

      $ oc get csv -n openshift-tempo-operator
  2. 후속 단계에서 생성할 TempoStack 인스턴스에 대해 선택한 프로젝트를 생성합니다.

    • 메타데이터 없이 표준 입력에서 프로젝트를 생성하려면 다음을 수행합니다.

      $ oc new-project <project_of_tempostack_instance>
    • 메타데이터를 사용하여 표준 입력에서 프로젝트를 생성하려면 다음을 수행합니다.

      $ oc apply -f - << EOF
      apiVersion: project.openshift.io/v1
      kind: Project
      metadata:
        name: <project_of_tempostack_instance>
      EOF
  3. TempoStack 인스턴스에 대해 생성한 프로젝트에서 다음 명령 중 하나를 실행하여 오브젝트 스토리지 버킷에 대한 시크릿을 생성합니다.

    • YAML 파일에서 보안을 생성하려면 다음을 수행합니다.

      $ oc apply -f <secret_file>.yaml
    • 표준 입력에서 보안을 생성하려면 다음을 수행합니다.

      $ oc apply -f - << EOF
      <object_storage_secret>
      EOF
      표 4.2. 필수 시크릿 매개변수
      스토리지 공급자

      시크릿 매개변수

      Red Hat OpenShift Data Foundation

      name: tempostack-dev-odf # example

      bucket: <bucket_name> # requires an ObjectBucketClaim

      endpoint: https://s3.openshift-storage.svc

      access_key_id: <data_foundation_access_key_id>

      access_key_secret: <data_foundation_access_key_secret>

      MinIO

      MinIO Operator 를 참조하십시오.

      name: tempostack-dev-minio # example

      bucket: <minio_bucket_name> # MinIO documentation

      endpoint: <minio_bucket_endpoint>

      access_key_id: <minio_access_key_id>

      access_key_secret: <minio_access_key_secret>

      Amazon S3

      name: tempostack-dev-s3 # example

      bucket: <s3_bucket_name> # Amazon S3 documentation

      endpoint: <s3_bucket_endpoint>

      access_key_id: <s3_access_key_id>

      access_key_secret: <s3_access_key_secret>

      Microsoft Azure Blob Storage

      name: tempostack-dev-azure # example

      container: <azure_blob_storage_container_name> # Microsoft Azure documentation

      account_name: <azure_blob_storage_account_name>

      account_key: <azure_blob_storage_account_key>

      GCP(Google Cloud Platform)의 Google Cloud Storage

      name: tempostack-dev-gcs # example

      bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project

      key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication

      Amazon S3 및 MinIO 스토리지의 시크릿 예

      apiVersion: v1
      kind: Secret
      metadata:
        name: minio-test
      stringData:
        endpoint: http://minio.minio.svc:9000
        bucket: tempo
        access_key_id: tempo
        access_key_secret: <secret>
      type: Opaque

  4. TempoStack 인스턴스에 대해 생성한 프로젝트에서 TempoStack 인스턴스를 생성합니다.

    참고

    동일한 클러스터의 별도의 프로젝트에서 여러 TempoStack 인스턴스를 생성할 수 있습니다.

    1. TempoStack CR(사용자 정의 리소스)을 사용자 정의합니다.

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage:
            secret:
                name: <secret-name> 1
                type: <secret-provider> 2
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
      1
      시크릿 metadata에 있는 name 값입니다.
      2
      허용되는 값은 Azure Blob Storage에 azure, Google Cloud Storage용 gcs, Amazon S3, MinIO 또는 Red Hat OpenShift Data Foundation의 경우 s3 입니다.

      AWS S3 및 MinIO 스토리지용 TempoStack CR

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: simplest
        namespace: project_of_tempostack_instance
      spec:
        storageSize: 1Gi
        storage:
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route

      이 예제에 배포된 스택은 Jaeger UI로 데이터를 시각화할 수 있는 HTTP 및 OpenTelemetry Protocol(OTLP)을 통해 Jaeger Thrift를 수신하도록 구성되어 있습니다.

    2. 다음 명령을 실행하여 사용자 지정된 CR을 적용합니다.

      $ oc apply -f - << EOF
      <TempoStack_custom_resource>
      EOF

검증

  1. 다음 명령을 실행하여 모든 TempoStack componentsstatusRunning 이고 conditionstype: Ready 인지 확인합니다.

    $ oc get tempostacks.tempo.grafana.com simplest -o yaml
  2. 다음 명령을 실행하여 모든 TempoStack 구성 요소 Pod가 실행 중인지 확인합니다.

    $ oc get pods
  3. Tempo 콘솔에 액세스합니다.

    1. 다음 명령을 실행하여 경로 세부 정보를 쿼리합니다.

      $ export TEMPO_URL=$(oc get route -n <control_plane_namespace> tempo -o jsonpath='{.spec.host}')
    2. 웹 브라우저에서 https://<route_from_previous_step>을 엽니다.
    3. 웹 콘솔의 클러스터 관리자 인증 정보를 사용하여 로그인합니다.

      참고

      Tempo 콘솔은 처음에 Tempo 콘솔 설치 후 추적 데이터를 표시하지 않습니다.

4.1.3. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.