Application Real-Time Monitoring Service (ARMS) のタグは、アプリケーションモニタリングメトリクス、トレース、ログなどのデータを整理し、把握するのに役立ちます。このトピックでは、アプリケーションにタグを追加する方法、アプリケーションタグを使用してアプリケーションをフィルタリングし権限を管理する方法、およびインスタンスタグを使用して [アプリケーション詳細] ページと [Grafana ビュー] ページでデータをフィルタリングする方法について説明します。
前提条件
アプリケーションがアプリケーションモニタリングに接続されていること。詳細については、「アプリケーションモニタリングの概要」をご参照ください。
Java アプリケーションは、次の要件も満たす必要があります。
-
コンテナクラスター内のアプリケーションの場合、ack-onepilot コンポーネントが v3.0.4 以降、ARMS エージェントが v2.7.3.5 以降であることを確認してください。
-
他の環境のアプリケーションでは、ARMS エージェントのバージョンが v2.7.3.5 以降である必要があります。 最新の ARMS エージェントは、ARMS コンソールのページにあるプローブ版のリリースについてタブからダウンロードできます。
タグの種類
アプリケーションモニタリングでは、アプリケーションタグとインスタンスタグの 2 種類のタグを利用できます。どちらもキーと値のペアで構成されます。ユースケースに最適な種類を選択してください。
アプリケーションタグ
アプリケーションタグは ARMS アプリケーションに適用されます。アプリケーションタグは、ARMS コンソールの ページで表示または変更できます。アプリケーションタグは、アプリケーションのフィルタリング、権限の管理、コストの割り当てなどの目的で使用できます。
インスタンスタグ
各アプリケーションインスタンスは、同じアプリケーション名で ARMS に接続するアプリケーションプロセスを表します。アプリケーションタグとは異なり、インスタンスタグは個々のアプリケーションインスタンスに適用されるため、同じアプリケーションの異なるインスタンスが異なるタグを持つことができます。
Kubernetes 環境で自動的に検出されたアプリケーションインスタンスの場合、ARMS は次のデフォルトインスタンスタグを追加します。
|
タグキー |
説明 |
|
workloadKind |
アプリケーションインスタンスが実行されているワークロードの種類 (Deployment など)。 |
|
workloadName |
アプリケーションインスタンスが実行されているワークロードの名前。 |
|
clusterName |
アプリケーションインスタンスが実行されている Kubernetes クラスターの名前。 |
|
namespace |
アプリケーションインスタンスが実行されている Kubernetes 名前空間。 |
|
version |
イメージタグ。 カスタムインスタンスタグで上書きできます。 |
|
agentVersion |
ARMS エージェントのバージョン。 |
デフォルトタグに加えて、カスタムインスタンスタグを追加できます。アプリケーションインスタンスは、親アプリケーションのすべてのタグも継承します。ARMS がアプリケーションインスタンスに対して生成するモニタリングデータには、割り当てられたすべてのアプリケーションタグとインスタンスタグが含まれます。
カスタムインスタンスタグキーは、正規表現 ^[a-zA-Z_][a-zA-Z0-9_]*$ に一致する Prometheus の命名規則に従うことをお勧めします。準拠していないキーの場合、ARMS エージェントは無効な文字をアンダースコア (_) に置き換えます。たとえば、1key:1value は _key:1value になります。
例:
次の図に示すように、アプリケーション my-app には 2 つのインスタンスがあります。ARMS がインスタンス B に対して生成するメトリックデータには、次のタグが含まれています: {env: Dev, team: Observability, app: my-app, workloadKind: Deployment, workloadName: my-app, clusterName: ClusterA, namespace: nsA, gitVersion: 1.0.1}。
カスタムインスタンスタグの追加
Kubernetes でのカスタムインスタンスタグの追加
方法 1 (推奨):Pod ラベルを使用したタグの挿入
ARMS エージェントが自動的にインストールされる Kubernetes 環境にアプリケーションがデプロイされている場合、Pod ラベルを使用してカスタムインスタンスタグを追加できます。
この方法は、Container Service for Kubernetes (ACK) と一般的な Kubernetes 環境の両方にデプロイされたアプリケーションに適しています。これらの環境で ARMS エージェントを自動的にインストールする方法については、「アプリケーションモニタリングの概要」をご参照ください。
ACK 環境にデプロイされたアプリケーションを例に説明します。
ACK コンソールで、ターゲットクラスターの[デプロイメント]または[ステートフルセット]ページに移動します。 ターゲット名前空間を選択し、ターゲットアプリケーションを見つけ、操作列でを選択します。 [YAML の編集]ダイアログボックスで、カスタムタグを追加し、[更新]をクリックします。 アプリケーションインスタンスが再起動し、新しいタグが適用されます。
'f:readyReplicas': {}
'f:replicas': {}
'f:updatedReplicas': {}
manager: kube-controller-manager
operation: Update
subresource: status
time: '2023-11-16T09:39:32Z'
name: mall-gateway
namespace: arms-apm-demo
resourceVersion: '943537'
uid: xxxd0b1bf76f42
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: mall-gateway
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
gitVersion: '1.0.2' # カスタムインスタンスタグを追加
app: mall-gateway
armsPilotAutoEnable: 'on'
armsPilotCreateAppName: mall-gateway
spec:
containers:
- env:
- name: SERVICE_NAME
方法 2:Pod 環境変数を使用したタグの挿入
-
Java アプリケーションでこの方法を使用するには、ARMS エージェントのバージョンが 4.0.0 以降である必要があります。
-
Go アプリケーションでこの方法を使用するには、ARMS エージェントのバージョンが 1.5.0 以降である必要があります。
-
Python アプリケーションでこの方法を使用するには、ARMS エージェントのバージョンが 1.3.0 以降である必要があります。
Pod の作成後にのみ使用可能なカスタムタグ (podName など) を挿入するには、アプリケーションコンテナの起動スクリプトにオペレーティングシステムの環境変数を追加することで挿入できます。次の手順に従います。
-
アプリケーションコンテナに環境変数 ARMS_HOST_TAGS を追加し、その値をインスタンスタグに設定します。複数のタグは、
key1:value1&key2:value2形式を使用して区切ります。例:export ARMS_HOST_TAGS="gitVersion:1.0.2&ip:192.168.1.101"。 -
変更を有効にするため、アプリケーションを再起動します。
手動でインストールしたエージェントのタグ追加
Java アプリケーション
方法 1:-D パラメーターの使用
Java アプリケーションの起動コマンドに -Darms.host.tags="${yourLabel}" パラメーターを追加します。
${yourLabel} を、追加するインスタンスタグに置き換えます。 複数のタグを指定する場合は key1:value1&key2:value2 形式を使用します。 たとえば、-Darms.host.tags="gitVersion:1.0.2&ip:192.168.1.101" のように指定します。
方法 2:設定ファイルの変更
エージェント v4.0.0 以降
-
「Java エージェントの設定ファイルとデフォルトのレポートリージョンを変更する」で説明されているように、任意のディレクトリに .properties 拡張子を持つ設定ファイルを作成します。 ファイルに、profiler.tags.customtags フィールドを追加し、その値をインスタンスタグに設定します。 複数のタグには、
key1:value1&key2:value2形式を使用します。 例:#profiler.tags.customtags=key1:value1&key2:value2 profiler.tags.customtags=gitVersion:1.0.2&ip:192.168.1.101 -
Java アプリケーションの起動パラメーターに
-Dotel.javaagent.configuration-file=${path/to/config/file}パラメーターを追加するか、OTEL_JAVAAGENT_CONFIGURATION_FILE=${path/to/config/file}環境変数を設定します。説明-
${path/to/config/file}を、作成した設定ファイルのフルパスに置き換えます。例:-Dotel.javaagent.configuration-file=/home/admin/config/agent-config.propertiesまたはOTEL_JAVAAGENT_CONFIGURATION_FILE=/home/admin/config/agent-config.properties。 -
起動パラメーターと環境変数の両方が設定されている場合、起動パラメーターが優先されます。
-
-
アプリケーションプロセスを再起動します。
v4.0.0 より前のエージェント
-
Java エージェントの設定ファイルとデフォルトのレポートリージョンを変更するで説明されているように、エージェントのインストールディレクトリにある
arms-agent.configファイルのprofiler.tags.customtagsフィールドを変更します。key1:value1&key2:value2形式でカスタムインスタンスタグを追加できます。例:#profiler.tags.customtags=key1:value1&key2:value2 profiler.tags.customtags=gitVersion:1.0.2&ip:192.168.1.101 -
アプリケーションプロセスを再起動します。
Go アプリケーション
環境変数を設定し、アプリケーションプロセスを再起動します。
#export ARMS_HOST_TAGS=key1:value1&key2:value2
export ARMS_HOST_TAGS="gitVersion:1.0.2&ip:192.168.1.101"
Python アプリケーション
環境変数を設定し、アプリケーションプロセスを再起動します。
#export ARMS_HOST_TAGS=key1:value1&key2:value2
export ARMS_HOST_TAGS="gitVersion:1.0.2&ip:192.168.1.101"
Pod ラベルを使用したアプリケーションタグの挿入
-
Java アプリケーションでは、Pod ラベルを使用したアプリケーションタグの挿入は、ack-onepilot コンポーネント v3.0.16 以降でサポートされます。
-
Go アプリケーションでは、Pod ラベルを使用したアプリケーションタグの挿入は、ack-onepilot コンポーネント v3.2.0 以降でサポートされます。
-
Python アプリケーションでは、Pod ラベルを使用したアプリケーションタグの挿入は、ack-onepilot コンポーネント v4.1.1 以降でサポートされます。
-
方法 2 を使用したアプリケーションタグの挿入は、ack-onepilot v4.1.2 以降でサポートされます。
方法 1:
ポッドラベルに app.customAppKey. プレフィックスがある場合、ARMS はそれをインスタンスタグではなく、アプリケーションタグとして識別します。
たとえば、次のコードでは、ARMS はこのワークロードに関連付けられたアプリケーションにアプリケーションタグ env: dev を追加します。
template:
metadata:
labels:
app.customAppKey.env: dev
app: mall-gateway
armsPilotAutoEnable: 'on'
aliyun.com/app-language: golang # Go アプリケーションがアプリケーション言語を識別するために必要。Java アプリケーションには不要。
armsPilotCreateAppName: mall-gateway
方法 2:
既存の Pod ラベルをアプリケーションタグとして再利用するには、ack-onepilot コンポーネントを設定します。
前提条件
ack-onepilot のバージョンが 4.1.2 以降であること。
操作手順
-
ack-onepilot コンポーネントの Deployment を見つけます。通常、名前は ack-onepilot-ack-onepilot で、ack-onepilot 名前空間にあります。
Deployment の Pod の準備状態が 2/2 と表示されていることを確認します。これは、ack-onepilot コンポーネントが正常に動作していることを示します。
-
ack-onepilot コンポーネントの Deployment に
ARMS_APP_LABELS環境変数を追加します。この変数は、キーをカンマで区切った文字列です。これを設定すると、/spec/template/metadata/labelsに含まれるキーのうち、ARMS_APP_LABELS変数にリストされているものがアプリケーションタグとして識別されます。たとえば、
ARMS_APP_LABELSの値をenv,groupに設定すると、Pod ラベル内のキーenvとgroupを持つタグがアプリケーションタグとして識別されます。 -
ack-onepilot コンポーネントが再起動してヘルスチェックに合格するまで待ちます。その後、アプリケーションを再起動してアプリケーションタグを適用します。
ACK コンソールの ack-onepilot-ack-onepilot Deployment の詳細ページで、準備完了状態が 2/2 で、すべての Pod の状態が [Running] であることを確認します。これは、コンポーネントの準備ができていることを示します。
-
ARMS において、アプリケーションとはアプリケーションインスタンスの集合を表す概念です。アプリケーションは複数のインスタンスを持つことができ、複数のワークロードまたは Kubernetes クラスターから構成されることがあります。したがって、Pod ラベルを使用したアプリケーションタグの挿入は DevOps シナリオでは便利ですが、一定の制限があります。
-
Pod ラベルを通じて挿入されたアプリケーションタグは追加しかできません。YAML からラベルを削除してもタグは削除されません。タグを変更または削除するには、ARMS コンソールまたは OpenAPI を使用する必要があります。
-
複数のワークロードが同じ ARMS アプリケーションにマッピングされる場合、Pod ラベルを使用したアプリケーションタグの挿入によって競合が発生する可能性があります。これらのワークロード間でアプリケーションタグの一貫性を確保してください。
アプリケーションタグの使用
アプリケーションのフィルタリング
ARMS の [アプリケーション一覧] ページおよびアラートルールの作成時に、アプリケーションタグを使用してアプリケーションをすばやくフィルタリングできます。
タグベースのアクセス制御
アプリケーションタグに基づいて Resource Access Management (RAM) の権限を管理できます。詳細については、「アプリケーションモニタリングのカスタム RAM ポリシー」をご参照ください。
インスタンスタグの使用
インスタンスタグによるデータのフィルタリング
-
ARMS コンソールにログインします。左側のナビゲーションペインで、を選択します。
-
アプリケーションリスト ページの上部でリージョンを選択し、目的のアプリケーション名をクリックします。
説明言語 列のアイコンは、アプリケーションのプログラミング言語を示します:
: アプリケーションモニタリングに接続された Java アプリケーション。
: アプリケーションモニタリングに接続された Go アプリケーション。
: アプリケーションモニタリングに接続された Python アプリケーション。[-]: OpenTelemetry マネージドサービスに接続されているアプリケーション。
-
アプリケーション詳細ページでは、インスタンスタグを使用してモニタリングデータをフィルタリングできます。たとえば、イメージバージョン番号に基づいてデータを比較および分析できます。
Grafana でのタグによるメトリクスのクエリ
-
ARMS コンソールにログインします。左側のナビゲーションペインで、 を選択します。
-
アプリケーションリスト ページで、上部でリージョンを選択し、目的のアプリケーション名をクリックします。
説明言語 列のアイコンは、アプリケーションのプログラミング言語を示します。
: アプリケーションモニタリングに接続された Java アプリケーション。
: アプリケーションモニタリングに接続された Go アプリケーション。
: アプリケーションモニタリングに接続された Python アプリケーション。[-]: Managed Service for OpenTelemetry に接続されているアプリケーション。
-
左側のナビゲーションペインで、[Grafana ビュー] をクリックします。 ページの上部で、さまざまなタグを選択してメトリックをフィルターします。

> [YAML で表示]