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

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

最終更新日:Jun 27, 2025

このトピックでは、NGINX をフォワードプロキシとして使用して、アプリケーションを Application Real-Time Monitoring Service (ARMS) アプリケーションモニタリングに接続する方法について説明します。

シナリオ

データセンターまたはサードパーティのクラウドサービスにデプロイされたアプリケーションは、ネットワーク経由で ARMS サーバーにアクセスできる限り、アプリケーションモニタリングに接続できます。インターネットまたは Express Connect 回線を使用できます。詳細については、アプリケーションモニタリングの概要 を参照してください。

金融システムやネットワークセキュリティが必要なシナリオでは、アプリケーションが配置されている環境内の一部のホストがインターネットにアクセスできない場合、フォワードプロキシを使用できます。

前提条件

NGINX がデプロイされ、想定どおりに実行されていること。

アーキテクチャ

図に示すように、データセンターのアプリケーションデプロイ領域にある Java アプリケーションはインターネットにアクセスできません。DMZ のみがインターネットにアクセスできます。次の手順を実行して、フォワードプロキシリダイレクトを設定できます。

  1. DMZ に NGINX をデプロイします。このトピックでは、ARMS エージェントによって報告された監視データを ARMS サーバーに転送するための NGINX 設定スクリプトを提供します。

  2. 監視データの報告先として NGINX を使用するように ARMS エージェントの設定を変更します。

NGINX を設定する

ステップ 1: NGINX をインストールしてデプロイする

NGINX がインストールされていて、インターネットにアクセスできることを確認します。NGINX のインストール方法については、NGINX 公式ドキュメント を参照してください。

ステップ 2: ARMS エンドポイントを取得する

アプリケーションをデプロイする Alibaba Cloud リージョンに基づいて、ARMS エンドポイントと ACM エンジンの IP アドレスを取得します。詳細については、Java 用 ARMS エージェントに必要なネットワーク設定 を参照してください。

ステップ 3: Alibaba Cloud アカウントの ID を取得する

Alibaba Cloud アカウントの ID を取得します。詳細については、Alibaba Cloud アカウントの ID を表示するにはどうすればよいですか? を参照してください。

ステップ 4: NGINX 設定ファイルを変更する

/etc/nginx/site-available/default ファイルを変更し、次の内容を追加します。

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  server_name arms-service;
  ignore_invalid_headers off;

  // ステップ 3 で取得した Alibaba Cloud アカウントの ID で "1672753017******" を置き換えます。
  location /1672753017****** {
    // ステップ 2 で取得した継続的プロファイリングエンドポイントで URL を置き換えます。
    proxy_pass http://arms-profiling-cn-shenzhen.oss-cn-shenzhen.aliyuncs.com;
  }

  location / {
    // ステップ 2 で取得したトレースエンドポイントで URL を置き換えます。
    proxy_pass http://arms-dc-sz.aliyuncs.com;
  }
}

server {
  listen 9990;
  server_name arms-meta;
  ignore_invalid_headers off;
  location / {
    // ステップ 2 で取得したトレースエンドポイントで URL を置き換えます。
    proxy_pass http://arms-dc-sz.aliyuncs.com:9990;
  }
}

server {
  listen 80;
  server_name arms-metrics;
  ignore_invalid_headers off;

  location / {
    // ステップ 2 で取得したメトリックエンドポイントで URL を置き換えます。
    proxy_pass http://cn-shenzhen.arms.aliyuncs.com;
  }
}

server {
  listen 8080;
  server_name arms-acm;
  ignore_invalid_headers off;

  location / {
    return 200 $server_addr;
  }
}

server {
  listen 8848;
  server_name arms-acm;
  ignore_invalid_headers off;

  location / {
    // ステップ 2 で取得した ACM エンジンの IP アドレスで IP アドレスを置き換えます。
    proxy_pass http://139.196.XX.XX:8848;
  }
}

/etc/nginx/nginx.conf ファイルを変更し、次の内容を追加します。

