このトピックでは、NGINX をフォワードプロキシとして使用して、アプリケーションを Application Real-Time Monitoring Service (ARMS) アプリケーションモニタリングに接続する方法について説明します。
シナリオ
データセンターまたはサードパーティのクラウドサービスにデプロイされたアプリケーションは、ネットワーク経由で ARMS サーバーにアクセスできる限り、アプリケーションモニタリングに接続できます。インターネットまたは Express Connect 回線を使用できます。詳細については、アプリケーションモニタリングの概要 を参照してください。
金融システムやネットワークセキュリティが必要なシナリオでは、アプリケーションが配置されている環境内の一部のホストがインターネットにアクセスできない場合、フォワードプロキシを使用できます。
前提条件
NGINX がデプロイされ、想定どおりに実行されていること。
アーキテクチャ
図に示すように、データセンターのアプリケーションデプロイ領域にある Java アプリケーションはインターネットにアクセスできません。DMZ のみがインターネットにアクセスできます。次の手順を実行して、フォワードプロキシリダイレクトを設定できます。
DMZ に NGINX をデプロイします。このトピックでは、ARMS エージェントによって報告された監視データを ARMS サーバーに転送するための NGINX 設定スクリプトを提供します。
監視データの報告先として 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-servicearms-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-serviceKubernetes 環境での自動インストール
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-servicearms-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結果を確認する
ARMS console にログインします。左側のナビゲーションペインで、 を選択します。アプリケーションを再起動し、約 2 分待ちます。アプリケーションが [アプリケーションリスト] ページに表示され、データが報告されている場合、アプリケーションはアプリケーションモニタリングに接続されています。