本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
日誌
重要
支援終止通知:2026 年 9 月 30 日, AWS 將停止支援 AWS App Mesh。2026 年 9 月 30 日之後,您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊,請參閱此部落格文章從 遷移 AWS App Mesh 至 Amazon ECS Service Connect
當您建立虛擬節點和虛擬閘道時,您可以選擇設定 Envoy 存取日誌。在 主控台中,這是在虛擬節點和虛擬閘道的記錄區段中建立或編輯工作流程。

上圖顯示適用於 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 Logsawslogs
。如需詳細資訊,請參閱《Amazon ECS 開發人員指南》中的使用 awslogs Log Driver。若要僅匯出 Envoy 存取日誌 (並忽略其他 Envoy 容器日誌),您可以將 ENVOY_LOG_LEVEL
設定為 off
。您可以包含格式字串 來記錄沒有查詢字串的請求%REQ_WITHOUT_QUERY(X?Y):Z%
。如需範例,請參閱 ReqWithoutQuery
Formatter
在 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 Logs。
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
您可以使用 CloudWatch 來收集記錄資訊和指標。您可以在 App Mesh 文件的匯出指標區段中找到 CloudWatch 的詳細資訊。