View a markdown version of this page

Journaux d'accès à Amazon ECS Service Connect - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Journaux d'accès à Amazon ECS Service Connect

Amazon ECS Service Connect prend en charge les journaux d'accès afin de fournir une télémétrie détaillée sur les demandes individuelles traitées par le proxy Service Connect. Les journaux d'accès complètent les journaux d'applications existants en capturant les métadonnées du trafic par demande, telles que les méthodes HTTP, les chemins, les codes de réponse, les indicateurs et les informations de synchronisation. Cela permet une meilleure observabilité des modèles de trafic au niveau des demandes et des interactions entre les services pour un dépannage et une surveillance efficaces.

Pour activer les journaux d'accès, spécifiez à la fois accessLogConfiguration les objets logConfiguration et dans l'serviceConnectConfigurationobjet. Vous pouvez configurer le format des journaux et déterminer si les journaux doivent inclure des paramètres de requête dans leaccessLogConfiguration. Les journaux sont transmis au groupe de journaux de destination par le pilote de journal spécifié dans le. 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" } } }

Considérations

Lorsque vous activez l'accès aux journaux d'accès, tenez compte des points suivants :

  • Les journaux d'accès et les journaux des applications sont tous deux écrits dans/dev/stdout. Pour séparer les journaux d'accès des journaux des applications, nous vous recommandons d'utiliser le pilote de awsfirelens journal avec une Fluentd configuration personnaliséeFluent Bit.

  • Nous vous recommandons d'utiliser le pilote de awslogs journal pour envoyer les journaux d'application et d'accès vers la même CloudWatch destination.

  • les journaux d'accès sont pris en charge sur les services Fargate qui utilisent la version de la plateforme ou une version ultérieure1.4.0.

  • Les paramètres de requête tels que les identifiants de demande et les jetons sont exclus des journaux d'accès par défaut. Pour inclure les paramètres de requête dans les journaux d'accès, définissez includeQueryParameters sur"ENABLED".

Formats de journal d'accès

les journaux d'accès peuvent être formatés soit dans des dictionnaires au format JSON, soit dans des chaînes au format texte, avec des différences dans les opérateurs de commande pris en charge pour les différents types de journaux d'accès.

Journaux d'accès HTTP

Les opérateurs de commande suivants sont inclus par défaut pour les journaux HTTP :

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%" }

Journaux d'accès HTTP2

Outre les opérateurs de commande inclus pour les journaux HTTP, les journaux HTTP2 incluent l'%STREAM_ID%opérateur par défaut.

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%" }

Journaux d'accès gRPC

Outre les opérateurs de commande inclus pour les journaux HTTP, les journaux d'accès gRPC incluent l'%GRPC_STATUS()%opérateur %STREAM_ID% et par défaut.

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%" }

Journaux d'accès TCP

Les opérateurs de commande suivants sont inclus par défaut dans les journaux d'accès TCP :

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% }

Pour plus d'informations sur ces opérateurs de commande, consultez la section Opérateurs de commande dans la documentation Envoy.