适用于容器的 Azure Monitor 包含一项功能,该功能目前为预览版,可以实时查看 Azure Kubernetes 服务 (AKS) 容器日志 (stdout/stderr) 和事件,不需运行 kubectl 命令。 选择任一选项后,“节点”、“控制器”和“容器”视图上的性能数据表下方将显示新窗格。 它显示了容器引擎生成的实时日志记录和事件,可以进一步实时排查问题。
注意
此功能在所有 Azure 区域均可用,包括由世纪互联运营的 Microsoft Azure。 它目前在世纪互联运营的 Microsoft Azure 中不可用。
注意
Azure Kubernetes 服务群集用户角色需要群集资源访问权限才能使用此功能。 详细了解 Azure Kubernetes 群集用户角色。
实时日志支持以三种不同的方式来控制对日志的访问:
- 没有启用 Kubernetes RBAC 授权的 AKS
- 启用了 Kubernetes RBAC 授权的 AKS
- 启用了基于 SAML 的 Azure Active Directory (AD) 单一登录的 AKS
未启用 RBAC 的 Kubernetes 群集
如果 Kubernetes 群集未配置 Kubernetes RBAC 授权或集成 Azure AD 单一登录,则不需执行这些步骤。 Kubernetes 授权使用 kube-api,因此需要只读权限。
Kubernetes RBAC 授权
如果已启用 Kubernetes RBAC 授权,则需应用群集角色绑定。 以下示例步骤演示如何从此 yaml 配置模板配置群集角色绑定。
复制并粘贴 yaml 文件,然后将其另存为 LogReaderRBAC.yaml。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: containerHealth-log-reader rules: - apiGroups: [""] resources: ["pods/log", "events"] verbs: ["get", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: containerHealth-read-logs-global roleRef: kind: ClusterRole name: containerHealth-log-reader apiGroup: rbac.authorization.k8s.io subjects: - kind: User name: clusterUser apiGroup: rbac.authorization.k8s.io
如果是首次配置它,请运行以下命令以应用群集规则绑定:
kubectl create -f LogReaderRBAC.yaml
。 如果在我们引入实时事件日志之前,你已经启用了对实时日志预览版的支持,则请运行以下命令来更新配置:kubectl apply -f LogReaderRBAC.yaml
。
为 AKS 配置 Azure Active Directory
可将 AKS 配置为使用 Azure Active Directory (AD) 进行用户身份验证。 如果是第一次配置它,请参阅将 Azure Active Directory 与 Azure Kubernetes 服务集成。 在创建客户端应用程序的步骤中,请指定以下内容:
- 重定向 URI:需要创建两个 Web 应用程序类型。 第一个基 URL 值应为
https://afd.hosting.azureportal.chinacloudapi.cn/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html
,第二个基 URL 值应为https://monitoring.hosting.azureportal.chinacloudapi.cn/monitoring/Content/iframe/infrainsights.app/web/base-libs/auth/auth.html
。 - 注册应用程序以后,请在“概览”页的左窗格中选择“身份验证”。 在“身份验证”页的“高级设置”下,隐式授予“访问令牌”和“ID 令牌”,然后保存所做的更改。
注意
通过 Azure Active Directory 配置身份验证以便实现单一登录的操作只能在初次部署新 AKS 群集过程中完成。 不能为已部署的 AKS 群集配置单一登录。
重要
如果使用更新的 URI 重新配置了用于用户身份验证的 Azure AD,请清除浏览器的缓存,确保更新的身份验证令牌已下载并应用。
查看实时日志和事件
可以在“节点”、“控制器”和“容器”视图中查看容器引擎生成的实时日志事件。 从属性窗格中选择“查看实时数据(预览)”选项,此时一个窗格会呈现在性能数据表下面,你可以在其中查看持续流中的日志和事件。
日志和事件消息数存在限制,具体取决于在视图中选择的资源类型。
查看 | 资源类型 | 日志或事件 | 显示的数据 |
---|---|---|---|
节点 | 节点 | 事件 | 选择节点时,不会对事件进行筛选,会显示群集范围的 Kubernetes 事件。 窗格标题会显示群集的名称。 |
节点 | Pod | 事件 | 选择 Pod 时,会根据其命名空间对事件进行筛选。 窗格标题会显示 Pod 的命名空间。 |
Controllers | Pod | 事件 | 选择 Pod 时,会根据其命名空间对事件进行筛选。 窗格标题会显示 Pod 的命名空间。 |
Controllers | 控制器 | 事件 | 选择控制器时,会根据其命名空间对事件进行筛选。 窗格标题会显示控制器的命名空间。 |
节点/控制器/容器 | 容器 | 日志 | 窗格标题会显示进行容器分组时所使用的 Pod 的名称。 |
如果使用 AAD 为 AKS 群集配置了 SSO,系统会在该浏览器会话期间向你提示进行首次使用所需的身份验证。 选择帐户,然后使用 Azure 完成身份验证。
成功进行身份验证以后,实时日志窗格会显示在中间窗格的底部。 如果提取状态指示器显示绿色复选标记(位于窗格最右侧),则意味着可以检索数据。
在搜索栏中,可以按关键字进行筛选,在日志或事件中突出显示该文本。在最右侧的搜索栏中,显示了有多少结果与筛选器匹配
在查看事件时,可以进一步对结果进行限制,只需使用在搜索栏右侧发现的“筛选器”药丸图标即可。 根据所选资源,药丸图标会列出可供选择的 Pod、命名空间或群集。
若要暂停自动滚动并控制窗格的行为,以便通过手动方式滚动浏览读取的新数据,请单击“滚动”选项。 若要重新启用自动滚动,请再次直接单击“滚动”选项。 也可暂停对日志或事件数据的检索,只需单击“暂停”选项即可。准备继续时,请直接单击“开始”。
可以转到 Azure Monitor 日志来查看容器历史日志,只需从下拉列表“在 Analytics 中查看”中选择“查看容器日志”即可。
后续步骤
- 若要继续学习如何使用 Azure Monitor 以及如何监视 AKS 群集的其他方面,请参阅查看 Azure Kubernetes 服务运行状况。
- 请参阅日志查询示例,以查看预定义的查询,以及用于发警报、可视化或分析群集的评估或自定义示例。