日誌 - AWS App Mesh

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

日誌

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

上述影像顯示 Envoy 存取記錄/dev/stdout的記錄路徑。

對於format,指定兩可能的格式之一textjson、和樣式。 json接受密鑰對並將其轉換為 JSON 結構,然後再將它們傳遞給特使。

下列程式碼區塊顯示您可以在中使用的 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 日誌存儲和處理服務,例如日誌awslogs。如需詳細資訊,請參閱《Amazon ECS ECS ECS 日誌記錄》中的使用 awslog 日誌驅動程式。若只要匯出 Envoy 存取記錄 (並忽略其他 Envoy 容器記錄),您可以將設定ENVOY_LOG_LEVELoff。您可以透過包含格式字串來記錄要求,而不需要查詢字串%REQ_WITHOUT_QUERY(X?Y):Z%。如需範例,請參閱ReqWithoutQuery格式化程式。如需詳細資訊,請參閱 Envoy 文件中的存取日誌記錄

在 Kubernetes 上啟用存取日誌

針對 Kubernetes 使用 App Mesh 控制器時,您可以透過將記錄組態新增至虛擬節點規格來設定具有存取記錄的虛擬節點,如下列範例所示。

--- 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'

防火鏡和雲觀察

火鏡是一個容器日誌路由器,你可以用來收集日誌亞馬遜 ECS 和AWS Fargate. 您可以在我們的樣AWS品庫中找到使用 Firelens 的示例。

您可以使用 CloudWatch 來收集記錄資訊以及指標。您可以在 App Mesh 文檔 CloudWatch 的導出指標部分中找到有關的更多信息。