すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:Istio メトリックとアプリケーションメトリックのマージ

最終更新日:Mar 11, 2026

標準的な Prometheus の設定では、prometheus.io アノテーションを使用して、Pod ごとに 1 つのメトリックエンドポイントをスクレイプします。Service Mesh (ASM) がサイドカープロキシをインジェクトすると、プロキシは別のエンドポイントで Istio メトリックを公開します。これは、アプリケーションの既存のスクレイプターゲットと競合します。メトリックのマージは、両方のメトリックセットを 1 つのエンドポイントに統合することでこの問題を解決します。Prometheus は追加設定なしでこのエンドポイントをスクレイプできます。

メトリックのマージを有効化すると、各サイドカープロキシは、(元の prometheus.io アノテーションを使用して) アプリケーションのメトリックをフェッチし、それらを Istio メトリックと結合して、すべてを :15020/stats/prometheus で公開します。ASM は Pod の prometheus.io アノテーションを更新して、このマージされたエンドポイントを指すようにします。これにより、Prometheus はアプリケーションと Istio の両方のメトリックを自動的に取得します。

メトリックのマージがご利用の環境に適さない場合は、アプリケーションとサイドカーのエンドポイントを個別にスクレイプするように Prometheus を設定してください。

メトリックのマージを使用しないケース

重要

この機能を有効化する前に、以下のシナリオを評価してください。該当する場合は、代わりにアプリケーションとサイドカーのエンドポイントを個別にスクレイプするように Prometheus を設定してください。

  • 機密性の高いアプリケーションメトリック。 マージされたメトリックはサイドカープロキシを通じて公開されます。Istio メトリックを表示する権限を持つユーザーは、アプリケーションメトリックも表示できます。

メトリックのマージの仕組み

次の図は、メトリックのマージが有効化された後のデータフローを示しています。

+---------------------------------------------------------+
|  Pod                                                    |
|                                                         |
|  +----------------+       +--------------------------+  |
|  |  Application   |       |  Sidecar proxy           |  |
|  |                |       |                          |  |
|  |  :9080         |------>|  Fetches app metrics     |  |
|  |  /metrics      |       |  from original endpoint  |  |
|  +----------------+       |                          |  |
|                           |  Merges with Istio       |  |
|                           |  proxy metrics           |  |
|                           |                          |  |
|                           |  :15020                  |  |
|                           |  /stats/prometheus       |------> Prometheus
|                           +--------------------------+  |
+---------------------------------------------------------+

ASM が Pod でメトリックのマージを有効化すると、次のようになります。

  1. 元の prometheus.io アノテーション (スクレイプターゲット、ポート、パス) は、サイドカーコンテナ内の ISTIO_PROMETHEUS_ANNOTATIONS 環境変数に保存されます。

  2. prometheus.io アノテーションは、データプレーン上のすべての Pod に追加され、マージされたエンドポイント (:15020/stats/prometheus) を指すように上書きされます。これらのアノテーションが既に存在する場合も上書きされます。

  3. サイドカープロキシは保存されたアノテーションを読み取り、元のエンドポイントからアプリケーションメトリックをフェッチし、自身の Istio メトリックと結合して、マージされたエンドポイントですべてを提供します。

前提条件

開始する前に、以下を確認してください。

ステップ 1: アプリケーションの Prometheus アノテーションの確認

メトリックのマージを有効化する前に、アプリケーションの Pod に prometheus.io アノテーションが含まれていることを確認してください。次の Deployment マニフェストは、一般的な設定例です。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: productpage-v1
  labels:
    app: productpage
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: productpage
      version: v1
  template:
    metadata:
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9080"
        prometheus.io/path: "/metrics"
      labels:
        app: productpage
        version: v1
    spec:
      ......

kubectl get pod <pod-name> -o yaml を実行し、次のアノテーションが存在することを確認します。

prometheus.io/path: /metrics
prometheus.io/port: '9080'
prometheus.io/scrape: 'true'

ステップ 2: メトリックのマージの有効化

メトリックのマージはデフォルトで無効になっています。ASM インスタンスレベル (すべてのワークロードに適用) またはワークロードごとに有効化します。

オプション A: ASM インスタンスに対してグローバルに有効化

  1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、[Service Mesh][メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、対象の ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM インスタンス] > [基本情報] を選択します。

  3. [設定情報] セクションで、[Istio のメトリックとアプリケーションのメトリックをマージ] の横にある [有効化] をクリックします。確認ダイアログボックスで、[OK] をクリックします。

オプション B: 特定のワークロードに対して有効化

対象のワークロードの Pod spec に、次のアノテーションを追加します。

prometheus.istio.io/merge-metrics: "true"

この方法を使用して、グローバルでは無効のまま特定のサービスでマージを有効にしたり、個々のワークロードでインスタンスレベルの設定をオーバーライドしたりできます。

ステップ 3: マージされたエンドポイントの確認

メトリックのマージを有効化した後、影響を受ける Pod を再起動して、更新されたサイドカー設定を適用します。その後、Pod を確認して変更を検証します。

kubectl get pod <pod-name> -o yaml を実行し、以下を確認します。

更新されたアノテーション。 prometheus.io アノテーションがマージされたエンドポイントを指すようになります。

prometheus.io/path: /stats/prometheus
prometheus.io/port: '15020'
prometheus.io/scrape: 'true'

新しい環境変数。 サイドカーコンテナに、元のアプリケーションのスクレイプ設定を保持する ISTIO_PROMETHEUS_ANNOTATIONS 環境変数が含まれます。

env:
  - name: ISTIO_PROMETHEUS_ANNOTATIONS
    value: '{"scrape":"true","path":"/metrics","port":"9080"}'

メトリックのマージの無効化

メトリックのマージを無効化するには、有効化した方法に応じて次のいずれかの方法を選択します。

  • インスタンスレベル: ASM コンソールで、[ASM インスタンス] > [基本情報] に移動します。[設定情報] セクションで、[Istio のメトリックとアプリケーションのメトリックをマージ] の横にある [無効化] をクリックします。確認ダイアログボックスで、[OK] をクリックします。

  • ワークロードレベル: 対象の Pod spec に次のアノテーションを追加します。

    prometheus.istio.io/merge-metrics: "false"
説明

ワークロードごとのアノテーションは、オーバーライドとしても機能します。メトリックのマージがインスタンスレベルで有効になっている場合、このアノテーションを追加して、機密性の高いメトリックを持つ特定のワークロードを除外できます。

関連ドキュメント