ARMS のタグ機能は、アプリケーションのメトリクス、トレース、ログなどのモニタリングデータを整理・監視するための新しいディメンションを提供します。このトピックでは、フィルタリングと権限管理のためにアプリケーションにタグを追加する方法、および [アプリケーション詳細] と [Grafana ビュー] のページでインスタンスのタグを使用してアプリケーションのモニタリングデータをフィルタリングする方法について説明します。
前提条件
アプリケーションが ARMS アプリケーションモニタリングによって監視されていること。詳細については、「アプリケーションモニタリングの概要」をご参照ください。
Java アプリケーションは、以下の要件も満たす必要があります。
Kubernetes クラスター内のアプリケーションの場合、ack-onepilot コンポーネントが v3.0.4 以降であり、ARMS エージェントが v2.7.3.5 以降であることを確認してください。
他の環境のアプリケーションについては、ARMS エージェントが v2.7.3.5 以降であることを確認してください。最新の ARMS エージェントは、ARMS コンソールのにある[エージェントリリースノート] タブからダウンロードできます。
タグの種類
ARMS アプリケーションモニタリングは、アプリケーションタグとインスタンスのタグの 2 種類のタグを提供します。ユースケースに基づいて適切なタグの種類を選択してください。アプリケーションタグとインスタンスのタグはどちらもキーと値のペアを使用し、同時に複数のキーと値のペアを追加できます。
アプリケーションタグ
アプリケーションタグは、アプリケーションレベルで適用されます。ARMS コンソールの ページで、アプリケーションタグを表示または変更できます。アプリケーションタグを使用すると、アプリケーションのフィルタリング、アプリケーション権限の管理、コスト配分を行うことができます。
インスタンスのタグ
ARMS では、1 つのアプリケーションが複数のアプリケーションインスタンスで構成されることがあります。各インスタンスは、同じアプリケーション名で ARMS に接続されたアプリケーションプロセスを表します。アプリケーションタグとは異なり、インスタンスのタグはインスタンスレベルで適用されるため、同じアプリケーション内の異なるインスタンスが、それぞれ異なるインスタンスのタグを持つことができます。
Kubernetes 環境でアプリケーションモニタリングに自動的に接続されるアプリケーションインスタンスの場合、ARMS は以下のデフォルトのインスタンスのタグを追加します。
タグキー | 説明 |
workloadKind | アプリケーションインスタンスが属するワークロードの種類 (Deployment など)。 |
workloadName | アプリケーションインスタンスが属するワークロードの名前。 |
clusterName | アプリケーションインスタンスが配置されている Kubernetes クラスターの名前。 |
namespace | アプリケーションインスタンスが配置されている Kubernetes 名前空間。 |
version | イメージタグ。 カスタムインスタンスのタグでこれを上書きできます。 |
agentVersion | エージェントのバージョン。 |
デフォルトのインスタンスのタグに加えて、カスタムインスタンスのタグを追加できます。アプリケーションインスタンスは、そのアプリケーションからタグを完全に継承します。ARMS がアプリケーションインスタンスに対して生成するモニタリングデータには、そのすべてのインスタンスのタグが含まれます。
カスタムインスタンスのタグキーは、Prometheus の命名規則に従う必要があります。これは正規表現 ^[a-zA-Z_][a-zA-Z0-9_]*$ に準拠します。このパターンに一致しないキーの場合、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.2}。
カスタムインスタンスのタグの追加
Kubernetes アプリケーションへのカスタムインスタンスのタグの追加
方法 1 (推奨):Pod ラベルによるタグのインジェクション
ARMS エージェントが自動的にインストールされた Kubernetes 環境にデプロイされたアプリケーションの場合、Pod ラベルを使用してカスタムインスタンスのタグを追加できます。
この方法は、ACK クラスターと自己管理 Kubernetes 環境の両方にデプロイされたアプリケーションに適しています。エージェントを自動的にインストールする方法については、「アプリケーションモニタリングの概要」をご参照ください。
次の例は、ACK クラスターにデプロイされたアプリケーションにタグを追加する方法を示しています。
ACK コンソールで、ご利用のクラスターに移動します。[Deployment] または [StatefulSet] ページに移動し、上部でターゲットの名前空間を選択します。ターゲットアプリケーションを見つけ、[操作] 列から を選択します。[YAML の編集] ダイアログボックスで、カスタムタグを追加し、[更新] をクリックします。その後、アプリケーションインスタンスが再起動し、新しいインスタンスのタグが適用されます。
方法 2:Pod の環境変数によるタグのインジェクション
Java アプリケーションでこの方法を使用するには、エージェントのバージョンが 4.0.0 以降である必要があります。
Go アプリケーションでこの方法を使用するには、エージェントのバージョンが 1.5.0 以降である必要があります。
Python アプリケーションでこの方法を使用するには、エージェントのバージョンが 1.3.0 以降である必要があります。
Pod が作成された後にのみ利用可能ないくつかのカスタムタグ (podName など) については、アプリケーションコンテナの起動スクリプトに OS 環境変数を追加することでインジェクトできます。
アプリケーションコンテナに
ARMS_HOST_TAGSという名前の環境変数を追加します。その値にインスタンスのタグを設定します。複数のタグにはkey1:value1&key2:value2のフォーマットを使用します。例:export ARMS_HOST_TAGS="gitVersion:1.0.2&ip:192.168.1.101"。環境変数が有効になった後、アプリケーションプロセスを開始します。
手動エージェントを使用するアプリケーション
Java
方法 1:-D コマンドラインパラメーターの追加
-Darms.host.tags="${yourLabel}" パラメーターを Java アプリケーションの起動コマンドに追加します。
${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-Dotel.javaagent.configuration-file=${path/to/config/file}パラメーターまたはOTEL_JAVAAGENT_CONFIGURATION_FILE=${path/to/config/file}環境変数を Java アプリケーションの起動設定に追加します。説明${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 アプリケーションの場合、この機能は ack-onepilot v3.0.16 以降でのみサポートされます。
Go アプリケーションの場合、この機能は ack-onepilot v3.2.0 以降でのみサポートされます。
Python アプリケーションの場合、この機能は ack-onepilot v4.1.1 以降でのみサポートされます。
方法 2 は、ack-onepilot v4.1.2 以降でのみサポートされます。
方法 1:
Pod ラベルにプレフィックス 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 を見つけます。通常、この Deployment は
ack-onepilot-ack-onepilotという名前で、ack-onepilot名前空間にあります。
ack-onepilot の Deployment に
ARMS_APP_LABELSという名前の環境変数を追加します。その値には、ラベルキーをカンマ区切りの文字列で設定します。この設定後、ARMS は/spec/template/metadata/labels配下にあるキーのうち、ARMS_APP_LABELS変数にもリストされているものをアプリケーションタグとして認識します。
ack-onepilot コンポーネントが再起動し、ヘルスチェックに合格するのを待ちます。その後、ビジネスアプリケーションを再起動して、対応するアプリケーションタグを適用します。

ARMS において、アプリケーションは論理的なグループ化であり、複数のワークロードや複数の Kubernetes クラスターにまたがる複数のアプリケーションインスタンスを表すことができます。したがって、Pod ラベルを使用したアプリケーションタグの挿入は便利な DevOps プラクティスですが、制限事項もあります。
Pod ラベルを使用して挿入されたアプリケーションタグは追加のみ可能です。既存のタグキーを変更または削除するには、まず YAML ファイルを変更してから、ARMS コンソールで操作を実行するか、API を呼び出す必要があります。
複数のワークロードが同じ ARMS アプリケーションに接続されている場合、Pod ラベルを使用してアプリケーションタグを挿入すると競合が発生する可能性があります。すべてのワークロードでアプリケーションタグの一貫性を確保する必要があります。
アプリケーションタグの使用
アプリケーションのフィルター
アプリケーションタグを使用すると、[アプリケーション一覧] ページやアラートルールを作成する際に、アプリケーションをすばやくフィルターできます。
タグベースの権限管理
アプリケーションタグに基づいて RAM 権限を管理できます。詳細については、「アプリケーションモニタリングのカスタム RAM 認可ポリシー」をご参照ください。
インスタンスのタグの使用
インスタンスのタグによるデータのフィルター
ARMS コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
[アプリケーションリスト] ページで、上部のリージョンを選択し、対象のアプリケーション名をクリックします。
説明[言語] 列のアイコンは、以下を表します:
:アプリケーションモニタリングに接続されている Java アプリケーション。
:アプリケーションモニタリングに接続されている Go アプリケーション。
:アプリケーションモニタリングに接続されている Python アプリケーション。-:OpenTelemetry 向けマネージドサービスに接続されているアプリケーション。
アプリケーション詳細内のさまざまなページで、インスタンスのタグによってモニタリングデータをフィルターできます。 たとえば、イメージのバージョン番号に基づいてデータを比較・分析できます。
Grafana ビューでのタグによるメトリクスのクエリ
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。
[アプリケーションリスト] ページで、上部のリージョンを選択し、対象のアプリケーション名をクリックします。
説明[言語] 列のアイコンは、以下を表します:
:アプリケーションモニタリングに接続されている Java アプリケーション。
:アプリケーションモニタリングに接続されている Go アプリケーション。
:アプリケーションモニタリングに接続されている Python アプリケーション。-:OpenTelemetry 向けマネージドサービスに接続されているアプリケーション。
左側のナビゲーションウィンドウで、[Grafana ビュー] をクリックします。 ページの上部で、異なるタグを選択して、対応する監視メトリクスを表示します。

> YAML の編集