日志记录 - Amazon App Mesh
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

日志记录

重要

终止支持通知:2026 年 9 月 30 日, Amazon 将停止对的支持。 Amazon App Mesh 2026 年 9 月 30 日之后,您将无法再访问 Amazon App Mesh 控制台或 Amazon App Mesh 资源。如需了解更多信息,请访问此博客文章从迁移 Amazon App Mesh 到 Amazon S ECS ervice Connect

创建虚拟节点和虚拟网关时,您可以选择配置 Envoy 访问日志。在控制台中,这位于虚拟节点和虚拟网关创建或编辑工作流程的日志记录部分中。

Logging configuration interface showing HTTP access logs path field with example path.

上图显示了 Envoy 访问日志 /dev/stdout 的日志记录路径。

对于format,请指定两种可能的格式之一textjson和模式。 json获取密钥对并将其转换为JSON结构,然后再将它们传递给 Envoy。

以下代码块显示了可以在中使用的JSON表示形式 Amazon CLI。

"logging": { "accessLog": { "file": { "path": "/dev/stdout", "format" : { // Exactly one of json or text should be specified "json": [ // json will be implemented with key pairs { "key": "string", "value": "string" } ] "text": "string" //e.g. "%LOCAL_REPLY_BODY%:%RESPONSE_CODE%:path=%REQ(:path)%\n" } } } }
重要

请务必检查您的输入模式是否对 Envoy 有效,否则 Envoy 将拒绝更新并将最新的更改存储在 error state 中。

当您向 /dev/stdout 发送 Envoy 访问日志时,它们会与 Envoy 容器日志混在一起。您可以使用标准 Docker 日志驱动程序将它们导出到 CloudWatch 日志存储和处理服务(例如 Logsawslogs)。有关更多信息,请参阅《亚马逊ECS开发者指南》中的使用 awslogs 日志驱动程序。要仅导出 Envoy 访问日志(而忽略其他 Envoy 容器日志),可以 ENVOY_LOG_LEVEL 将设置为 off。您可以通过包含格式字符串 %REQ_WITHOUT_QUERY(X?Y):Z% 来记录不带查询字符串的请求。有关示例,请参阅ReqWithoutQuery 格式化程序。有关更多信息,请参阅 Envoy 文档中的访问日志记录

在 Kubernetes 上启用访问日志

使用适用于 Kubernetes 的 App Mesh Controller 时,您可以通过将日志配置添加到虚拟节点规范中,为虚拟节点配置访问日志,如以下示例所示。

--- apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualNode metadata: name: virtual-node-name namespace: namespace spec: listeners: - portMapping: port: 9080 protocol: http serviceDiscovery: dns: hostName: hostname logging: accessLog: file: path: "/dev/stdout"

您的集群必须有日志转发器才能收集这些日志,例如 Fluentd。有关更多信息,请参阅将 Fluentd 设置为 DaemonSet 向日志发送日志。 CloudWatch

Envoy 还会将各种调试日志从其过滤器写入 stdout。这些日志对于深入了解 Envoy 与 App Mesh 的通信和 service-to-service流量非常有用。可以使用 ENVOY_LOG_LEVEL 环境变量配置您的特定日志级别。例如,以下文本来自调试日志示例,该日志显示 Envoy 为特定HTTP请求匹配的集群。

[debug][router] [source/common/router/router.cc:434] [C4][S17419808847192030829] cluster 'cds_ingress_howto-http2-mesh_color_client_http_8080' match for URL '/ping'

Firelens 和 Cloudwatch

Firelens 是一款容器日志路由器,您可以使用它来收集亚马逊ECS的日志,以及。 Amazon Fargate您可以在我们的示例存储库中找到使用 Firelens 的Amazon 示例

您可以使用 CloudWatch 来收集日志信息以及指标。您可以在 App Mesh 文档的导出指标部分 CloudWatch 中找到更多信息。