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

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

最終更新日:Sep 12, 2026

Prometheus と統合されたアプリケーションでは、Istio メトリクスとアプリケーションメトリクスをマージすることで、サイドカープロキシを使用してアプリケーションメトリクスを公開できます。このトピックでは、Istio メトリクスとアプリケーションメトリクスをマージする方法について説明します。

前提条件

バージョン 1.17.2.30 以降の Service Mesh (ASM) インスタンスが作成されている必要があります。詳細については、「ASM インスタンスの作成」または「ASM インスタンスの更新」をご参照ください。

重要

この機能は、アプリケーションメトリクスが機密情報であるシナリオには適していません。アプリケーションメトリクスは Istio メトリクスと一緒に収集されるため、Istio メトリクスを表示する権限を持つユーザーはアプリケーションメトリクスも表示できます。

機能の説明

Istio メトリクスとアプリケーションメトリクスをマージする機能を有効にすると、ASM はアプリケーションメトリクスを Istio メトリクスとマージします。Prometheus のメトリクススクレイピング機能を有効にするために、アプリケーションの prometheus.io アノテーションがデータプレーン上のすべての Pod に追加されます。これらのアノテーションがすでに存在する場合、それらは上書きされます。サイドカープロキシは、Istio メトリクスとアプリケーションメトリクスをマージします。Prometheus は、:15020/stats/prometheus エンドポイントからマージされたメトリクスを取得できます。

この機能が有効になると、ASM は Pod に対して次の操作を実行します:

  • ASM が導入される前に prometheus.io アノテーションで指定されていたスクレイピング方法は、サイドカープロキシの環境変数に保存されます。

  • サイドカープロキシは、アプリケーションの Prometheus メトリクスを自身のメトリクスとマージし、Prometheus がスクレイピングできるように、結合されたメトリクスを :15020/stats/prometheus エンドポイントで公開します。

ステップ 1:サンプルアプリケーションのデプロイ

prometheus.io アノテーションを含むアプリケーションをデプロイします。詳細については、「ASM インスタンスでのアプリケーションのデプロイ」をご参照ください。

次のサンプルコードは、productpage アプリケーションの 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:
      ......

productpage アプリケーションがデプロイされると、次の Pod 情報が生成されます:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    k8s.aliyun.com/pod-ips: 172.17.0.132
    kubectl.kubernetes.io/default-container: productpage
    kubectl.kubernetes.io/default-logs-container: productpage
    kubernetes.io/psp: ack.privileged
    prometheus.io/path: /metrics
    prometheus.io/port: '9080'
    prometheus.io/scrape: 'true'

上記の YAML テンプレートでは、次の prometheus.io アノテーションを確認できます:

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

ステップ 2:Istio メトリクスとアプリケーションメトリクスをマージする機能の有効化

デフォルトでは、この機能は ASM インスタンスで無効になっています。この機能は、ASM インスタンスでグローバルに設定することも、アプリケーションの Pod に prometheus.istio.io/merge-metrics: "true" アノテーションを追加してワークロードごとに設定することもできます。この例では、ASM インスタンスでこの機能を設定します。

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

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

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

説明

この機能が不要になった場合は、次のいずれかの操作を実行して無効にできます:

  • グローバル:設定情報 セクションで、Istio とアプリケーションのメトリックのマージ の横にある 無効化 をクリックします。Istio とアプリケーションの監視メトリクスのマージを無効化 ダイアログボックスで、OK をクリックします。

  • この機能がワークロードで有効になっている場合は、対応する Pod に prometheus.istio.io/merge-metrics: "false" アノテーションを追加します。

ステップ 3:結果の確認

Istio メトリクスとアプリケーションメトリクスをマージする機能を有効にした後、Pod を再起動して Pod 情報を確認します。

次のサンプルコードは、Pod の YAML テンプレートの例です:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    k8s.aliyun.com/pod-ips: 172.17.0.126
    kubectl.kubernetes.io/default-container: productpage
    kubectl.kubernetes.io/default-logs-container: productpage
    kubernetes.io/psp: ack.privileged
    prometheus.io/path: /stats/prometheus
    prometheus.io/port: '15020'
    prometheus.io/scrape: 'true'
    ......
spec:
  containers:
    - args:
        - proxy
        - sidecar
        ......
      env:
        ......
        - name: ISTIO_PROMETHEUS_ANNOTATIONS
          value: '{"scrape":"true","path":"/metrics","port":"9080"}'
                

上記の YAML テンプレートから、元の prometheus.io アノテーションが ISTIO_PROMETHEUS_ANNOTATIONS 環境変数に保存され、Pod のアノテーションが以下のように更新されたことがわかります。

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