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

Application Real-Time Monitoring Service:NGINX を転送プロキシとして使用してアプリケーションを ARMS に接続する

最終更新日:Mar 12, 2026

Java アプリケーションがインターネットへの直接アクセスが制限されたネットワーク環境で実行される場合、Application Real-Time Monitoring Service (ARMS) エージェントから ARMS バックエンドへモニタリングデータを中継するために、NGINX を転送プロキシとして使用します。

転送プロキシを使用するタイミング

ARMS アプリケーションモニタリングでは、ARMS エージェントと ARMS バックエンド間のネットワーク接続性が必須です。データセンターまたはサードパーティのクラウド環境にデプロイされたアプリケーションは、通常、インターネットまたは Express Connect 回線を経由して接続されます。詳細については、「アプリケーションモニタリングの概要」をご参照ください。

金融システムやセキュリティ要件の厳しいデータセンターなど、ネットワークが制限された環境では、一部のホストがインターネットに直接アクセスできないことがあります。このような場合は、DMZ 内に NGINX を転送プロキシとしてデプロイし、分離されたアプリケーションネットワークと ARMS バックエンド間のデータ中継を行います。

アーキテクチャ

image

データは以下の 3 段階を経て流れます:

  1. ARMS エージェントが Java アプリケーションからトレース、メトリック、プロファイリングデータ、およびメタデータを収集します。

  2. エージェントは、ARMS バックエンドに直接送信する代わりに、DMZ 内の NGINX にすべてのデータを送信します。

  3. NGINX は、各データタイプをインターネット経由で対応する ARMS エンドポイントに転送します。

この構成を実現するには、以下の 2 つのコンポーネントを設定します:

  • NGINX — トレース、メトリック、プロファイリング、メタデータといった各データタイプを、対応する ARMS エンドポイントに転送するプロキシルール。

  • ARMS エージェント — データ報告先を NGINX にリダイレクトするエンドポイント設定。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

NGINX の設定

/etc/nginx/site-available/default を編集し、以下の server ブロックを追加します。各ブロックは、特定のデータタイプを対応する ARMS エンドポイントにプロキシします。

プレースホルダーの値は、前述の「前提条件」で取得したエンドポイントおよびアカウント ID に置き換えてください。

# --- トレースおよび継続的プロファイリング(ポート 80) ---
server {
  listen 80 default_server;
  listen [::]:80 default_server;

  server_name arms-service;
  ignore_invalid_headers off;

  # 継続的プロファイリング:<account-id> を Alibaba Cloud アカウント ID に置き換え、
  # URL をご利用のリージョンに対応する継続的プロファイリングエンドポイントに更新してください。
  location /<account-id> {
    proxy_pass http://arms-profiling-cn-shenzhen.oss-cn-shenzhen.aliyuncs.com;
  }

  # トレース:URL をご利用のリージョンのトレースエンドポイントに更新してください。
  location / {
    proxy_pass http://arms-dc-sz.aliyuncs.com;
  }
}

# --- メタデータ(ポート 9990) ---
server {
  listen 9990;
  server_name arms-meta;
  ignore_invalid_headers off;

  # メタデータ:URL をご利用のリージョンのトレースエンドポイント(ポート 9990)に更新してください。
  location / {
    proxy_pass http://arms-dc-sz.aliyuncs.com:9990;
  }
}

# --- メトリック(ポート 80) ---
server {
  listen 80;
  server_name arms-metrics;
  ignore_invalid_headers off;

  # メトリック:URL をご利用のリージョンのメトリックエンドポイントに更新してください。
  location / {
    proxy_pass http://cn-shenzhen.arms.aliyuncs.com;
  }
}

# --- ACM エンジン検出(ポート 8080) ---
server {
  listen 8080;
  server_name arms-acm;
  ignore_invalid_headers off;

  # ACM エンジン検出用にサーバーの IP アドレスを返却します。
  location / {
    return 200 $server_addr;
  }
}

# --- ACM エンジン(ポート 8848) ---
server {
  listen 8848;
  server_name arms-acm;
  ignore_invalid_headers off;

  # ACM エンジン:IP アドレスをご利用のリージョンの ACM エンジン IP アドレスに置き換えてください。
  location / {
    proxy_pass http://139.196.XX.XX:8848;
  }
}

以下の表は、ポートとデータタイプの対応関係をまとめています。

