Registros de acceso de Amazon ECS Service Connect - Amazon Elastic Container Service

Registros de acceso de Amazon ECS Service Connect

Amazon ECS Service Connect es compatible con los registros de acceso para proporcionar telemetría detallada sobre las solicitudes individuales procesadas por el proxy de Service Connect. Los registros de acceso complementan los registros de aplicaciones existentes al capturar metadatos de tráfico por solicitud, como los métodos HTTP, las rutas, los códigos de respuesta, los indicadores y la información de temporización. Esto brinda una observabilidad más detallada de los patrones de tráfico a nivel de las solicitudes y las interacciones de los servicios para una resolución de problemas y una supervisión eficaces.

Para habilitar los registros de acceso, especifique los objetos logConfiguration y accessLogConfiguration del objeto serviceConnectConfiguration. Puede configurar el formato de los registros y si los registros deben incluir parámetros de consulta en accessLogConfiguration. El controlador de registro especificado en logConfiguration entrega los registros al grupo de registro de destino.

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

Consideraciones

Tenga en cuenta lo siguiente cuando habilite el acceso a los registros de acceso:

  • Tanto los registros de acceso como los registros de aplicación se escriben en /dev/stdout. Para separar los registros de acceso de los registros de aplicación, se recomienda utilizar el controlador de registro awsfirelens con una configuración Fluent Bit o Fluentd personalizada.

  • Se recomienda utilizar el controlador de registro awslogs para enviar los registros de aplicación y de acceso al mismo destino de CloudWatch.

  • Los registros de acceso son compatibles con los servicios de Fargate que utilizan la versión 1.4.0 y posteriores de la plataforma.

  • De forma predeterminada, los parámetros de consulta, como los ID de solicitud y los tokens, no se incluyen en los registros de acceso. Para incluir los parámetros de consulta en los registros de acceso, establezca includeQueryParameters en "ENABLED".

Formatos de los registro de acceso

Los registros de acceso se pueden formatear en diccionarios en formato JSON o en cadenas de formato de texto, con diferencias en los operadores de comandos compatibles para los distintos tipos de registros de acceso.

Registros de acceso HTTP

Los siguientes operadores de comandos se incluyen de forma predeterminada en los registros 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%" }

Registros de acceso HTTP2

Además de los operadores de comandos incluidos en los registros HTTP, los registros HTTP2 incluyen el operador %STREAM_ID% de forma predeterminada.

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

Registros de acceso gRPC

Además de los operadores de comandos incluidos en los registros HTTP, los registros de acceso gRPC incluyen los operadores %STREAM_ID% y %GRPC_STATUS()% de forma predeterminada.

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

Registros de acceso TCP

Los siguientes operadores de comandos se incluyen de forma predeterminada en los registros de acceso 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% }

Para obtener más información acerca de estos operadores de comandos, consulte Command Operators en la documentación de Envoy.