Amazon ECS Service Connect-Zugriffsprotokolle - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon ECS Service Connect-Zugriffsprotokolle

Amazon ECS Service Connect unterstützt Zugriffsprotokolle, um detaillierte Telemetriedaten zu einzelnen Anfragen bereitzustellen, die vom Service Connect-Proxy verarbeitet werden. Zugriffsprotokolle ergänzen bestehende Anwendungsprotokolle, indem sie Verkehrsmetadaten pro Anfrage wie HTTP-Methoden, Pfade, Antwortcodes, Flags und Zeitinformationen erfassen. Dies ermöglicht eine tiefere Beobachtung von Verkehrsmustern und Serviceinteraktionen auf Anforderungsebene für eine effektive Fehlerbehebung und Überwachung.

Um Zugriffsprotokolle zu aktivieren, geben Sie sowohl die als auch die logConfiguration accessLogConfiguration Objekte im Objekt an. serviceConnectConfiguration Sie können das Format der Protokolle konfigurieren und festlegen, ob die Protokolle Abfrageparameter in der enthalten sollenaccessLogConfiguration. Die Protokolle werden von dem im angegebenen Protokolltreiber an die Zielprotokollgruppe übermittelt. logConfiguration

{ "serviceConnectConfiguration": { "enabled": true, "namespace": "myapp.namespace", "services": [ ... ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "my-envoy-log-group", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "myapp-envoy-logs" } }, "accessLogConfiguration": { "format": "TEXT", "includeQueryParameters": "ENABLED" } } }

Überlegungen

Beachten Sie Folgendes, wenn Sie den Zugriff auf Zugriffsprotokolle aktivieren

  • Sowohl Zugriffs- als auch Anwendungsprotokolle werden geschrieben/dev/stdout. Um Zugriffsprotokolle von Anwendungsprotokollen zu trennen, empfehlen wir, den awsfirelens Protokolltreiber mit einer benutzerdefinierten Fluent Bit Fluentd Konfiguration zu verwenden.

  • Wir empfehlen, den awslogs Protokolltreiber zu verwenden, um Anwendungs- und Zugriffsprotokolle an dasselbe CloudWatch Ziel zu senden.

  • Zugriffsprotokolle werden auf Fargate-Diensten unterstützt, die eine Plattformversion 1.4.0 und höher verwenden.

  • Abfrageparameter wie Anforderungs-IDs und Token sind standardmäßig aus den Zugriffsprotokollen ausgeschlossen. Um Abfrageparameter in Zugriffsprotokolle aufzunehmen, legen Sie includeQueryParameters den Wert auf fest"ENABLED".

Formate für Zugriffsprotokolle

Zugriffsprotokolle können entweder in Wörterbüchern im JSON-Format oder in Zeichenketten im Textformat formatiert werden, wobei sich die unterstützten Befehlsoperatoren für verschiedene Arten von Zugriffsprotokollen unterscheiden.

HTTP-Zugriffsprotokolle

Die folgenden Befehlsoperatoren sind standardmäßig für HTTP-Logs enthalten:

Text
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"\n
JSON
{ "start_time": "%START_TIME%", "method": "%REQ(:METHOD)%", "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%", "protocol": "%PROTOCOL%", "response_code": "%RESPONSE_CODE%", "bytes_received": "%BYTES_RECEIVED%", "bytes_sent": "%BYTES_SENT%", "duration_ms": "%DURATION%", "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%", "forwarded_for": "%REQ(X-FORWARDED-FOR)%", "user_agent": "%REQ(USER-AGENT)%", "request_id": "%REQ(X-REQUEST-ID)%", "authority": "%REQ(:AUTHORITY)%", "upstream_host": "%UPSTREAM_HOST%" }

HTTP2 Zugriffs-Logs

Zusätzlich zu den Befehlsoperatoren, die für HTTP-Logs enthalten sind, enthalten HTTP2 Logs standardmäßig den %STREAM_ID% Operator.

Text
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%STREAM_ID%"\n
JSON
{ "start_time": "%START_TIME%", "method": "%REQ(:METHOD)%", "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%", "protocol": "%PROTOCOL%", "response_code": "%RESPONSE_CODE%", "bytes_received": "%BYTES_RECEIVED%", "bytes_sent": "%BYTES_SENT%", "duration": "%DURATION%", "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%", "forwarded_for": "%REQ(X-FORWARDED-FOR)%", "user_agent": "%REQ(USER-AGENT)%", "request_id": "%REQ(X-REQUEST-ID)%", "authority": "%REQ(:AUTHORITY)%", "upstream_host": "%UPSTREAM_HOST%", "stream_id": "%STREAM_ID%" }

gRPC-Zugriffsprotokolle

Zusätzlich zu den Befehlsoperatoren, die für HTTP-Protokolle enthalten sind gRPC gRPC-Zugriffsprotokolle standardmäßig den %GRPC_STATUS()% Operator %STREAM_ID% and.

Text
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %GRPC_STATUS()% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%STREAM_ID%"\n
JSON
{ "start_time": "%START_TIME%", "method": "%REQ(:METHOD)%", "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%", "protocol": "%PROTOCOL%", "response_code": "%RESPONSE_CODE%", "grpc_status": "%GRPC_STATUS()%", "bytes_received": "%BYTES_RECEIVED%", "bytes_sent": "%BYTES_SENT%", "duration": "%DURATION%", "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%", "forwarded_for": "%REQ(X-FORWARDED-FOR)%", "user_agent": "%REQ(USER-AGENT)%", "request_id": "%REQ(X-REQUEST-ID)%", "authority": "%REQ(:AUTHORITY)%", "upstream_host": "%UPSTREAM_HOST%", "stream_id": "%STREAM_ID%" }

TCP-Zugriffsprotokolle

Die folgenden Befehlsoperatoren sind standardmäßig in TCP-Zugriffsprotokollen enthalten:

Text
[%START_TIME%] %DOWNSTREAM_REMOTE_ADDRESS% %DOWNSTREAM_REMOTE_PORT% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %CONNECTION_TERMINATION_DETAILS% %CONNECTION_ID%\n
JSON
{ "start_time": "%START_TIME%", "downstream_remote_address": "%DOWNSTREAM_REMOTE_ADDRESS%", "downstream_remote_port": "%DOWNSTREAM_REMOTE_PORT%",s "bytes_received": "%BYTES_RECEIVED%", "bytes_sent": "%BYTES_SENT%", "duration": "%DURATION%", "connection_termination_details": "%CONNECTION_TERMINATION_DETAILS%", "connection_id": %CONNECTION_ID% }

Weitere Informationen zu diesen Befehlsoperatoren finden Sie unter Befehlsoperatoren in der Envoy-Dokumentation.