ポートサーバー名データの型プロキシ先
80arms-serviceトレース + 継続的プロファイリングトレースエンドポイントおよびプロファイリング OSS エンドポイント
9990arms-metaメタデータトレースエンドポイント(ポート 9990)
80arms-metricsメトリックメトリックエンドポイント
8080arms-acmACM エンジン検出NGINX サーバー IP アドレスを返却
8848arms-acmACM エンジンACM エンジン IP アドレス(ポート 8848)
9092(stream ブロック)診断チャネルトレースエンドポイント(ポート 9092)

次に、/etc/nginx/nginx.conf を編集し、診断チャネルの転送用に以下の stream ブロックを追加します。

# --- 診断チャネル(ポート 9092) ---
stream {
    upstream arms-arthas {
        # URL をご利用のリージョンのトレースエンドポイントに更新してください。
        server arms-dc-sz.aliyuncs.com:9092;
    }

    server {
        listen 9092;
        proxy_pass arms-arthas;
    }
}
説明

NGINX と ARMS バックエンド間の通信は HTTP を使用します。セキュリティポリシーにより、ARMS エージェントと NGINX 間の通信に暗号化が必要な場合は、NGINX で TLS を設定し、エージェントのエンドポイント設定を適宜更新してください。

ARMS エージェントの設定

NGINX の実行が確認できたら、ARMS エージェントのデータ報告先を、パブリックな ARMS エンドポイントから NGINX にリダイレクトします。この転送プロキシモードは、手動でインストールしたエージェントおよび Kubernetes 環境で自動的にインストールされたエージェントの両方で動作します。インストール手順については、「ARMS エージェントの手動インストール」および「オープンソース Kubernetes クラスターへの ARMS エージェントの自動インストール」をご参照ください。

ご使用のエージェントバージョンおよびインストール方法に該当するセクションを選択してください。

以下の表は、両バージョンで使用されるエージェントエンドポイントパラメーターの一覧です。

パラメーターデータの型
profiler.collector.trace.endpointarms-serviceトレース
profiler.collector.metric.endpointarms-metricsメトリック
profiler.collector.meta.endpointarms-metaメタデータ
profiler.collector.endpointarms-service一般コレクション
profiler.acm.endpointarms-acmACM エンジン
profiler.oss.endpointarms-service継続的プロファイリング(V3.2.0+)

エージェント V4.x 以降

手動インストール

ステップ 1:ホストエントリの追加

アプリケーションが実行されるサーバーの /etc/hosts に以下のエントリを追加します。ただし、10.0.0.201 は、ご利用の NGINX サーバーの IP アドレスに置き換えてください。

10.0.0.201 arms-service
10.0.0.201 arms-metrics
10.0.0.201 arms-meta
10.0.0.201 arms-acm
# cn-shanghai をご利用の Alibaba Cloud リージョンコードに置き換えてください。
10.0.0.201 arms-profiling-cn-shanghai.arms-service
説明

ARMS エージェントは、バックエンドへの接続時にエンドポイントのホスト名を解決します。/etc/hosts にこれらのホスト名を NGINX の IP アドレスにマッピングすることで、コード変更なしにエージェントが NGINX へデータを送信できます。

ステップ 2:エージェントエンドポイント設定の更新

以下のいずれかの方法を使用してください。

方法 1:設定ファイル(推奨)

エージェントのルートディレクトリに arms-agent.config ファイルを作成し、以下のパラメーターを記述します。

profiler.collector.trace.endpoint=arms-service
profiler.collector.metric.endpoint=arms-metrics
profiler.collector.meta.endpoint=arms-meta
profiler.collector.endpoint=arms-service
profiler.acm.endpoint=arms-acm
profiler.oss.endpoint=arms-service

以下の JVM 起動パラメーターを追加し、エージェントがこのファイルを参照するように指定します。

-Darms.config.file=/path/to/arms-agent.config

/path/to/arms-agent.config は、実際の設定ファイルの絶対パスに置き換えてください。

方法 2:JVM 起動パラメーター

すべてのエンドポイント設定を、JVM パラメーターとして直接渡します。

-Dprofiler.collector.trace.endpoint=arms-service -Dprofiler.collector.metric.endpoint=arms-metrics -Dprofiler.collector.meta.endpoint=arms-meta -Dprofiler.collector.endpoint=arms-service -Dprofiler.acm.endpoint=arms-acm -Dprofiler.oss.endpoint=arms-service
説明

設定ファイル(方法 1)は、複数のアプリケーションで共通利用する場合の保守性が高く、JVM パラメーター(方法 2)は、迅速なテストや単一アプリケーション向けのデプロイに適しています。

Kubernetes 環境での自動インストール

