可観測性


Red Hat OpenShift Service Mesh 3.0.0tp1

可観測性および Service Mesh

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、Red Hat OpenShift Observability と OpenShift Service Mesh の統合の概要を説明します。

第1章 可観測性および Service Mesh

Red Hat OpenShift Observability は、さまざまなシステムメトリクス、ログ、イベントのリアルタイムの可視性、監視、分析を提供し、問題がシステムやアプリケーションに影響を与える前に、問題を迅速に診断してトラブルシューティングできるようにします。

Red Hat OpenShift Observability は、オープンソースの可観測性ツールとテクノロジーを接続して、統合された可観測性ソリューションを作成します。Red Hat OpenShift Observability のコンポーネントは連携して、データの収集、保存、配信、分析、視覚化を支援します。

Red Hat OpenShift Service Mesh は、次の Red Hat OpenShift Observability コンポーネントと統合されます。

  • OpenShift Monitoring
  • Red Hat OpenShift 分散トレースプラットフォーム

OpenShift Service Mesh は以下とも統合されます。

  • Red Hat が提供する Kiali は、サービスメッシュを視覚化および管理するための強力なコンソールです。
  • OpenShift Service Mesh Console (OSSMC) プラグインは、Kiali コンソール機能を OpenShift コンソールにシームレスに統合する OpenShift Container Platform コンソールプラグインです。

第2章 メトリクスと Service Mesh

2.1. メトリクスの使用

モニタリングスタックコンポーネントは、すべての OpenShift Container Platform インストールにデフォルトでデプロイされ、Cluster Monitoring Operator (CMO) により管理されます。これらのコンポーネントには、Prometheus、Alertmanager、Thanos Querier などが含まれます。CMO は、プラットフォーム Prometheus インスタンスから Red Hat にデータのサブセットを送信してクラスターの Remote Health Monitoring を容易にする Telemeter クライアントも導入します。

アプリケーションをメッシュに追加すると、CPU とメモリーの使用状況、ネットワーク接続、その他のリソースの使用状況に関するメトリクスとカスタマイズされたアラートを使用して、OpenShift Container Platform で実行しているアプリケーションのクラスター内の健全性とパフォーマンスを監視できます。

2.1.1. Service Mesh を使用した OpenShift モニタリングの設定

Red Hat OpenShift Service Mesh をユーザーワークロード監視と統合できます。

前提条件

手順

  1. servicemonitor.yml という名前の YAML ファイルを作成して、Istio コントロールプレーンを監視します。

    ServiceMonitor オブジェクトの例

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: istiod-monitor
      namespace: istio-system
    spec:
      targetLabels:
      - app
      selector:
        matchLabels:
          istio: pilot
      endpoints:
      - port: http-monitoring
        interval: 30s

  2. 以下のコマンドを実行して、YAML ファイルを適用します。

    $ oc apply -f servicemonitor.yml
  3. podmonitor.yml という名前の YAML ファイルを作成し、Istio プロキシーからメトリクスを収集します。

    PodMonitor オブジェクトの例

    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

    1
    OpenShift Container Platform モニタリングは ServiceMonitor オブジェクトと PodMonitor オブジェクトの namespaceSelector 仕様を無視するため、コントロールプレーンの namespace を含むすべてのメッシュ namespace に PodMonitor オブジェクトを適用する必要があります。
  4. 以下のコマンドを実行して、YAML ファイルを適用します。

    $ oc apply -f podmonitor.yml
  5. OpenShift コンソールで ObserveMetrics に移動し、クエリー istio_requests_total を実行します。

    注記

    Metrics の実装では、クエリーが結果を返すまでに数分かかる場合があります。

第3章 分散トレースと Service Mesh

3.1. サービスメッシュを使用した Red Hat OpenShift 分散トレーシングプラットフォームの設定

