Instana エージェントによる Microsoft® Azure の監視と計測
Instana ホストエージェントをインストールすると、 Microsoft® Azure センサーが自動的にインストールされます。 設定セクションで説明したように Microsoft® Azure センサーを設定した後、Instana UI で Microsoft® Azure に関連するメトリクスを表示できます。
モニター対象のサービス
Instanaホストエージェントは、 Azure APIからデータを収集することで、 Azure が管理するサービスを監視します。 Instanaは、以下の Azure サービスの監視をサポートしています:
インスツルメントされたサービス
以下のサービスをご利用いただけます:
サポート情報
サポート対象のオペレーティング・システム
Microsoft® Azure センサーのサポートするオペレーティングシステムは、ホストエージェントの要件と一致している。 詳細については、各Instanaホストエージェントのサポート対象オペレーティングシステムを参照してください。
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 クラウド環境において、以下のネットワークエンドポイントへのアクセスが確保されていることを確認してください:
| 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 リソースを発見します:
- 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
AzureResource 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 Monitor API : Instanaは、ARM管理エンドポイントを共有する同じ Azure Monitor APIを使用し、 Azure リソースに関するメトリクス、ログ、健全性情報などの監視データを収集します。
Azure Monitor 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 の監視を有効にするには、ホストエージェントを、少なくとも読み取り権限を持つサービスプリンシパルで構成してください。 サービスプリンシパルは、 Azure ポータル、 Azure CLI、または AzurePowerShell を使用して作成できます。
Azure ポータルでサービスプリンシパルを作成する
以下の手順では、 Azure ポータル内のリソースに対する読み取りアクセス権を持つサービスプリンシパルアカウントを作成する方法を説明します。
Azure ポータルでアプリケーションを登録してサービスプリンシパルを作成します:
- Azure 管理ポータルを開き、 Microsoft Entra ID を選択します。
- テナントID の値をコピーしてください。 この値は、エージェントを Azure アカウントに接続するように設定するために必要です。
- ナビゲーションペインで App registrationsを選択します。
- アプリ登録タブの上部にある 「新規登録」 を選択して、新しいアプリケーションを作成します。
- アプリケーションの名前を入力し、その他の設定はすべてデフォルト値のままにして、「 登録」 を選択してください。
- アプリケーション(クライアント)ID の値をコピーします。 この値は、エージェントが Azure アカウントに接続するために使用するサービスプリンシパルID を設定するために必要です。
- 新しく作成したアプリを開き、ナビゲーションメニューから 「証明書とシークレット 」>「 新しいクライアントシークレット 」を選択して、新しいセキュリティキーを作成します。
- 新しいキーの値をコピーして保存してください。 この値は、エージェントが Azure アカウントに接続するために使用するサービスプリンシパルシークレットを設定するために必要です。
Azure CLI を使用してサービスプリンシパルを作成する
Azure コマンドライン インターフェイス (CLI) を使用すると、サービス プリンシパルを作成し、単一のコマンドでロールを割り当てる、迅速かつ簡単な方法を利用できます。
- 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ロール(例:contributor、reader、ownerなど)。--scopesAzure ロールを適用するリソース スコープ(例:サブスクリプション、リソース グループ、または特定のリソース)。
- 前のコマンドの出力は、サービスプリンシパルの認証情報を提供します。 JSON出力からクライアントID、パスワード(クライアントシークレット
appId)、テナント(テナントID)をコピーして安全に保管してください。 パスワードは一度だけ表示され、後で復元することはできません。 - 新しいロールの割り当てを確認するには、次のコマンドを実行してください。クライアントID
appIdを自分のクライアントIDに置き換えてください:az role assignment list --assignee "<appId>"
Azure を使用してサービスプリンシパルを作成する PowerShell
Azure PowerShell を使用してサービスプリンシパルを作成し、必要なアクセス権を付与するには、 Azure PowerShell のドキュメントに記載されている手順に従ってください。
2. サービスプリンシパルに対するリーダ権限を許可する
Azure ポータルを利用することにより:
- Azure ポータルで、 [すべてのサービス ] > [一般 ] > [サブスクリプション ] を選択します。
- サブスクリプションページで、サブスクリプションを選択し、 アクセスコントロール(IAM )を選択します。
- 「ロールの割り当てを追加」 を選択し、「 閲覧者」 を選択します。 次へ をクリックします。
- メンバー セクションでは、以下の詳細を入力してください:
- Assign access to で、
user、group、またはservice principalを選択します。 - メンバー の場合は、 「メンバーの選択」 をクリックし、左側のリストからサービスプリンシパルを選択してください。
- Assign access to で、
- 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 センサーを有効にする
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_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:
また、特定のサービスレベルでフィルタリングを適用することもできる。 詳細については、特定のサービスの詳細については、 監視サービスのセクションを参照してください。
複数のサービス・プリンシパル
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)$'
前の例で示したように、 or と and ロジックを使った複雑な正規表現を使うことができます。 inclusiveApiRegex と exclusiveApiRegex の両方を定義した場合、ホストエージェントは exclusiveApiRegex を優先します。
各リソースタイプで利用可能なメトリクス
各リソースタイプでサポートされているメトリクスのリストは、 Azure の公式ドキュメントでご覧いただけます。
Azure API 使用のコスト計算
Azure APIの使用コスト計算に関する詳細については、 Azure APIの使用コスト計算を参照してください。