Application Real-Time Monitoring Service (ARMS) のタグ付け機能を使用すると、メトリクス、トレース、ログなどのモニタリングデータを新しいディメンションで整理および監視できます。このトピックでは、アプリケーションにタグを追加する方法、アプリケーションタグを使用してアプリケーションをフィルタリングし、権限を管理する方法、および [アプリケーション詳細] ページと [Grafana ビュー] でインスタンスのタグを使用してモニタリングデータをフィルタリングする方法について説明します。
前提条件
アプリケーションがアプリケーションモニタリングに接続されていること。詳細については、「アプリケーションモニタリングの概要」をご参照ください。
Java アプリケーションの場合は、次の要件も満たす必要があります。
コンテナクラスター内のアプリケーションの場合、ack-onepilot コンポーネントがバージョン 3.0.4 以降であり、ARMS エージェントがバージョン 2.7.3.5 以降であることを確認してください。
他の環境のアプリケーションについては、ARMS エージェントがバージョン 2.7.3.5 以降であることを確認してください。最新の ARMS エージェントインストールパッケージは、ARMS コンソールの ページの [エージェントリリースノート] タブからダウンロードできます。
タグの種類
アプリケーションモニタリングでは、アプリケーションタグとインスタンスのタグという 2 種類のタグが提供されます。ユースケースに適したタグの種類を選択してください。どちらのタイプもキーと値のペアの構造を使用しており、複数のキーと値のペアを同時に追加できます。
アプリケーションタグ
アプリケーションタグは ARMS アプリケーションに適用されます。ARMS コンソールの ページでアプリケーションタグを表示または変更できます。アプリケーションタグを使用して、アプリケーションのフィルタリング、権限の管理、コストの割り当てができます。
インスタンスのタグ
ARMS では、1 つのアプリケーションに複数のアプリケーションインスタンスを含めることができ、それぞれがアプリケーションプロセスを表します。アプリケーションのすべてのインスタンスは、同じアプリケーション名で ARMS に接続します。アプリケーションタグとは異なり、インスタンスのタグはアプリケーションインスタンスに適用されます。同じアプリケーションに属する異なるアプリケーションインスタンスは、異なるインスタンスのタグを持つことができます。
ARMS は、Kubernetes 環境で検出されたアプリケーションインスタンスに、次のデフォルトのインスタンスのタグを自動的に追加します。
タグキー | 説明 |
workloadKind | アプリケーションインスタンスが属するワークロードの種類 (Deployment など)。 |
workloadName | アプリケーションインスタンスが属するワークロードの名前。 |
clusterName | アプリケーションインスタンスが配置されている Kubernetes クラスターの名前。 |
namespace | アプリケーションインスタンスが配置されている Kubernetes 名前空間。 |
version | イメージタグ。 これはカスタムインスタンスのタグで上書きできます。 |
agentVersion | エージェントのバージョン。 |
デフォルトのインスタンスのタグに加えて、カスタムインスタンスのタグを追加できます。インスタンスは、親アプリケーションからすべてのアプリケーションタグも継承します。アプリケーションインスタンスからのモニタリングデータには、そのインスタンスのタグが含まれます。
カスタムインスタンスのタグのキーは、正規表現 ^[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.2}。
カスタムインスタンスのタグの追加
Kubernetes クラスターでのカスタムインスタンスのタグの追加
方法 1 (推奨):Pod ラベルを使用したタグの挿入
アプリケーションが Kubernetes 環境にデプロイされ、ARMS エージェントが自動的にインストールされている場合、Pod ラベル を使用してカスタムインスタンスのタグを追加できます。
この方法は、Container Service for Kubernetes (ACK) と一般的な Kubernetes 環境の両方にデプロイされたアプリケーションに適用されます。これらの環境でエージェントを自動的にインストールする方法については、「アプリケーションモニタリングの概要」をご参照ください。
次の例は、ACK 環境のアプリケーションでこれを行う方法を示しています。
ACK コンソールで、対象クラスターの Deployment または StatefulSet ページで、ページ上部で対象の名前空間を選択します。対象アプリケーションの右側で、 を選択します。[YAML の編集] ダイアログボックスで、カスタムタグを追加し、[更新] をクリックします。アプリケーションインスタンスが再起動され、新しいインスタンスのタグが追加されます。
方法 2:Pod 環境変数を使用したタグの挿入
Java アプリケーションの場合は 4.0.0 以降。
Go アプリケーションの場合は 1.5.0 以降。
Python アプリケーションの場合は 1.3.0 以降。
podName のように、Pod が作成された後にのみ利用可能になるカスタムタグについては、アプリケーションコンテナの起動スクリプトに環境変数を追加することで挿入できます。次の手順を実行します。
アプリケーションコンテナに
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:設定ファイルの変更
エージェントバージョン 4.0.0 以降
任意のディレクトリに
.propertiesのサフィックスを持つ設定ファイルを作成します。詳細については、「Java エージェントの設定とデフォルトのレポートリージョンの変更」をご参照ください。ファイルに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.101Java アプリケーションの起動パラメーターに
-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。起動コマンドと環境変数の両方を設定した場合、起動コマンドが優先されます。
アプリケーションプロセスを再起動します。
エージェントバージョン 4.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アプリケーションプロセスを再起動します。
Golang アプリケーション
環境変数を設定し、アプリケーションプロセスを再起動します。
#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 アプリケーションの場合は 3.0.16 以降。
Go アプリケーションの場合は 3.2.0 以降。
Python アプリケーションの場合は 4.1.1 以降。
方法 2 には ack-onepilot バージョン 4.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 を見つけます。通常、名前は
ack-onepilot-ack-onepilotで、ack-onepilot名前空間にあります。
ack-onepilot Deployment に
ARMS_APP_LABELS環境変数を追加します。この変数はカンマ区切りの文字列です。この変数を追加すると、ARMS_APP_LABELSにリストされている Pod ラベルキーはすべてアプリケーションタグキーとして扱われます。
ack-onepilot コンポーネントが再起動し、ヘルスチェックに合格するのを待ちます。その後、ビジネスアプリケーションを再起動して、対応するアプリケーションタグを適用します。