stream {
    upstream arms-arthas {
        // ステップ 2 で取得したトレースエンドポイントで URL を置き換えます。
        server arms-dc-sz.aliyuncs.com:9092;
    }

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

ARMS エージェントを設定する

ARMS のフォワードプロキシモードは、手動でインストールされた ARMS エージェント、または Kubernetes 環境に自動的にインストールされた ARMS エージェントをサポートしています。詳細については、ARMS エージェントを手動でインストールする および オープンソース Kubernetes クラスターに ARMS エージェントを自動的にインストールする を参照してください。ARMS エージェントがインストールされると、データは ARMS のパブリックエンドポイントに報告されます。Java アプリケーションはインターネットにアクセスできないため、ARMS にアクセスできません。このセクションの手順を実行して、データ報告のターゲットを NGINX に変更します。

エージェント V4.x 以降

手動インストール

手順 1:hosts ファイルを変更する

アプリケーションが配置されているサーバーの /etc/hosts ファイルに以下を追加します。 IP アドレスを 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:エージェントのネットワーク設定を変更する

  • 方法 1:エージェントのルートディレクトリに、次のパラメーターを含む arms-agent.config ファイルを作成します。

    # 次の 5 つのパラメーターは、すべてのバージョンの ARMS エージェントに存在します。
    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

    -Darms.config.file=${/path/to/arms-agent.config} をアプリケーションの起動パラメーターに追加します。ここで、${/path/to/arms-agent.config} は arms-agent.config の絶対パスです。

  • 方法 2:次のエージェント起動パラメーターを追加します。

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

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

説明

Kubernetes 環境に自動的にインストールされた ARMS エージェントの転送プロキシを構成するには、最初に エージェントを更新 して V3.2.0 以降にします。

ステップ 1: ARMS エージェントの設定ファイルの内容を取得する

ARMS エージェントが自動的にインストールされている Java アプリケーションの場合は、1 つのポッドにログインします。ARMS エージェントの設定ファイルは /home/admin/.opt/ArmsAgent/arms-agent.config ディレクトリにあります。内容をコピーします。

ステップ 2: ConfigMap を作成する

設定ファイルの内容で、次の設定項目の値を変更します。

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

arms-agent-proxy-mode.config という名前の 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: アプリケーションの YAML ファイルを変更する

アプリケーションが属するワークロードの YAML ファイルを変更します。

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-shanghai" を Alibaba Cloud リージョンの ID に置き換えます。
        - "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:
            // 新しい設定ファイルを ARMS エージェントのディレクトリにマウントします。
            - mountPath: /home/admin/.opt/ArmsAgent/
              name: arms-agent-proxy-mode
      imagePullSecrets:
        - name: wt-test
      volumes:
        // configMap を arms-agent-proxy-mode という名前のボリュームにマップします。
        - configMap:
            name: arms-agent-proxy-mode.config
          name: arms-agent-proxy-mode
説明

上記の YAML ファイルの注釈に注意してください。

エージェント V3.x 以前

手動インストール

手順 1:hosts ファイルを変更する

アプリケーションが配置されているサーバーの /etc/hosts ファイルに以下を追加します。 IP アドレスを 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 つのパラメーターは、すべてのバージョンの ARMS エージェントに存在します。
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 パラメーターは、エージェント V3.2.0 以降に追加されています。その値を arms-service に変更します。
profiler.oss.endpoint=arms-service

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

説明

Kubernetes 環境に自動的にインストールされた ARMS エージェントの転送プロキシを構成するには、最初に エージェントを更新 して V3.2.0 以降にします。

手順 1:ARMS エージェントの構成ファイルの内容を取得する

ARMS エージェントが自動的にインストールされている Java アプリケーションの場合は、1 つのポッドにログインします。 ARMS エージェントの構成ファイルは /home/admin/.opt/ArmsAgent/arms-agent.config ディレクトリにあります。内容をコピーします。

手順 2:ConfigMap を作成する

構成ファイルの内容で、次の構成項目の値を変更します。

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

arms-agent-proxy-mode.config という名前の 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:アプリケーションの YAML ファイルを変更する

アプリケーションが属するワークロードの YAML ファイルを変更します。

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-shanghai」を Alibaba Cloud リージョンの ID に置き換えます。
        - "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:
            # 新しい構成ファイルを ARMS エージェントのディレクトリにマウントします。
            - mountPath: /home/admin/.opt/ArmsAgent/
              name: arms-agent-proxy-mode
      imagePullSecrets:
        - name: wt-test
      volumes:
        # configMap を arms-agent-proxy-mode という名前のボリュームにマップします。
        - configMap:
            name: arms-agent-proxy-mode.config
          name: arms-agent-proxy-mode
説明

上記の YAML ファイルの注釈に注意してください。

結果を確認する

ARMS console にログインします。左側のナビゲーションペインで、アプリケーションモニタリング > アプリケーションリスト を選択します。アプリケーションを再起動し、約 2 分待ちます。アプリケーションが [アプリケーションリスト] ページに表示され、データが報告されている場合、アプリケーションはアプリケーションモニタリングに接続されています。