你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
监视 Nexus Kubernetes 群集
每个 Nexus Kubernetes 群集都包含多个层:
- 虚拟机 (VM)
- Kubernetes 层
- 应用程序 Pod
图:示例 Nexus Kubernetes 群集
在实例上,Nexus Kubernetes 群集附带可选的容器见解可观测性解决方案。 容器见解从 Nexus Kubernetes 群集和工作负载捕获日志和指标。 是否启用此工具或部署你自己的遥测堆栈,完全由你自行决定。
带有 Azure 监视工具的 Nexus Kubernetes 群集如下所示:
图:带有监视工具的 Nexus Kubernetes 群集
使用托管标识身份验证通过 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 监视代理 (AMA) |
监视参与者或参与者 | 在资源组中创建数据收集规则 (DCR),然后将其关联到已启用 Arc 的服务器 |
用户访问管理员、资源策略参与者或参与者 | 要使用 Azure 策略分配来确保 DCR 与已启用 Arc 的计算机关联时需要 |
Kubernetes 扩展参与者 | 为容器见解部署 K8 扩展时需要 |
监视 Nexus Kubernetes 群集
先决条件
运营商应确保在 Nexus Kubernetes 群集上配置监视工具有某些先决条件。
容器见解将其数据存储在 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
若要在适用的 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>"
现在,你使用以下两个命令之一在预配的 Nexus Kubernetes 群集上部署容器见解扩展:
使用客户预创建的 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 不会从 kube-system
命名空间收集日志。 若要从 kube-system
命名空间收集日志,必须将代理配置为从 kube-system
命名空间收集日志。
为此,可以遵循 configMap
配置方法从 ConfigMap 中的 excludedNamespaces
字段中移除 kube-system
命名空间。
[log_collection_settings]
[log_collection_settings.stdout]
# In the absence 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 absence 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 namespace: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 absence 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 namespace: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 警报模板。