Instana エージェントを使用した Microsoft® Azure の監視と計測

Instana ホストエージェントをインストールすると、 Microsoft® Azure センサーが自動的にインストールされます。 「設定」セクションの手順に従って Microsoft® Azure センサーを設定すると、 Instana のUIで Microsoft® Azure に関連するメトリクスを確認できるようになります。

注:Kubernetes または Red Hat OpenShift クラスタ内の Azure をリモートで監視する場合、クラスタの各ノードに Instana ホストエージェントをインストールしないでください。 専用のホストマシンにホストエージェントをインストールする。

モニター対象のサービス

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 クラウドエンドポイントに応じて、以下のクラウド設定値から選択できます: AzurePublicCloudAzureChinaCloudAzureUSGovernmentCloud、および AzureGermanCloud。 Azure のクラウドエンドポイントに関する詳細については、 「 Azure のクラウドエンドポイント」 をご覧ください。

選択した Azure クラウド環境について、以下のネットワークエンドポイントにアクセスできることを確認してください:

表 1. 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つの方法で確認できます:

  1. VM メタデータ・サービス: Instana エージェントは、 Azure インスタンス・メタデータ・サービス(IMDS)にクエリ http://169.254.169.254/metadata/instance を送信し、エージェントがインストールされている VM インスタンスに関する基本情報を収集します。
  2. 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}/...

管理用エンドポイントは、 Azure のクラウドエンドポイントによって異なります。 以下のサンプルパターンをご覧ください:
  • 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/...

管理用エンドポイントは、 Azure のクラウドエンドポイントによって異なります。 以下のサンプルパターンをご覧ください:
  • 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 ポータルでアプリケーションを登録し、サービスプリンシパルを作成します:

  1. Azure 管理ポータルを開き、Microsoft Entra ID を選択します。
  2. テナントID の値をコピーしてください。 この値は、エージェントが Azure アカウントに接続するように設定するために必要です。
  3. ナビゲーション・ペインで 「アプリ登録」 を選択します。
  4. [アプリ登録] タブの上部にある [新規登録] を選択して、新しいアプリを作成します。
  5. アプリケーションの名前を入力し、その他の設定はすべてデフォルト値のままにして、「 登録」 を選択してください。
  6. アプリケーション(クライアント)ID の値をコピーしてください。 この値は、エージェントが Azure アカウントに接続する際に使用するサービスプリンシパルID を設定するために必要です。
  7. 新しく作成したアプリを開き、ナビゲーションメニューから 「証明書とシークレット 」>「 新しいクライアントシークレット 」を選択して、新しいセキュリティキーを作成します。
  8. 新しいキーの値をコピーして保存してください。 この値は、エージェントが Azure アカウントに接続するために使用するサービスプリンシパルシークレットを設定するために必要です。
注: クライアントシークレットの値は、作成後にのみ確認できます。 シークレットキーを作成したら、ページを閉じる前に必ず保存してください。

Azure CLI を使用してサービスプリンシパルを作成する

Azure のコマンドラインインターフェイス(CLI)を使用すると、1つのコマンドでサービスプリンシパルの作成とロールの割り当てを迅速かつ簡単に行うことができます。

  1. Azure のCLIをインストールします。
  2. ターミナルでこの az login コマンドを実行して Azure アカウントにサインインし、画面の指示に従ってください。
  3. ターミナルを開くか、 Azure ( Cloud Shell )にアクセスしてください。
  4. サブスクリプション ID を確認するには、次のコマンドを実行してください:
    az account show --query id --output tsv
  5. サービスプリンシパルを作成するには、次のコマンドを実行してください。 , 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 )。サブスクリプション、リソースグループ、または特定のリソースなど。
  6. 前のコマンドの出力には、サービスプリンシパルの認証情報が表示されます。 JSON の出力から、 appId (クライアント ID)、パスワード (クライアント シークレット)、およびテナント (テナント ID) をコピーし、安全に保管してください。 パスワードは一度だけ表示され、後から確認することはできません。
  7. 新しいロールの割り当てを確認するには、次のコマンドを実行してください。の箇所を、ご自身のクライアント appId ID に置き換えてください:
    az role assignment list --assignee "<appId>"

Azure を使用してサービスプリンシパルを作成する PowerShell

Azure PowerShell を使用してサービスプリンシパルを作成し、必要なアクセス権を付与するには、 Azure PowerShell のドキュメントに記載されている手順に従ってください。

2. サービスプリンシパルに対して、リーダー権限を付与する

Azure ポータルを利用することで:

  1. Azure ポータルで、 「すべてのサービス 」>「 一般 」>「 サブスクリプション」 を選択します。
  2. サブスクリプションページで、サブスクリプションを選択し、アクセスコントロール(IAM)を選択します。
  3. 役割の割り当てを追加 」を選択し、「 閲覧者」 を選びます。 次へ をクリックします。
  4. 会員 」セクションで、以下の情報を入力してください:
    • アクセス権の割り当てでは、usergroupservice principalのいずれかを選択します。
    • 「メンバー」 の場合、 「メンバーの選択」 をクリックし、左側のリストからサービスプリンシパルを選択してください。
  5. 次へをクリックし、レビュー+割り当てを選択します。

Azure CLI を使用して:

サービスプリンシパルを作成する際に、同じコマンド Reader 内でロールを指定すると、CLIは自動的にそのサービスプリンシパルに読み取り権限を付与します:
az ad sp create-for-rbac --name "<service-principal-name>" --role "Reader" --scopes /subscriptions/{subscription-id}

Python スクリプトを使用してサービスプリンシパルのリーダーロールを確認するには(オプション)、 Python スクリプトを参照してください。

3. エージェントで Azure センサーを有効にする

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_hostproxy_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)$'
 

前の例で示したように、orandのロジックで複雑な正規表現を使うことができます。 inclusiveApiRegexexclusiveApiRegexの両方を定義した場合、ホストエージェントは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エラーが頻繁に発生すると、メトリクスの収集に欠落が生じたり、新しいリソースの発見が遅れたりすることがあります。