Application Real-Time Monitoring Service (ARMS) のタグを使用すると、アプリケーション監視メトリクス、トレース、ログなどのデータを整理および監視できます。このトピックでは、アプリケーションをタグセンターに接続する方法、アプリケーションにタグを追加する方法、およびタグを使用してアプリケーションの詳細ページと Grafana ビューページでメトリクスをクエリする方法について説明します。
前提条件
アプリケーションはアプリケーション監視によって監視されます。詳細については、アプリケーション監視の概要を参照してください。
Java アプリケーションの場合、次の要件を満たす必要があります。
アプリケーションが Kubernetes クラスタにデプロイされている場合、ack-onepilot のバージョンは V3.0.4 以降、ARMS エージェントのバージョンは V2.7.3.5 以降である必要があります。
アプリケーションが別の環境にデプロイされている場合、ARMS エージェントのバージョンは V2.7.3.5 以降である必要があります。ARMS エージェントの最新のインストールパッケージを入手するには、次の操作を実行します。ARMS コンソールにログインします。左側のナビゲーションペインで、 を選択します。[エージェント管理] ページで、エージェントリリースノート タブをクリックします。
タグの種類
アプリケーション監視は、アプリケーションタグとインスタンスタグを提供します。ビジネス要件に基づいてタグの種類を選択します。アプリケーションタグとインスタンスタグはどちらもキーと値のペアを使用します。複数のキーと値のペアを同時に追加できます。
アプリケーションタグ
アプリケーションタグを表示または変更するには、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 にはインスタンス A とインスタンス B の 2 つのインスタンスが含まれています。インスタンス B のメトリックには、次のタグが付いています:env: Dev, team: Observability, app: my-app, workloadKind: Deployment, workloadName: my-app, clusterName: ClusterA, namespace: nsA, and gitVersion: 1.0.2
。
カスタムインスタンスタグを追加する
Kubernetes 環境にデプロイされたアプリケーションにカスタムインスタンスタグを追加する
方法 1 (推奨): Pod ラベルを使用してカスタムインスタンスタグを追加する
Kubernetes 環境にデプロイされ、ARMS エージェントが自動的にインストールされているアプリケーションには、Pod ラベルを使用してカスタムインスタンスタグを追加できます。
この方法は、Container Service for Kubernetes (ACK) またはその他の Kubernetes 環境にデプロイされたアプリケーションに適しています。ACK またはその他の Kubernetes 環境にデプロイされたアプリケーションに ARMS エージェントを自動的にインストールする方法については、アプリケーション監視の概要を参照してください。
ACK クラスタにデプロイされたアプリケーションを例にとります。
ACK コンソールにログインします。クラスタ詳細ページの左側のナビゲーションペインで、デプロイメントまたはステートフルセットをクリックします。表示されるページで、名前空間を選択し、デプロイメントまたはステートフルセットを見つけて、[アクション] 列で を選択します。YAML の編集ダイアログボックスで、カスタムタグを追加し、更新をクリックします。アプリケーションインスタンスが再起動され、新しいインスタンスタグが追加されます。
方法 2: Pod 環境変数を使用してカスタムインスタンスタグを追加する
この方法は、Java アプリケーションの ARMS エージェント V4.0.0 以降でのみサポートされています。
podName など、Pod が作成された後にのみ取得できるカスタムインスタンスタグを追加するには、コンテナの起動スクリプトに環境変数を追加します。次の手順を実行します。
ARMS_HOST_TAGS という名前の環境変数をコンテナに追加します。値をインスタンスタグに設定します。形式:
key1:value1&key2:value2
。例:export ARMS_HOST_TAGS="gitVersion:1.0.2&ip:192.168.1.101"
。環境変数が有効になったら、プロセスを開始します。
ARMS エージェントを手動でインストールしたアプリケーションにカスタムインスタンスタグを追加する
Java アプリケーション
方法 1: -D コマンドラインパラメータを追加する
-Darms.host.tags="${yourLabel}"
という名前の -D コマンドラインパラメータをアプリケーションの起動パラメータに追加します。
${yourLabel}
を追加するインスタンスタグに置き換えます。形式:key1:value1&key2:value2
。例:-Darms.host.tags="gitVersion:1.0.2&ip:192.168.1.101"
。
方法 2: 構成ファイルを変更する
V4.0.0 より前の ARMS エージェント
ARMS エージェントを手動でインストールしたアプリケーションにカスタムインスタンスタグを追加するには、エージェントインストールパッケージの arms-agent.config 構成ファイルの profile.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 プロセスを再起動します。
ARMS エージェント V4.0.0 以降
ディレクトリに .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}
をアプリケーションの起動パラメータに追加します。${path/to/config/file}
を構成ファイルのフルパスに置き換えます。例:-Dotel.javaagent.configuration-file=/home/admin/config/agent-config.properties
。Java プロセスを再起動します。
Go アプリケーション
環境変数を宣言し、アプリケーションプロセスを再起動します。
#export PROFILER_TAGS_CUSTOMTAGS=key1:value1
export PROFILER_TAGS_CUSTOMTAGS=gitVersion:1.0.2
Pod ラベルを使用して Kubernetes 環境にデプロイされたアプリケーションにアプリケーションタグを追加する
Java アプリケーションの場合、ack-onepilot コンポーネント V3.0.16 以降のみがアプリケーションタグをサポートしています。
Pod ラベルにプレフィックス app.customAppKey.
が付いている場合、インスタンスタグではなくアプリケーションタグとして認識されます。
次のコードでは、ARMS はアプリケーションタグ env: dev をアプリケーションに追加します。
template:
metadata:
labels:
app.customAppKey.env: dev
app: mall-gateway
armsPilotAutoEnable: 'on'
aliyun.com/app-language: golang # Go アプリケーションを指定します。
armsPilotCreateAppName: mall-gateway
ARMS では、アプリケーションは複数のアプリケーションインスタンスの集合です。複数のアプリケーションインスタンスを持つことも、複数のワークロードまたは Kubernetes クラスタに属することもできます。Pod ラベルを使用して、DevOps シナリオでアプリケーションタグを効率的に追加できます。ただし、この方法にはいくつかの制限があります。
Pod ラベルを使用して追加されたアプリケーションタグは、直接削除または変更することはできません。既存のタグキーを変更または削除するには、YAML ファイルを変更してから、ARMS コンソールまたは API 操作を使用する必要があります。
複数のワークロードが同じアプリケーションに属している場合、Pod ラベルを使用して追加されたアプリケーションタグが互いに競合する可能性があります。アプリケーションタグの一貫性を確保する必要があります。
アプリケーションタグを使用する
アプリケーションクエリ
ARMS コンソールでアプリケーションリストを表示したり、アラートルールを作成したりする場合、アプリケーションタグを使用してアプリケーションをクエリできます。
タグベースの権限管理
アプリケーションタグに基づいて RAM 権限を管理できます。詳細については、カスタムポリシーを RAM ユーザーにアタッチするを参照してください。
インスタンスタグを使用する
アプリケーション詳細ページで監視データをクエリする
ARMS コンソールにログインします。左側のナビゲーションペインで、 を選択します。
アプリケーションリストページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明言語列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
: Java アプリケーション
: Go アプリケーション
: Python アプリケーション
ハイフン (-): Managed Service for OpenTelemetry で監視されるアプリケーション。
アプリケーション詳細ページのさまざまなモジュールで、インスタンスタグを使用して監視データをクエリできます。たとえば、イメージバージョンに基づいて監視データを比較および分析できます。
Grafana ビューページでメトリクスをクエリする
ARMS コンソールにログインします。左側のナビゲーションペインで、 を選択します。
アプリケーションリストページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明言語列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
: Java アプリケーション
: Go アプリケーション
: Python アプリケーション
ハイフン (-): Managed Service for OpenTelemetry で監視されるアプリケーション。
左側のナビゲーションペインで、Grafana ビューをクリックします。表示されるページで、タグを構成してメトリクスを表示します。