説明

自動インストール済みのエージェントに対して転送プロキシを設定する前に、エージェントを V3.2.0 以降に更新してください。

ステップ 1:現在のエージェント設定の取得

ARMS エージェントがインストールされている Pod にログインし、/home/admin/.opt/ArmsAgent/arms-agent.config の設定ファイルの内容をコピーします。

ステップ 2:ConfigMap の作成

コピーした設定ファイル内で、エンドポイントの値を NGINX プロキシのホスト名に置き換えます。

profiler.collector.trace.endpoint=arms-service
profiler.collector.metric.endpoint=arms-metrics
profiler.collector.meta.endpoint=arms-meta
profiler.collector.endpoint=arms-service
profiler.acm.endpoint=arms-acm
profiler.oss.endpoint=arms-service

変更後の設定から ConfigMap を作成します。

apiVersion: v1
kind: ConfigMap
metadata:
  name: arms-agent-proxy-mode.config
data:
  arms-agent.config: |-
    ### ここに変更後の設定を貼り付けてください。
    profiler.collector.trace.endpoint=arms-service
    profiler.collector.metric.endpoint=arms-metrics
    profiler.collector.meta.endpoint=arms-meta
    profiler.collector.endpoint=arms-service
    profiler.acm.endpoint=arms-acm
    profiler.oss.endpoint=arms-service
    ### ここに変更後の設定を貼り付けてください。

ステップ 3:ワークロードの Deployment の更新

Deployment YAML を編集し、ConfigMap のマウントおよびホストエイリアスの追加を行います。カスタマイズが必要な値を強調表示するインラインコメントに注意してください。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: spring-boot-demo
  name: spring-boot-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: spring-boot-demo
  template:
    metadata:
      labels:
        app: spring-boot-demo
        armsPilotAutoEnable: "on"
        armsPilotCreateAppName: spring-boot-demo
    spec:
      hostAliases:
      # IP アドレスをご利用の NGINX サーバーの IP アドレスに置き換えてください。
      - ip: "192.168.172.171"
        hostnames:
        - "arms-service"
        - "arms-metrics"
        - "arms-meta"
        - "arms-acm"
        # cn-shenzhen をご利用の Alibaba Cloud リージョンコードに置き換えてください。
        - "arms-profiling-cn-shenzhen.arms-service"
      containers:
        - env:
            # エージェントがプロキシモードの設定ファイルを参照するよう指定します。
            - name: ARMS_CONFIG_FILE
              value: /home/admin/.opt/ArmsAgent/arms-agent-proxy-mode.config
          image: >-
            registry.cn-hangzhou.aliyuncs.com/ahas_apsara_adp/spring-boot-demo:wt-test
          imagePullPolicy: Always
          name: spring-boot-demo
          ports:
            - containerPort: 80
              protocol: TCP
          resources:
            limits:
              cpu: 500m
              memory: 1Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            # プロキシモードの設定をエージェントディレクトリにマウントします。
            - mountPath: /home/admin/.opt/ArmsAgent/
              name: arms-agent-proxy-mode
      imagePullSecrets:
        - name: wt-test
      volumes:
        # ConfigMap をボリュームとしてマッピングします。
        - configMap:
            name: arms-agent-proxy-mode.config
          name: arms-agent-proxy-mode

エージェント V3.x 以前

手動インストール

ステップ 1:ホストエントリの追加

アプリケーションが実行されるサーバーの /etc/hosts に以下のエントリを追加します。ただし、10.0.0.201 は、ご利用の NGINX サーバーの IP アドレスに置き換えてください。

10.0.0.201 arms-service
10.0.0.201 arms-metrics
10.0.0.201 arms-meta
10.0.0.201 arms-acm
# cn-shanghai をご利用の Alibaba Cloud リージョンコードに置き換えてください。
10.0.0.201 arms-profiling-cn-shanghai.arms-service

ステップ 2:エージェント設定ファイルの編集

エージェントのディレクトリにある arms-agent.config を開き、以下のパラメーターを更新します。

# すべてのエージェントバージョンに存在する 5 つのパラメーター:
profiler.collector.trace.endpoint=arms-service
profiler.collector.metric.endpoint=arms-metrics
profiler.collector.meta.endpoint=arms-meta
profiler.collector.endpoint=arms-service
profiler.acm.endpoint=arms-acm
# エージェント V3.2.0 以降で追加されたパラメーター:
profiler.oss.endpoint=arms-service

Kubernetes 環境での自動インストール

説明

