Instana エージェントによる Microsoft® Azure の監視と計測

Instana ホストエージェントをインストールすると、 Microsoft® Azure センサーが自動的にインストールされます。 設定セクションで説明したように Microsoft® Azure センサーを設定した後、Instana UI で Microsoft® Azure に関連するメトリクスを表示できます。

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

モニター対象のサービス

Instanaホストエージェントは、 Azure APIからデータを収集することで、 Azure が管理するサービスを監視します。 Instanaは、以下の Azure サービスの監視をサポートしています:

Instana エージェントのインストール

Azure Kubernetes Service 上で実行される Azure 仮想マシンまたは Kubernetes クラスターを監視するには、 「Instana ホスト エージェントのインストール」を参照してください。

注: クラウド環境で監視対象エンティティの数に応じて、ホストエージェントが利用可能なメモリを増やす必要があります。 エージェントのメモリは、環境変数をデフォルト AGENT_MAX_MEM 値よりも大きい値に設定することで 544 MiB増やすことができます。

たとえば、エージェントに1GBのメモリを割り当てるには、. を設定します AGENT_MAX_MEM=1024M

Azure 環境の内部または外部のホストに Instana ホストエージェントをインストールします。 各ホストエージェントは、1つのサブスクリプション内でリモートサービスを監視できる。 複数の 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 クラウド環境において、以下のネットワークエンドポイントへのアクセスが確保されていることを確認してください:

表 1. Azure クラウドエンドポイントマッピング
Azure クラウドエンドポイント Active Directory エンドポイント 管理エンドポイント
AzurePublicMicrosoft Azure パブリッククラウド https://login.microsoftonline.com https://management.azure.com/
AzureChinaマイクロソフト中国国内クラウド https://login.chinacloudapi.cn/ https://management.chinacloudapi.cn/
AzureGermany: Microsoft ドイツ国内クラウド https://login.microsoftonline.de/ https://management.microsoftazure.de/
AzureUsGovernment米国政府クラウド https://login.microsoftonline.us/ https://management.usgovcloudapi.net/

Azure サービスの外部監視を有効にするには、 Azure クラウド環境に基づき、上記のREST APIエンドポイントへのアクセスを許可するようファイアウォールを設定してください。 また、 Azure クラウドエンドポイントとは関係なく、主に Databricks に必要な、Log https://api.loganalytics.io Analytics エンドポイントへのファイアウォールアクセスが許可されていることを確認してください。

Instanaの Azure 監視

Instanaは主に2つの方法で Azure リソースを発見します:

  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

AzureResource 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 Monitor API : Instanaは、ARM管理エンドポイントを共有する同じ Azure Monitor APIを使用し、 Azure リソースに関するメトリクス、ログ、健全性情報などの監視データを収集します。

Azure Monitor 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 の監視を有効にするには、ホストエージェントを、少なくとも読み取り権限を持つサービスプリンシパルで構成してください。 サービスプリンシパルは、 Azure ポータルAzure CLI、または AzurePowerShell を使用して作成できます。

Azure ポータルでサービスプリンシパルを作成する

以下の手順では、 Azure ポータル内のリソースに対する読み取りアクセス権を持つサービスプリンシパルアカウントを作成する方法を説明します。

Azure ポータルでアプリケーションを登録してサービスプリンシパルを作成します:

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

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

Azure コマンドライン インターフェイス (CLI) を使用すると、サービス プリンシパルを作成し、単一のコマンドでロールを割り当てる、迅速かつ簡単な方法を利用できます。

  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ロール(例:contributor、reader、ownerなど)。
    • --scopesAzure ロールを適用するリソース スコープ(例:サブスクリプション、リソース グループ、または特定のリソース)。
  6. 前のコマンドの出力は、サービスプリンシパルの認証情報を提供します。 JSON出力からクライアントID、パスワード(クライアントシークレット appId )、テナント(テナントID)をコピーして安全に保管してください。 パスワードは一度だけ表示され、後で復元することはできません。
  7. 新しいロールの割り当てを確認するには、次のコマンドを実行してください。クライアントID appId を自分のクライアントIDに置き換えてください:
    az role assignment list --assignee "<appId>"

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

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

2. サービスプリンシパルに対するリーダ権限を許可する

Azure ポータルを利用することにより:

  1. Azure ポータルで、 [すべてのサービス ] > [一般 ] > [サブスクリプション ] を選択します。
  2. サブスクリプションページで、サブスクリプションを選択し、 アクセスコントロール(IAM )を選択します。
  3. 「ロールの割り当てを追加」 を選択し、「 閲覧者」 を選択します。 次へ をクリックします。
  4. メンバー セクションでは、以下の詳細を入力してください:
    • Assign access to で、 usergroup、または service principal を選択します。
    • メンバー の場合は、 「メンバーの選択」 をクリックし、左側のリストからサービスプリンシパルを選択してください。
  5. Nextをクリックし、 Review + assignを選択する。

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"

ホストエージェントを再起動して、新しい設定を適用します。 再起動後、エージェントは指定されたサブスクリプション上でサポートされているリモートサービスを自動的に検出できます。

構成

プロキシー構成

プロキシを使用するように 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:
 

また、特定のサービスレベルでフィルタリングを適用することもできる。 詳細については、特定のサービスの詳細については、 監視サービスのセクションを参照してください。

複数のサービス・プリンシパル

Azure 監視 API にはサービスプリンシパルごとの 12000 リクエスト数に制限があり、これにより単一のホストエージェントが監視できるサービスの数が制限されます。 この制限を克服するため、複数のサービス・プリンシパルを作成できます。 サービス・プリンシパルの作成方法については、 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"
 
注意: ホストエージェントは、これらのプリンシパル設定に対する変更をホットリロードします。

API Management サービス当たりの API のフィルタリング

1つのサービス( API Management )の下にあまりにも多くのAPIがある場合、データを効率的に収集し分析するのは難しいかもしれない。 重要なAPIに焦点を当てるには、以下の例に示すYAMLファイルのように、包含または除外する正規表現を定義してAPIフィルタリングを設定します:

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 を優先します。