

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 日誌
<a name="envoy-logs"></a>

**重要**  
支援終止通知：2026 年 9 月 30 日， AWS 將停止支援 AWS App Mesh。2026 年 9 月 30 日之後，您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊，請參閱此部落格文章[從 遷移 AWS App Mesh 至 Amazon ECS Service Connect](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)。

當您建立虛擬節點和虛擬閘道時，您可以選擇設定 Envoy 存取日誌。在 主控台中，這是在虛擬節點和虛擬閘道的**記錄**區段中建立或編輯工作流程。

![\[Logging configuration interface showing HTTP access logs path field with example path.\]](http://docs.aws.amazon.com/zh_tw/app-mesh/latest/userguide/images/logging.png)


上圖顯示 Envoy 存取日誌`/dev/stdout`的 記錄路徑。

對於 `format`，指定兩種可能格式**之一**，`json`*或* `text`和 模式。 會`json`先取得金鑰對並將其轉換為 JSON 結構，再將其傳遞給 Envoy。

下列程式碼區塊顯示您可以在 中使用的 JSON 表示法 AWS 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`。

當您將 Envoy 存取日誌傳送至 時`/dev/stdout`，它們會與 Envoy 容器日誌混合。您可以使用 等標準 Docker 日誌驅動程式，將它們匯出至日誌儲存和處理服務，例如 CloudWatch Logs`awslogs`。如需詳細資訊，請參閱《Amazon ECS 開發人員指南》中的[使用 awslogs 日誌驅動程式](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html)。若要僅匯出 Envoy 存取日誌 （並忽略其他 Envoy 容器日誌），您可以將 `ENVOY_LOG_LEVEL` 設定為 `off`。您可以包含格式字串 來記錄沒有查詢字串的請求`%REQ_WITHOUT_QUERY(X?Y):Z%`。如需範例，請參閱 [`ReqWithoutQuery` Formatter](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/formatter/req_without_query/v3/req_without_query.proto)。如需詳細資訊，請參閱 Envoy 文件中的[存取記錄](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/access_log.html)。

**在 Kubernetes 上啟用存取日誌**  
使用適用於 [Kubernetes 的 App Mesh 控制器](https://docs.aws.amazon.com/app-mesh/latest/userguide/mesh-k8s-integration.html)時，您可以將記錄組態新增至虛擬節點規格，以使用存取記錄來設定虛擬節點，如下列範例所示。

```
---
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 Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs.html)。

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
<a name="firelens-cloudwatch-logging"></a>

[Firelens](https://aws.amazon.com/about-aws/whats-new/2019/11/aws-launches-firelens-log-router-for-amazon-ecs-and-aws-fargate/#:~:text=FireLens%20is%20a%20container%20log,for%20log%20analytics%20and%20storage.&text=This%20means%20you%20can%20use,your%20own%20Fluentd%20output%20plugin.) 是一種容器日誌路由器，可用來收集 Amazon ECS 和 的日誌 AWS Fargate。您可以在我們的[AWS 範例儲存庫](https://github.com/aws-samples/amazon-ecs-firelens-examples)中找到使用 Firelens 的範例。

您可以使用 CloudWatch 來收集記錄資訊和指標。您可以在 App Mesh 文件的[匯出指標](https://docs.aws.amazon.com/app-mesh/latest/userguide/metrics.html#cloudwatch)區段中找到 CloudWatch 的詳細資訊。