Red Hat OpenShift 分散トレーシングプラットフォームと Red Hat OpenShift Service Mesh の統合は、Red Hat OpenShift 分散トレーシングプラットフォーム (Tempo) と Red Hat OpenShift distributed tracing data collection の 2 つの部分で構成されます。

Red Hat OpenShift distributed tracing platform (Tempo)

複雑な分散システム内のトランザクションを監視およびトラブルシューティングするための分散トレーシングを提供します。これはオープンソースの Grafana Tempo プロジェクトに基づいています。

分散トレーシングプラットフォーム (Tempo)、その機能、インストール、および設定の詳細は、Red Hat OpenShift 分散トレーシングプラットフォーム (Tempo) を参照してください。

Red Hat OpenShift distributed tracing data collection

クラウドネイティブソフトウェア向けに、統一され、標準化された、ベンダー中立のテレメトリーデータ収集を提供することを目的としたオープンソースの OpenTelemetry プロジェクト に基づいています。Red Hat OpenShift distributed tracing data collection 製品は、OpenTelemetry Collector のデプロイおよび管理をサポートし、ワークロードの計装を簡素化します。

OpenTelemetry Collector は、テレメトリーデータを複数の形式で受信、処理、転送できるため、テレメトリー処理とテレメトリーシステム間の相互運用性にとって理想的なコンポーネントとなります。Collector は、メトリクス、トレース、ログを収集および処理するための統合ソリューションを提供します。

分散トレースデータ収集、その機能、インストール、および設定の詳細は、Red Hat OpenShift distributed tracing data collection を参照してください。

3.1.1. Service Mesh を使用した Red Hat OpenShift 分散トレーシングデータ収集の設定

Red Hat OpenShift Service Mesh を Red Hat OpenShift distributed tracing data collection と統合して、OpenTelemetry トレース、メトリクス、ログ計測、生成、収集、エクスポートし、ソフトウェアのパフォーマンスと動作を分析および理解できます。

前提条件

手順

  1. Red Hat OpenShift distributed tracing data collection Operator に移動し、istio-system namespace に OpenTelemetryCollector リソースをインストールします。

    istio-system namespace の OpenTelemetry Collector の例

    kind: OpenTelemetryCollector
    apiVersion: opentelemetry.io/v1beta1
    metadata:
      name: otel
      namespace: istio-system
    spec:
      observability:
        metrics: {}
      deploymentUpdateStrategy: {}
      config:
        exporters:
          otlp:
            endpoint: 'tempo-sample-distributor.tempo.svc.cluster.local:4317'
            tls:
              insecure: true
        receivers:
          otlp:
            protocols:
              grpc:
                endpoint: '0.0.0.0:4317'
              http: {}
        service:
          pipelines:
            traces:
              exporters:
                - otlp
              receivers:
                - otlp

  2. トレースを有効にするように Red Hat OpenShift Service Mesh を設定し、meshConfig で分散トレースデータ収集プロバイダーを定義します。

    トレースプロバイダーの有効化および定義の例

    apiVersion: sailoperator.io/v1alpha1
    kind: Istio
    metadata:
    #  ...
      name: default
    spec:
      namespace: istio-system
    #  ...
      values:
        meshConfig:
          enableTracing: true
          extensionProviders:
          - name: otel
            opentelemetry:
              port: 4317
              service: otel-collector.istio-system.svc.cluster.local 1

    1
    service フィールドは、istio-system namespace の OpenTelemetry コレクターサービスです。
  3. Istio Telemetry リソースを作成し、spec.values.meshConfig.ExtensionProviders で定義されたトレーサーを有効にします。

    Istio Telemetry リソースの例

    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
      name: otel-demo
      namespace: istio-system
    spec:
      tracing:
        - providers:
            - name: otel
          randomSamplingPercentage: 100

    注記

    トレースが表示されることを確認したら、randomSamplingPercentage 値を減らすか、default に設定してリクエストの数を減らします。

  4. 次のコマンドを実行して、info namespace を作成します。

    $ oc create ns info
  5. 使用している更新ストラテジーに応じて、適切なコマンドを実行して namespace でサイドカーインジェクションを有効にします。

    1. InPlace 更新ストラテジーを使用している場合は、次のコマンドを実行します。

      $ oc label namespace curl istio-injection=enabled
    2. RevisionBased 更新ストラテジーを使用している場合は、次のコマンドを実行します。

      1. 次のコマンドを実行してリビジョン名を表示します。

        $ oc get istiorevisions.sailoperator.io

        出力例

        NAME              TYPE    READY   STATUS    IN USE   VERSION   AGE
        default-v1-23-0   Local   True    Healthy   True     v1.23.0   3m33s

      2. 次のコマンドを実行して、namespace にリビジョン名のラベルを付け、サイドカーインジェクションを有効にします。

        $ oc label namespace curl istio.io/rev=default-v1-23-0
  6. 次のコマンドを実行して、bookinfo namespace に info アプリケーションをデプロイします。

    $ oc apply -f https://raw.githubusercontent.com/istio/istio/release-1.23/samples/info/platform/kube/bookinfo.yaml -n bookinfo
  7. トレースを生成するために、productpage Pod へのトラフィックを生成します。

    $ oc exec -it -n info deployments/productpage-v1 -c istio-proxy -- curl localhost:9080/productpage
  8. 次のコマンドを実行してインテグレーションを検証し、UI でトレースを確認します。

    $ oc get routes -n tempo tempo-sample-query-frontend
    注記

    Jaeger UI の OpenShift ルートは、Tempo namespace に作成する必要があります。tempo-sample-query-frontend サービス用に手動で作成するか、.spec.template.queryFrontend.jaegerQuery.ingress.type: route を使用して Tempo カスタムリソースを更新できます。

