将控制面板日志发送到 CloudWatch Logs - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将控制面板日志发送到 CloudWatch Logs

Amazon EKS 控制层面日志记录将审计和诊断日志直接从 Amazon EKS 控制层面提供到您账户中的 CloudWatch Logs。这些日志可让您轻松地保护和运行您的集群。您可以选择您需要的确切的日志类型,日志将作为日志流发送到 CloudWatch 中每个 Amazon EKS 集群的组。您可以使用 CloudWatch 订阅筛选条件来实时分析日志或将日志转发到其他服务(日志将采用 Base64 编码并使用 gzip 格式压缩)。有关更多信息,请参阅 Amazon CloudWatch 日志记录

您可以通过选择您想要为每个新的或现有 Amazon EKS 集群启用的日志类型来开始使用 Amazon EKS 控制层面日志记录。您可以使用 Amazon Web Services Management Console、Amazon CLI(版本 1.16.139 或更高版本)或通过 Amazon EKS API 按集群启用或禁用每种日志类型。启用后,日志将从 Amazon EKS 集群自动发送到同一账户中的 CloudWatch Logs。

使用 Amazon EKS 控制面板日志记录时,您运行的每个集群将按标准 Amazon EKS 定价收费。对于从集群发送到 CloudWatch Logs 的任何日志,将向您收取标准 CloudWatch Logs 数据提取和存储费用。您还需要为预置为集群一部分的任何Amazon资源付费,如 Amazon EC2 实例或 Amazon EBS 卷。

以下集群控制层面日志类型可用。每个日志类型对应一个 Kubernetes 控制面板组件。要了解有关这些组件的更多信息,请参阅 Kubernetes 文档中的 Kubernetes 组件

API 服务器api)*

集群的 API 服务器是公开 Kubernetes API 的控制面板组件。如果您在启动集群时或在启动之后不久启用 API 服务器日志,则这些日志包括用于启动 API 服务器的 API 服务器标志。有关更多信息,请参阅 Kubernetes 文档中的 kube-apiserver审计策略

审计audit)*

Kubernetes 审计日志提供影响集群的单个用户、管理员或系统组件的记录。有关更多信息,请参阅 Kubernetes 文档中的审计

身份验证器authenticator)*

身份验证器日志对于 Amazon EKS 是唯一的。这些日志代表 Amazon EKS 使用 IAM 凭证用于 Kubernetes 基于角色的访问控制 (RBAC, Role based access control) 身份验证的控制面板组件。有关更多信息,请参阅 组织和监控集群资源

控制器管理器controllerManager)*

控制器管理器用来管理 Kubernetes 附带的核心控制环路。有关更多信息,请参阅 Kubernetes 文档中的 kube-controller-manager

计划程序scheduler)*

计划程序组件用来管理在集群中运行 Pods 的时间和位置。有关更多信息,请参阅 Kubernetes 文档中的 kube-scheduler

启用或禁用控制面板日志

默认情况下,集群控制面板面日志不会发送到 CloudWatch Logs 中。您必须单独启用每个日志类型来为集群发送日志。CloudWatch Logs 摄取、归档存储和数据扫描速率适用于已启用的控制层面日志。有关更多信息,请参阅 CloudWatch 定价

为了更新控制面板日志记录配置,Amazon EKS 要求每个子网中最多有五个可用的 IP 地址。启用日志类型后,发送的日志具有详细程度级别 2

Amazon Web Services Management Console
  1. 打开 Amazon EKS console(Amazon EKS 控制台)

  2. 选择集群的名称可以显示集群信息。

  3. 选择可观测性选项卡。

  4. 控制面板日志部分,选择管理日志记录

  5. 对于每个日志类型,选择开启还是关闭日志类型。默认情况下,每种日志类型都处于关闭状态。

  6. 选择 Save changes(保存更改)以完成操作。

Amazon CLI
  1. 使用以下命令查看您的 Amazon CLI 版本。

    aws --version

    如果您的 Amazon CLI 版本低于 1.16.139,则必须先更新到最新版本。要安装或升级 Amazon CLI,请参阅《Amazon 命令行界面用户指南》中的安装 Amazon 命令行界面

  2. 使用下面的 Amazon CLI 命令更新集群的控制面板日志导出配置。将 my-cluster 替换为您的集群名称并指定所需的端点访问值。

    注意

    以下命令将所有可用日志类型发送到 CloudWatch Logs。

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'

    示例输出如下。

    { "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "InProgress", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] } }
  3. 使用以下命令通过上一命令返回的集群名称和更新 ID 监控您的日志配置更新的状态。当状态显示为 Successful 时,您的更新将完成。

    aws eks describe-update \ --region region-code\ --name my-cluster \ --update-id 883405c8-65c6-4758-8cee-2a7c1340a6d9

    示例输出如下。

    { "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "Successful", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] } }

查看集群控制面板日志

为您的 Amazon EKS 集群启用任何控制层面日志类型后,您可以在 CloudWatch 控制台上进行查看。

要了解有关在 CloudWatch 中查看、分析和管理日志的详情,请参阅 Amazon CloudWatch Logs 用户指南

  1. 打开 CloudWatch console(CloudWatch 控制台)。此链接将打开控制台并显示您当前可用的日志组,并使用 /aws/eks 前缀筛选它们。

  2. 选择您要查看日志的集群。日志组名称格式为 /aws/eks/[.replaceable]my-cluster/cluster

  3. 选择要查看的日志流。以下列表介绍了每个日志类型的日志流名称格式。

    注意

    随着日志流数据增加,日志流名称将轮换。当某个日志类型存在多个日志流时,您可以通过查找包含最新的上次事件时间的日志流名称来查看最新的日志流。

    • Kubernetes API 服务器组件日志(*api)*– kube-apiserver-1234567890abcdef01234567890abcde

    • 审计(*audit)*– kube-apiserver-audit-1234567890abcdef01234567890abcde

    • 身份验证器(*authenticator)*– authenticator-1234567890abcdef01234567890abcde

    • 控制器管理器(*controllerManager)*– kube-controller-manager-1234567890abcdef01234567890abcde

    • 计划程序(*scheduler)*– kube-scheduler-1234567890abcdef01234567890abcde

    • 查看日志流的事件。

      例如,在查看 kube-apiserver-[.replaceable]1234567890abcdef01234567890abcde```` 顶部时,您应看到集群的初始 API 服务器标志。

      注意

      如果您在日志流的开头未看到 API 服务器日志,有可能是因为在您在服务器上启用 API 服务器日志记录之前,API 服务器日志文件已在服务器上轮换。在启用 API 服务器日志记录之前轮换的任何日志文件都无法导出到 CloudWatch。

不过,您可以使用相同的 Kubernetes 版本创建新集群,并在创建集群时启用 API 服务器日志记录。具有相同平台版本的集群会启用相同的标记,因此您的标记应该会与新集群的标记匹配。在 CloudWatch 中查看新集群的标记后,您可以删除新集群。