

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 访问 EKS 功能控制器日志
<a name="capabilities-controller-logs"></a>

适用于 ACK、kro 和 Argo CD 的 EKS 功能控制器在集群之外的 AWS 托管式基础设施中运行。您可以使用 Amazon CloudWatch Vended Logs 为这些控制器配置日志传输，从而了解控制器行为以进行监控和问题排查。

这些日志以结构化 JSON 格式传送，包括日志级别、消息、控制器名称和协调标识符等操作字段。内部的 AWS 元数据在传输之前会进行筛选，确保您只会收到与您的功能控制器相关的操作日志内容。

## 支持的日志类型
<a name="_supported_log_types"></a>

每种功能都有一种或多种日志类型，您可以将这些日志类型单独配置为 CloudWatch Vended Logs 传输来源。

 **ACK** 
+  **EKS\_CAPABILITY\_ACK\_LOGS** 

 **kro** 
+  **EKS\_CAPABILITY\_KRO\_LOGS** 

 **Argo CD** 
+  **EKS\_CAPABILITY\_ARGOCD\_APPLICATION\_LOGS** 
+  **EKS\_CAPABILITY\_ARGOCD\_APPLICATIONSET\_LOGS** 
+  **EKS\_CAPABILITY\_ARGOCD\_COMMITSERVER\_LOGS** 
+  **EKS\_CAPABILITY\_ARGOCD\_REPOSERVER\_LOGS** 
+  **EKS\_CAPABILITY\_ARGOCD\_SERVER\_LOGS** 

ACK 使用单一日志类型来涵盖所有 ACK 服务控制器。日志记录包括一个 `controllerGroup` 字段（例如 `s3.services.k8s.aws`、`rds.services.k8s.aws`），用于标识生成相关日志的具体 ACK 服务控制器。您可以利用此字段在 CloudWatch Logs Insights 或其他查询工具中筛选特定服务控制器的日志。

Argo CD 有五种不同的日志类型，每个控制器组件一种。这让您可以仅为所需的控制器启用日志记录功能，并将其路由到不同的目标。

## 设置日志传输
<a name="_setting_up_log_delivery"></a>

要配置功能控制器日志传输，请使用 AWS 管理控制台或 Amazon CloudWatch Logs API。有关详细设置说明，请参阅《Amazon CloudWatch Logs 用户指南》中的[从 AWS 服务中启用日志记录](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-vended-logs-permissions-V2.html)。每个功能控制器都可以配置为一个单独的 CloudWatch Vended Logs 传输来，从而让您可以选择要接收的日志。

### 控制台
<a name="_console"></a>

1. 从以下位置打开 Amazon EKS 控制台：https://console.aws.amazon.com/eks/home\#/clusters。

1. 选择集群名称。

1. 选择**权能**选项卡，然后选择所需的功能。

1. 在**日志传输**部分中，选择**添加**。

1. 选择该功能的日志类型，然后选择目标。

1. 选择**添加**以创建传输。

### 使用 Amazon CloudWatch API
<a name="_using_amazon_cloudwatch_apis"></a>

设置日志记录需要三个步骤：

1. 使用 CloudWatch `PutDeliverySource` API 为该功能创建传输来源。将功能 ARN 作为 `resourceArn` 并指定所需的日志类型。

1. 使用 `PutDeliveryDestination` 创建传输目标。指定 CloudWatch 日志组、S3 存储桶或 Amazon Data Firehose 传输流的 ARN。

1. 使用 `CreateDelivery` 创建传输以连接来源和目标。

您可以使用 `describe-capability` 命令检索功能 ARN：

```
aws eks describe-capability \
  --region {{region-code}} \
  --cluster-name {{my-cluster}} \
  --capability-name {{my-capability}} \
  --query 'capability.capabilityArn' --output text
```

您可以通过创建多个传输，将单个功能（传输来源）配置为将日志发送到多个目标。您也可以将来自多个功能的日志发送到同一目标。

### IAM 权限
<a name="_iam_permissions"></a>

根据所选的目标，您可能需要为 CloudWatch 日志组、S3 存储桶和 Amazon Data Firehose 传输流配置 IAM 策略或角色，以确保能够成功传输日志。如果需要跨 AWS 账户发送日志，请使用 `PutDeliveryDestinationPolicy` API 来配置允许将日志传输到目标的 IAM 策略。有关更多信息，请参阅 [CloudWatch Vended Logs 权限文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)。

## 示例：使用 CloudWatch Logs Insights 查询日志
<a name="_example_querying_logs_with_cloudwatch_logs_insights"></a>

要查看所有控制器的错误日志，请执行以下操作：

```
fields @timestamp, controller, message, error
| filter level = "error"
| sort @timestamp desc
| limit 50
```

有关更多查询示例，包括按服务控制器筛选、跟踪协调周期和 Argo CD 应用程序筛选等，请参阅[使用控制器日志进行问题排查](capabilities-troubleshooting.md)。

## 查看日志
<a name="_viewing_your_logs"></a>

配置好日志传输后，日志将会传输至您指定的目标。访问日志的方法取决于您选择的目标类型：
+  **CloudWatch Logs**：通过 CloudWatch Logs 控制台、 AWS CLI 命令或 CloudWatch Logs Insights 查询来查看日志。
+  **Amazon S3**：通过 S3 控制台、AWS CLI 或 Amazon Athena 等分析工具访问作为 S3 存储桶中对象的日志。
+  **Amazon Data Firehose**：日志将流式传输到您配置的 Firehose 目标（例如 S3、OpenSearch Service、Redshift 等）。

## 定价
<a name="_pricing"></a>

CloudWatch Vended Logs 会根据您选择的传输目标来收取日志传输及存储费用。与标准的 CloudWatch Logs 相比，CloudWatch Vended Logs 通过内置的 AWS 身份验证和授权实现可靠、安全的日志传输，且价格更低。有关更多详细信息，请参阅 [CloudWatch 定价页面的 Vended Logs 部分](https://aws.amazon.com/cloudwatch/pricing/)。