Instana エージェントを使用した Microsoft® Azure の監視と計測
Instana ホストエージェントをインストールすると、 Microsoft® Azure センサーが自動的にインストールされます。 「設定」セクションの手順に従って Microsoft® Azure センサーを設定すると、 Instana のUIで Microsoft® Azure に関連するメトリクスを確認できるようになります。
モニター対象のサービス
Instana ホストエージェントは、 Azure APIからデータを収集することで、 Azure が管理するサービスを監視します。 Instana 以下の Azure サービスの監視に対応しています:
インスツルメントされたサービス
以下のサービスをご利用いただけます:
補足情報
サポート対象のオペレーティング・システム
Microsoft® Azure センサーのサポートされているオペレーティング システムは、ホスト エージェントの要件と一致しています。 詳細については、各 Instana ホストエージェントの対応 OSをご確認ください。
センサーの仕様と監視機能
Azure のセンサーバージョンによって、サブスクリプションの監視機能が決定されます:
| センサーのバージョン | サブスクリプションサポート | 説明 |
|---|---|---|
| 1.2.x およびそれ以前 | シングル購読 | 単一のテナント内の単一の Azure サブスクリプション内のリソースを監視します |
| 1.3.x そしてその後 | 複数の定期購読 | 単一のテナント内で、複数の Azure サブスクリプションにまたがるリソースを監視します |
Instana エージェントのインストール
Azure Kubernetes Service 上で動作する Azure 仮想マシンまたは Kubernetes クラスタを監視するには、 「 Instana ホストエージェントのインストール」 を参照してください。
AGENT_MAX_MEM 値より大きい値に設定 544 MiBすることで、エージェントのメモリを増やすことができます。例えば、エージェントに1GBのメモリを割り当てるには、AGENT_MAX_MEM=1024Mとします。
Azure 環境の内外にあるホストに、 Instana ホストエージェントをインストールします。 Instana 1つのテナント内で、1つ以上の Azure サブスクリプションの監視をサポートしています。 1つの Instana エージェントで、 Azure リモートサービスのシングルサブスクリプションおよびマルチサブスクリプションの両方の監視に対応しています。 単一サブスクリプションの監視については、 単一サブスクリプションの監視設定に従ってください。 複数の Azure サブスクリプションを監視するには、 マルチサブスクリプション監視の設定手順に従ってください。
Azure 環境の外に Instana エージェントをインストールする
Instana エージェントを Azure 環境の外にインストールした場合、エージェントはデフォルトで Azure のパブリッククラウドエンドポイントを使用します。
使用する Azure クラウドエンドポイントを指定するには、/opt/instana/agent/etc/instana/configuration.yaml エージェント設定ファイルを次のように変更します:
com.instana.plugin.azure:
cloud: 'AzurePublicCloud'
Azure クラウドエンドポイント
使用する Azure クラウドエンドポイントに応じて、以下のクラウド設定値から選択できます: AzurePublicCloud、 AzureChinaCloud、 AzureUSGovernmentCloud、および AzureGermanCloud。 Azure のクラウドエンドポイントに関する詳細については、 「 Azure のクラウドエンドポイント」 をご覧ください。
選択した Azure クラウド環境について、以下のネットワークエンドポイントにアクセスできることを確認してください:
| Azure クラウドエンドポイント | Active Directory エンドポイント | 管理エンドポイント |
|---|---|---|
AzurePublic: Microsoft Azure パブリッククラウド |
https://login.microsoftonline.com |
https://management.azure.com/ |
AzureChina: マイクロソフト中国国内クラウド |
https://login.chinacloudapi.cn/ |
https://management.chinacloudapi.cn/ |
AzureGermany: マイクロソフト ドイツ国内クラウド |
https://login.microsoftonline.de/ |
https://management.microsoftazure.de/ |
AzureUsGovernment: 米国政府のクラウド |
https://login.microsoftonline.us/ |
https://management.usgovcloudapi.net/ |
Azure サービスの外部からの監視を有効にするには、お使いの Azure クラウド環境に応じて、ファイアウォールを設定し、上記の REST API エンドポイントへのアクセスを許可してください。 また、 Azure のクラウドエンドポイントの有無にかかわらず、主にDatabricksで必要となるLog Analyticsエンドポイントへのファイアウォールアクセスが許可されていることを確認 https://api.loganalytics.ioしてください。
Instana の Azure 監視
Instana Azure のリソースは、主に2つの方法で確認できます:
- VM メタデータ・サービス: Instana エージェントは、 Azure インスタンス・メタデータ・サービス(IMDS)にクエリ
http://169.254.169.254/metadata/instanceを送信し、エージェントがインストールされている VM インスタンスに関する基本情報を収集します。 - Azure Resource Manager (ARM) API : Instana は、ARM API を使用して、サブスクリプション内に存在する Azure リソースを検出します。
クライアントID、クライアントシークレット、およびテナントIDは、設定ファイルを通じて指定できます。 Instana アクセストークンを自動的に取得・更新し、付与された権限に基づいて、必要な Azure APIへのアクセスに使用します。
認証 URL : {activeDirectoryEndpoint} + {TenantId} + /oauth2/token
検出された各リソースに登録されたセンサーは、 Azure Monitor API を使用して、そのリソースのメトリクスとメタデータを定期的に収集します。
Azure API
Azure Resource Manager (ARM) API : Instana は、ARM API を使用して、サブスクリプション内の Azure リソースを検出し、名前、タイプ、場所、タグなどの構成詳細を収集します。 Instana また、これらの詳細情報を利用して、リソース同士がどのように関連しているかを把握します。
ARMの API エンドポイントは、通常、次のようなパターンを使用します: https://{managementendpoint}/subscriptions/{subscriptionId}/...
https://management.azure.com/subscriptions/{subscriptionId}/...https://management.usgovcloudapi.net/subscriptions/{subscriptionId}/...
Azure API の監視 : Instana は、ARM 管理エンドポイントを共有する Azure Monitor API を使用して、 Azure リソースに関するメトリクス、ログ、ヘルス情報などの監視データを収集します。
Azure API のエンドポイントの監視では、通常、次のようなパターンが使用されます: https://{managementendpoint}/subscriptions/{subscriptionId}/providers/Microsoft.Insights/...
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Insights/...https://management.usgovcloudapi.net/subscriptions/{subscriptionId}/providers/Microsoft.Insights/...
サービス・プリンシパル
1. サービスプリンシパルの作成
Azure の監視を有効にするには、少なくとも「reader」権限を持つサービスプリンシパルを使用してホストエージェントを設定してください。 サービスプリンシパルは、 Azure ポータル、 Azure CLI、または Azure PowerShell を使用して作成できます。
Azure ポータルでサービスプリンシパルを作成する
以下の手順では、 Azure ポータル内のリソースに対して読み取りアクセス権を持つサービスプリンシパルアカウントを作成する方法について説明します。
Azure ポータルでアプリケーションを登録し、サービスプリンシパルを作成します:
- Azure 管理ポータルを開き、Microsoft Entra ID を選択します。
- テナントID の値をコピーしてください。 この値は、エージェントが Azure アカウントに接続するように設定するために必要です。
- ナビゲーション・ペインで 「アプリ登録」 を選択します。
- [アプリ登録] タブの上部にある [新規登録] を選択して、新しいアプリを作成します。
- アプリケーションの名前を入力し、その他の設定はすべてデフォルト値のままにして、「 登録」 を選択してください。
- アプリケーション(クライアント)ID の値をコピーしてください。 この値は、エージェントが Azure アカウントに接続する際に使用するサービスプリンシパルID を設定するために必要です。
- 新しく作成したアプリを開き、ナビゲーションメニューから 「証明書とシークレット 」>「 新しいクライアントシークレット 」を選択して、新しいセキュリティキーを作成します。
- 新しいキーの値をコピーして保存してください。 この値は、エージェントが Azure アカウントに接続するために使用するサービスプリンシパルシークレットを設定するために必要です。
Azure CLI を使用してサービスプリンシパルを作成する
Azure のコマンドラインインターフェイス(CLI)を使用すると、1つのコマンドでサービスプリンシパルの作成とロールの割り当てを迅速かつ簡単に行うことができます。
- Azure のCLIをインストールします。
- ターミナルでこの
az loginコマンドを実行して Azure アカウントにサインインし、画面の指示に従ってください。 - ターミナルを開くか、 Azure ( Cloud Shell )にアクセスしてください。
- サブスクリプション ID を確認するには、次のコマンドを実行してください:
az account show --query id --output tsv - サービスプリンシパルを作成するには、次のコマンドを実行してください。 ,
role, およびsubscription-IDを、それぞれのservice-principal-name具体的な値に置き換えてください。az ad sp create-for-rbac --name "<service-principal-name>" --role "<role>" --scopes "/subscriptions/<subscription-id>"--name: サービスプリンシパルに付ける一意の名前。--role: 割り当てるRBACロール(例:投稿者、閲覧者、所有者など)。--scopes: ロールを適用するリソーススコープ( Azure )。サブスクリプション、リソースグループ、または特定のリソースなど。
- 前のコマンドの出力には、サービスプリンシパルの認証情報が表示されます。 JSON の出力から、
appId(クライアント ID)、パスワード (クライアント シークレット)、およびテナント (テナント ID) をコピーし、安全に保管してください。 パスワードは一度だけ表示され、後から確認することはできません。 - 新しいロールの割り当てを確認するには、次のコマンドを実行してください。の箇所を、ご自身のクライアント
appIdID に置き換えてください:az role assignment list --assignee "<appId>"
Azure を使用してサービスプリンシパルを作成する PowerShell
Azure PowerShell を使用してサービスプリンシパルを作成し、必要なアクセス権を付与するには、 Azure PowerShell のドキュメントに記載されている手順に従ってください。
2. サービスプリンシパルに対して、リーダー権限を付与する
Azure ポータルを利用することで:
- Azure ポータルで、 「すべてのサービス 」>「 一般 」>「 サブスクリプション」 を選択します。
- サブスクリプションページで、サブスクリプションを選択し、アクセスコントロール(IAM)を選択します。
- 「 役割の割り当てを追加 」を選択し、「 閲覧者」 を選びます。 次へ をクリックします。
- 「 会員 」セクションで、以下の情報を入力してください:
- アクセス権の割り当てでは、
user、group、service principalのいずれかを選択します。 - 「メンバー」 の場合、 「メンバーの選択」 をクリックし、左側のリストからサービスプリンシパルを選択してください。
- アクセス権の割り当てでは、
- 次へをクリックし、レビュー+割り当てを選択します。
Azure CLI を使用して:
Reader 内でロールを指定すると、CLIは自動的にそのサービスプリンシパルに読み取り権限を付与します:az ad sp create-for-rbac --name "<service-principal-name>" --role "Reader" --scopes /subscriptions/{subscription-id}
Python スクリプトを使用してサービスプリンシパルのリーダーロールを確認するには(オプション)、 Python スクリプトを参照してください。
3. エージェントで Azure センサーを有効にする
configuration.yaml ファイル内で Azure センサーを設定してください。 単一のサブスクリプションを監視するための最小限の設定は、次の例のような形になります:com.instana.plugin.azure:
enabled: true
subscription: "Your-Subscription-Id"
tenant: "Your-Tenant-Id"
principals:
- id: "Your-Service-Principal-Account-Id"
secret: "Your-Service-Principal-Secret"
ホストエージェントを再起動して、新しい設定を適用します。 再起動後、エージェントは指定されたサブスクリプション上でサポートされているリモートサービスを自動的に検出できます。
Azure Resource Manager (ARM) はトークンバケット方式のスロットリングモデルを採用しており、持続的な補充レート(毎秒25リクエスト)を維持しつつ、短時間のリクエスト集中(例えば、250回の読み取り)を許容します。 Instana の Azure モニタリングは、サブスクリプション全体にわたってメトリクスやリソースデータを収集するため、特に大規模な環境では、 API へのリクエスト数が非常に多くなる可能性があります。 この制限を克服するため、複数のサービス・プリンシパルを作成できます。 サービスプリンシパルの作成方法については、 「 Azure PowerShell を使用して証明書付きのサービスプリンシパルを作成する」 を参照してください。
サービスプリンシパルを作成したら、 Instana/opt/instana/agent/etc/instana/configuration.yaml ホストエージェント上のファイルを次のように更新してください:
com.instana.plugin.azure:
enabled: true
subscription: "Your-Subscription-Id"
tenant: "Your-Tenant-Id"
principals:
- id: "Your-Service-Principal-Account-Id-1"
secret: "Your-Base64-encoded-Service-Principal-Secret-1"
- id: "Your-Service-Principal-Account-Id-2"
secret: "Your-Base64-encoded-Service-Principal-Secret-2"
構成
プロキシー構成
Instana のホストエージェントでプロキシを使用するように設定するには、エージェントの設定に以下の設定を追加します
com.instana.plugin.azure:
proxy_host: 'example.com' # proxy host name or ip address
proxy_port: 3128 # proxy port
proxy_username: 'username' # OPTIONAL: proxy username
proxy_password: 'password' # OPTIONAL: proxy password
proxy_hostとproxy_portの両方のフィールドを定義して、エージェントがプロキシサーバーを経由してトラフィックをルーティングできるようにします。
プロキシの設定が完了したら、変更を反映させるために Instana エージェントを再起動してください。
フィルタリングとタグ付け
Instana のホストエージェントは、 Azure サービスのフィルタリングに対応しています。 サービスとそのインスタンスのフィルタリングは、タグとリソースグループに基づいて行われる。
Azure リソースへのタグの付け方に関する詳細については、 「タグを使用して Azure リソースと管理階層を整理する」 を参照してください。
Azure でのリソースグループの定義に関する詳細については、 「 Azure とは Resource Manager? 」を参照してください。
Instana のホストエージェント設定ファイルを次のように変更して、 /opt/instana/agent/etc/instana/configuration.yaml フィルタリングを適用します:
com.instana.plugin.azure:
# Comma separated list of tags in key:value format
include_tags:
# Comma separated list of tags in key:value format
exclude_tags:
# Comma separated list of resource groups
include_resource_groups:
# Comma separated list of resource groups
exclude_resource_groups:
また、特定のサービスレベルでフィルタリングを適用することもできる。 詳細については、監視対象サービスセクションを参照してください。
API Management サービス当たりの API のフィルタリング
1つのAPI Managementサービスの下にあまりにも多くのAPIがあると、データを効果的に収集して分析することが難しくなります。 重要なAPIに焦点を当てるには、以下の例に示すように、包含型または除外型の正規表現を定義して、 API のフィルタリングを設定します。 YAML ファイル:
com.instana.plugin.azure.apimanagement:
monitorApiList:
- serviceName: 'robotShopApiGateway'
#inclusiveApiRegex: '^(API name 1|API name 2)$'
exclusiveApiRegex: '^(API name 1|API name 2)$'
前の例で示したように、orとandのロジックで複雑な正規表現を使うことができます。 inclusiveApiRegexとexclusiveApiRegexの両方を定義した場合、ホストエージェントはexclusiveApiRegexを優先します。
非常に多数のリソースを監視するには、 1つのエージェントにつき複数のサブスクリプションを設定するか、それぞれに1つのサブスクリプションを設定した複数のエージェントを展開することができます。 いずれの場合も、サブスクリプションがエージェント間で共有されないよう、また相互に排他的な状態が保たれるようにしてください。
Azure のマルチサブスクリプション監視の設定(パブリックプレビュー)
Instana 単一のホストエージェントを使用して、同じテナント内の複数の Azure サブスクリプションを監視できます。 この機能により、各サブスクリプションごとに個別のエージェントをインストールすることなく、 Azure インフラストラクチャ全体を包括的に可視化できます。
前提条件
- すべてのサブスクリプションは、同じ Azure テナントに属している必要があります。
- 各サブスクリプションには、Reader ロールの権限を持つサービスプリンシパルが少なくとも 1 つ必要です。
複数のサブスクリプションの設定
複数の Azure サブスクリプションを監視するには、 Instana ホストエージェントを構成し、ファイル /opt/instana/agent/etc/instana/configuration.yaml にサブスクリプションとサービスプリンシパルの詳細を指定します:
com.instana.plugin.azure:
enabled: true
tenant: 'Your-Tenant-Id'
subscriptions:
- id: 'Subscription-Id-1'
principals:
- id: 'Service-Principal-Client-Id-1'
secret: 'Service-Principal-Client-Secret-1'
- id: 'Service-Principal-Client-Id-2'
secret: 'Service-Principal-Client-Secret-2'
- id: 'Subscription-Id-2'
principals:
- id: 'Service-Principal-Client-Id-3'
secret: 'Service-Principal-Client-Secret-3'
- id: 'Service-Principal-Client-Id-4'
secret: 'Service-Principal-Client-Secret-4'
各サブスクリプションには、 API の負荷を分散させるために、複数のサービスプリンシパルを設定できます。
マルチサブスクリプション監視のベストプラクティス
- サービスプリンシパルの計画 :多数のリソースを監視する際にスロットリングが発生しないよう、サブスクリプションごとに少なくとも2~3つのサービスプリンシパルを作成してください。
- リソースの分散 :多数のリソースを監視する場合は、『 Azure 』のドキュメントに記載されているように、複数のサブスクリプションや異なるリージョンにリソースを分散させることを検討してください。
- 必要な権限 :各サービスプリンシパルが、サブスクリプションに対して少なくとも「リーダー」ロールのアクセス権を持っていることを確認してください。 API クライアントの設定時、必要な権限を持たないサービスプリンシパルはスキップされます。
マルチサブスクリプション監視におけるエージェントの規模設定とリソースのスケーラビリティに関する考察
以下の注意事項は、合成 Azure リソースを監視する際の Instana エージェントの検証済みパフォーマンス限界についてまとめたものです。 これらの結果は、安定した運用における安全限界を特定するために、 Ubuntu ( 24.04 )で行われたストレステストに基づいています。
マシンリソースと Java のヒープサイズを増やすことで、より多くのエンティティを扱えるようになります。 ただし、これらの制限を超えてスケールアップすると、特にストレージやロードバランサーなどの特定のリソースタイプにおいて、 Azure Resource Manager API からの「 HTTP 429 (Too Many Requests)」 エラーの発生頻度が高まる可能性があることにご注意ください。
検証済みの負荷テスト結果
以下の表は、テスト中に特定された安定閾値を示しています。 ヒープメモリがそれに応じて増加しないままこれらの閾値を超えると、以下の結果になる可能性があります java.lang.OutOfMemoryError。
| Azure VM サイズ | ハードウェア仕様 | エージェント・マックス・ヒープ (INSTANA_AGENT_MAX_MEM) |
監視対象の Azure リソース | サブスクリプションごとに使用されるサービスプリンシパル |
|---|---|---|---|---|
| 標準 D4ds_v6 | 4 vCPU, 16 GiB RAM | 2048 MB | 3,000 | 3 |
| 標準 D8s_v6 | 8 vCPU, 32 GiB RAM | 2048 MB | 7,000 | 4 |
スケーラビリティと API の制約
Azure API スロットリング(429エラー)
Instana エージェントは、マシンサイズやヒープ割り当てを増やすことで、技術的にはより多くのリソースを監視するように拡張可能ですが、 Azure ポータル( API )には独自の制限があります。
- 高密度のモニタリングを行うと、 Azure から 429 エラー応答を受け取る可能性が高まります。
- Microsoft.Storage/storageAccounts などのリソース タイプは、こうした制限の影響を特に受けやすい。
- 429エラーが頻繁に発生すると、メトリクスの収集に欠落が生じたり、新しいリソースの発見が遅れたりすることがあります。
各リソースタイプで利用可能なメトリクス
各リソースタイプでサポートされているメトリクスの一覧は、 Azure の公式ドキュメントでご確認いただけます。
Azure および API の利用にかかる費用の算出
Azure API の使用料の計算に関する詳細については、 Azure API の使用料の計算を参照してください。