第4章 Red Hat が提供する Kiali Operator

4.1. Red Hat 提供の Kiali Operator の使用

アプリケーションをメッシュに追加したら、Red Hat が提供する Kiali Operator を使用して、アプリケーションを通るデータフローを表示できます。

4.1.1. Kiali について

Red Hat 提供の Kiali Operator を使用すると、単一のコンソールでの設定表示、トラフィックの監視、トレースの分析が可能になります。これはオープンソースの Kiali プロジェクトに基づいています。

Red Hat が提供する Kiali Operator は、Red Hat OpenShift Service Mesh の管理コンソールです。ダッシュボード、可観測性、および堅牢な設定、ならびに検証機能を提供します。これは、トラフィックトポロジーを推測して Service Mesh の構造を示し、メッシュの正常性を表示します。Kiali は、詳細なメトリクス、強力な検証、Grafana へのアクセス、Red Hat OpenShift 分散トレーシングプラットフォーム (Tempo) とシームレスに統合できます。

4.1.2. Red Hat が提供する Kiali Operator のインストール

以下の手順では、Red Hat が提供する Kiali Operator をインストールする方法を説明します。

警告

Operator のコミュニティーバージョンはインストールしないでください。コミュニティーバージョンはサポートされていません。

前提条件

  • Red Hat OpenShift Service Mesh Web コンソールにアクセスできる。

手順

  1. Red Hat OpenShift Service Mesh Web コンソールにログインします。
  2. OperatorsOperatorHub に移動します。
  3. フィルターボックスに Kiali と入力して、Red Hat が提供する Kiali Operator を検索します。
  4. Red Hat が提供する Kiali Operator をクリックし、Operator に関する情報を表示します。
  5. Install をクリックします。
  6. Operator Installation ページで、stable 更新チャネルを選択します。
  7. All namespaces on the cluster(default) を選択します。これにより、Operator がデフォルトの openshift-operators プロジェクトにインストールされ、Operator はクラスター内のすべてのプロジェクトで利用可能になります。
  8. Automatic Approval Strategy を選択します。

    注記

    手動の承認ストラテジーには、Operator のインストールおよびサブスクリプションプロセスを承認するための適切な認証情報を持つユーザーが必要です。

  9. Install をクリックします。
  10. Installed Operators ページには、Kiali Operator のインストールの進捗状況が表示されます。

