Nexus Kubernetes クラスターの監視
各 Nexus Kubernetes クラスターは、複数のレイヤーで構成されます。
- 仮想マシン (VM)
- Kubernetes レイヤー
- アプリケーション ポッド
図: Nexus Kubernetes クラスターのサンプル
インスタンスでは、Nexus Kubernetes クラスターは、"オプションの" Container Insights 監視ソリューションと共に提供されます。 Container Insights では、Nexus Kubernetes クラスターとワークロードからログとメトリックをキャプチャします。 このツールを有効にするか、独自のテレメトリ スタックをデプロイするかは、お客様の判断です。
Azure 監視ツールを使用した Nexus Kubernetes クラスターは次のようになります。
図: 監視ツールを使用した Nexus Kubernetes クラスター
マネージド ID 認証を使用した CLI での拡張機能のオンボード
Azure CLI 以降のドキュメントで、複数のオペレーティング システムにインストールする方法、および CLI 拡張機能をインストールする方法について説明します。
必要な CLI 拡張機能の最新バージョンをインストールします。
Nexus Kubernetes クラスターの監視
この攻略ガイドでは、Azure 監視エージェントを使用してこれらの VM からシステム ログを収集するために、監視エージェントを有効にする手順について説明します。 この手順では、Log Analytics ワークスペースにログ データ収集を設定する方法について詳しく説明します。
前提条件
Nexus Kubernetes クラスターへのクラスター管理者アクセス。
Azure Arc 対応サーバーを使用するには、次の Azure リソース プロバイダーをサブスクリプションに登録します。
- Microsoft.HybridCompute
- Microsoft.GuestConfiguration
- Microsoft.HybridConnectivity
以前に次のリソース プロバイダーを登録していない場合は、登録します。
az account set --subscription "{the Subscription Name}"
az provider register --namespace 'Microsoft.HybridCompute'
az provider register --namespace 'Microsoft.GuestConfiguration'
az provider register --namespace 'Microsoft.HybridConnectivity'
- 必要に応じて、Azure サービス プリンシパルを次の Azure 組み込みロールに割り当てます。 接続するマシンがある Azure リソース グループにサービス プリンシパルを割り当てます。
役割 | 必要な操作 |
---|---|
Azure Connected Machine のリソース管理者または共同作成者 | リソース グループ内の Arc 対応 Nexus Kubernetes クラスター VM サーバーを接続し、Azure Monitoring Agent (AMA) をインストールする |
共同作成者の監視または共同作成者 | リソース グループにデータ収集規則 (DCR) を作成し、それに Arc 対応サーバーを関連付ける |
ユーザー アクセス管理者、およびリソース ポリシー共同作成者または共同作成者 | Azure ポリシー割り当てを使用して、DCR が Arc 対応マシンに関連付けられていることを確認する場合に必要 |
Kubernetes 拡張機能共同作成者 | Container Insights の K8s 拡張機能をデプロイするために必要 |
Nexus Kubernetes クラスターの監視
前提条件
オペレーターが Nexus Kubernetes クラスターで監視ツールを構成するために確認する必要がある前提条件がいくつかあります。
Container Insights では、そのデータを Log Analytics ワークスペースに保存します。 ログ データは、Container Insights 拡張機能のインストール時に指定したリソース ID を持つワークスペースに送られます。 それ以外の場合は、(Azure の場所に基づいて) サブスクリプションに関連付けられているリソース グループ内の既定のワークスペースにデータが流し込まれます。
米国東部の例を次に示します。
- Log Analytics ワークスペース名: DefaultWorkspace-<GUID>-EUS
- リソース グループ名: DefaultResourceGroup-EUS
既存の Log Analytics ワークスペースのリソース ID を取得するには、次のコマンドを実行します。
az login
az account set --subscription "<Subscription Name or ID the Log Analytics workspace is in>"
az monitor log-analytics workspace show --workspace-name "<Log Analytics workspace Name>" \
--resource-group "<Log Analytics workspace Resource Group>" \
-o tsv --query id
Container Insights をデプロイし、該当する Log Analytics ワークスペースにデータを表示するには、アカウントで特定のロールの割り当てが必要です。 たとえば、"共同作成者" ロールの割り当てです。 必要なロールを割り当てる手順を参照してください。
- Log Analytics 共同作成者ロール: CNF (プロビジョニング済み) クラスターでコンテナーの監視を有効にするために必要なアクセス許可。
- Log Analytics 閲覧者ロール: Log Analytics 共同作成者ロールの非メンバーは、コンテナーの監視を有効にすると、Log Analytics ワークスペース内のデータを表示するためのアクセス許可を受け取ります。
クラスター拡張機能をインストールする
Azure Cloud Shell にサインインして、クラスターにアクセスします。
az login
az account set --subscription "<Subscription Name or ID the Provisioned Cluster is in>"
次の 2 つのコマンドのいずれかを使用して、プロビジョニングされた Nexus Kubernetes クラスターに Container Insights 拡張機能をデプロイします。
顧客が事前に作成した Log Analytics ワークスペースを使用する
az k8s-extension create --name azuremonitor-containers \
--cluster-name "<Nexus Kubernetes cluster Name>" \
--resource-group "<Nexus Kubernetes cluster Resource Group>" \
--cluster-type connectedClusters \
--extension-type Microsoft.AzureMonitor.Containers \
--release-train preview \
--configuration-settings logAnalyticsWorkspaceResourceID="<Log Analytics workspace Resource ID>" \
amalogsagent.useAADAuth=true
既定の Log Analytics ワークスペースを使用する
az k8s-extension create --name azuremonitor-containers \
--cluster-name "<Nexus Kubernetes cluster Name>" \
--resource-group "<Nexus Kubernetes cluster Resource Group>" \
--cluster-type connectedClusters \
--extension-type Microsoft.AzureMonitor.Containers \
--release-train preview \
--configuration-settings amalogsagent.useAADAuth=true
クラスター拡張機能を検証する
次のコマンドを使用して、Nexus Kubernetes クラスターでの監視エージェントの有効化が正常にデプロイされたことを検証します。
az k8s-extension show --name azuremonitor-containers \
--cluster-name "<Nexus Kubernetes cluster Name>" \
--resource-group "<Nexus Kubernetes cluster Resource Group>" \
--cluster-type connectedClusters
拡張機能の "成功" のプロビジョニング状態を探します。 "k8s-extension create" コマンドも状態を返している可能性があります。
ログとメトリックの収集をカスタマイズする
Container Insights には、Nexus Kubernetes クラスターからのログとメトリックの収集を微調整するエンドユーザー機能が用意されています。 詳細については、Container Insights エージェントのデータ収集の構成に関するページの手順を参照してください。
Note
既定では、kube-system
名前空間のログは Container Insights によって収集されません。 kube-system
名前空間からログを収集するには、kube-system
名前空間からログを収集するようにエージェントを構成する必要があります。
このためには、configMap
の構成アプローチに従って、ConfigMap の excludedNamespaces
フィールドから kube-system
名前空間を削除します。
[log_collection_settings]
[log_collection_settings.stdout]
# In the absense of this configmap, default value for enabled is true
enabled = true
# exclude_namespaces setting holds good only if enabled is set to true
# kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stdout' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
# If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
# In the absense of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
exclude_namespaces = ["gatekeeper-system"]
# If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namepace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
# Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
# collect_system_pod_logs = ["kube-system:coredns"]
[log_collection_settings.stderr]
# Default value for enabled is true
enabled = true
# exclude_namespaces setting holds good only if enabled is set to true
# kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stderr' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
# If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
# In the absense of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
exclude_namespaces = ["gatekeeper-system"]
# If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namepace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
# Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
# collect_system_pod_logs = ["kube-system:coredns"]
その他のリソース
- ブックのドキュメントを確認してから、Operator Nexus テレメトリ サンプル Operator Nexus ブックを使用できます。
- Azure Monitor アラート、Azure Monitor アラート ルールの作成方法を確認し、サンプルの Operator Nexus アラート テンプレートを使用します。