自動インストール済みのエージェントに対して転送プロキシを設定する前に、エージェントを V3.2.0 以降に更新してください。

ステップ 1:現在のエージェント設定の取得

ARMS エージェントがインストールされている Pod にログインし、/home/admin/.opt/ArmsAgent/arms-agent.config の設定ファイルの内容をコピーします。

ステップ 2:ConfigMap の作成

コピーした設定ファイル内で、エンドポイントの値を NGINX プロキシのホスト名に置き換えます。

profiler.collector.trace.endpoint=arms-service
profiler.collector.metric.endpoint=arms-metrics
profiler.collector.meta.endpoint=arms-meta
profiler.collector.endpoint=arms-service
profiler.acm.endpoint=arms-acm
profiler.oss.endpoint=arms-service

変更後の設定から ConfigMap を作成します。

apiVersion: v1
kind: ConfigMap
metadata:
  name: arms-agent-proxy-mode.config
data:
  arms-agent.config: |-
    ### ここに変更後の設定を貼り付けてください。
    profiler.collector.trace.endpoint=arms-service
    profiler.collector.metric.endpoint=arms-metrics
    profiler.collector.meta.endpoint=arms-meta
    profiler.collector.endpoint=arms-service
    profiler.acm.endpoint=arms-acm
    profiler.oss.endpoint=arms-service
    ### ここに変更後の設定を貼り付けてください。

ステップ 3:ワークロードの Deployment の更新

Deployment YAML を編集し、ConfigMap のマウントおよびホストエイリアスの追加を行います。カスタマイズが必要な値を強調表示するインラインコメントに注意してください。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: spring-boot-demo
  name: spring-boot-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: spring-boot-demo
  template:
    metadata:
      labels:
        app: spring-boot-demo
        armsPilotAutoEnable: "on"
        armsPilotCreateAppName: spring-boot-demo
    spec:
      hostAliases:
      # IP アドレスをご利用の NGINX サーバーの IP アドレスに置き換えてください。
      - ip: "192.168.172.171"
        hostnames:
        - "arms-service"
        - "arms-metrics"
        - "arms-meta"
        - "arms-acm"
        # cn-shenzhen をご利用の Alibaba Cloud リージョンコードに置き換えてください。
        - "arms-profiling-cn-shenzhen.arms-service"
      containers:
        - env:
            # エージェントがプロキシモードの設定ファイルを参照するよう指定します。
            - name: ARMS_CONFIG_FILE
              value: /home/admin/.opt/ArmsAgent/arms-agent-proxy-mode.config
          image: >-
            registry.cn-hangzhou.aliyuncs.com/ahas_apsara_adp/spring-boot-demo:wt-test
          imagePullPolicy: Always
          name: spring-boot-demo
          ports:
            - containerPort: 80
              protocol: TCP
          resources:
            limits:
              cpu: 500m
              memory: 1Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            # プロキシモードの設定をエージェントディレクトリにマウントします。
            - mountPath: /home/admin/.opt/ArmsAgent/
              name: arms-agent-proxy-mode
      imagePullSecrets:
        - name: wt-test
      volumes:
        # ConfigMap をボリュームとしてマッピングします。
        - configMap:
            name: arms-agent-proxy-mode.config
          name: arms-agent-proxy-mode

設定の確認

  1. ARMS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、アプリケーションモニタリングアプリケーションリスト を選択します。

  3. アプリケーションを再起動し、約 2 分待ちます。

  4. アプリケーションリスト ページにアプリケーションが表示され、モニタリングデータが正常に報告されていることを確認します。

トラブルシューティング

2 分経過後もアプリケーションが表示されない場合は、以下の項目を確認してください。

症状確認事項確認方法
NGINX のログにリクエストが記録されていないNGINX がエージェントからのデータを受信していない/var/log/nginx/access.log を確認し、着信リクエストが記録されているかを確認します。空欄の場合、エージェントが NGINX に到達できていません。
ping arms-service が NGINX の IP アドレスに解決されないDNS 解決が正しくない/etc/hosts のエントリ(手動インストール時)または hostAliases 設定(Kubernetes 時)を確認します。
NGINX がリクエストを受信しているが、ARMS にデータが表示されないNGINX が ARMS バックエンドに到達できないNGINX ホストから curl -I http://<trace-endpoint> を実行し、インターネット接続性を確認します。
エージェントは起動するが、接続エラーを報告するエージェントのエンドポイントパラメーターが不正エンドポイントパラメーターが arms-servicearms-metricsarms-meta、および arms-acm を指しているか確認します。