ARMS では、アプリケーションはインスタンスのコレクションを表し、複数のワークロードや Kubernetes クラスターにまたがることがあります。したがって、Pod ラベルを使用してアプリケーションタグを挿入することは、DevOps シナリオの便宜のためであり、特定の制限があります。
Pod ラベルを使用して挿入されたアプリケーションタグは追加式です。既存のタグキーを変更または削除するには、まず YAML ファイルを更新し、その後 ARMS コンソールまたは API を使用して変更を完了する必要があります。
複数のワークロードが同じ ARMS アプリケーションに接続する場合、Pod ラベルを使用して挿入されたアプリケーションタグが競合を引き起こす可能性があります。ワークロード間でアプリケーションタグの一貫性を確保する必要があります。
アプリケーションタグの使用
アプリケーションのフィルタリング
アプリケーション一覧などの機能や、アラートルールの作成時に、アプリケーションタグに基づいてアプリケーションをすばやくフィルタリングできます。
タグを使用した権限の管理
アプリケーションタグに基づいて RAM 権限を管理できます。詳細については、「アプリケーションモニタリングの RAM 認可ポリシーのカスタマイズ」をご参照ください。
インスタンスのタグの使用
アプリケーション詳細でのインスタンスのタグによるデータのフィルタリング
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[アプリケーション一覧] ページで、上部でリージョンを選択し、対象アプリケーションの名前をクリックします。
説明[言語] 列のアイコンは次のことを示します。
:アプリケーションモニタリングに接続された Java アプリケーション。
:アプリケーションモニタリングに接続された Golang アプリケーション。
:アプリケーションモニタリングに接続された Python アプリケーション。-:OpenTelemetry 向けマネージドサービスに接続されたアプリケーション。
アプリケーション詳細のさまざまなページで、インスタンスのタグによってモニタリングデータをフィルタリングできます。たとえば、イメージのバージョン番号に基づいてデータを比較・分析できます。
Grafana ビューでのインスタンスのタグによるメトリクスのクエリ
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[アプリケーション一覧] ページで、上部でリージョンを選択し、対象アプリケーションの名前をクリックします。
説明[言語] 列のアイコンは次のことを示します。
:アプリケーションモニタリングに接続された Java アプリケーション。
:アプリケーションモニタリングに接続された Golang アプリケーション。
: アプリケーションモニタリングに接続された Python アプリケーション。-:OpenTelemetry 向けマネージドサービスに接続されたアプリケーション。
左側のナビゲーションウィンドウで、[Grafana ビュー] をクリックします。ページの上部で、さまざまなタグを選択して、対応する監視メトリクスを表示します。

> [YAML の編集]