4.1.3. Kiali を使用した OpenShift モニタリングの設定

次の手順は、Red Hat が提供する Kiali Operator をユーザーワークロード監視と統合する方法を示しています。

前提条件

  • Red Hat OpenShift Service Mesh がインストールされている。
  • ユーザーのワークロードの監視が有効になっている。ユーザー定義プロジェクトのモニタリングの有効化 を参照してください。
  • OpenShift Monitoring が Service Mesh で設定されている。「サービスメッシュを使用した OpenShift Monitoring の設定」を参照してください。
  • Red Hat が提供する Kiali Operator 1.89 がインストールされている。

手順

  1. Kiali の ClusterRoleBinding リソースを作成します。

    ClusterRoleBinding の設定例

    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. Kiali リソースを作成し、それを Istio インスタンスにポイントします。

    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
          thanos_proxy:
            enabled: true
          url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091

  3. Kiali リソースの準備ができたら、以下のコマンドを実行してルートから Kiali URL を取得します。

    $ echo "https://$(oc get routes -n istio-system kiali -o jsonpath='{.spec.host}')"
  4. URL に従い、Web ブラウザーで Kiali を開きます。

4.1.4. Red Hat OpenShift 分散トレースプラットフォームと Red Hat が提供する Kiali Operator の統合

Red Hat OpenShift 分散トレーシングプラットフォームを Red Hat が提供する Kiali Operator と統合すると、次の機能が有効になります。

  • トレースオーバーレイとグラフの詳細を表示します。
  • 詳細ページに散布図チャートと詳細なトレース/スパン情報を表示します。
  • ログとメトリックチャートにスパン情報を統合します。
  • 外部トレース UI へのリンクを提供します。
4.1.4.1. Red Hat が提供する Kiali Operator を使用した Red Hat OpenShift 分散トレーシングプラットフォームの設定

Red Hat が提供する Kiali Operator を Red Hat OpenShift 分散トレーシングプラットフォームと統合すると、Kiali コンソールで分散トレースを表示できるようになります。これらのトレースを表示すると、サービスメッシュ内のサービス間の通信に関するインサイトが得られ、リクエストがシステム内をどのように流れているか、発生する可能性のある問題はなにかを理解するのに役立ちます。

前提条件

  • Red Hat OpenShift Service Mesh をインストールしている。
  • 分散トレースプラットフォームを Red Hat OpenShift Service Mesh で設定している。

手順

  1. トレース用に Kiali リソース spec 設定を更新します。

    トレース用の Kiali リソース 仕様 の設定例

    spec:
      external_services:
        tracing:
          enabled: true 1
          provider: tempo
          use_grpc: false
          in_cluster_url: http://tempo-sample-query-frontend.tempo:3200
          url: https://tempo-sample-query-frontend-tempo.apps-crc.testing 2

    1
    トレースを有効にします。
    2
    Jaeger UI の OpenShift ルートは、Tempo namespace に作成する必要があります。tempo-sample-query-frontend サービス用に手動で作成するか、.spec.template.queryFrontend.jaegerQuery.ingress.type: route を使用して Tempo カスタムリソースを更新できます。
  2. 更新された speckiali_cr.yaml に保存します。
  3. 設定を適用するには、次のコマンドを実行します。

    $ oc patch -n istio-system kiali kiali --type merge -p "$(cat kiali_cr.yaml)"

    出力例:

     kiali.kiali.io/kiali patched

検証

  1. 以下のコマンドを実行して Kiali ルートを取得します。

    $ oc get route kiali ns istio-system
  2. Kiali UI に移動します。
  3. WorkloadTraces タブに移動し、Kiali UI でトレースを確認します。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.