Administración de operaciones de alta cardinalidad
Application Signals incluye configuraciones en el agente de CloudWatch que puede usar para administrar la cardinalidad de sus operaciones y administrar la exportación de métricas para optimizar los costes. De forma predeterminada, la función de limitación de métricas se activa cuando el número de operaciones distintas de un servicio a lo largo del tiempo supera el umbral predeterminado de 500. Puede ajustar el comportamiento ajustando los ajustes de configuración.
Comprobación de si la limitación de métricas está activada
Puede utilizar uno de los métodos siguientes para comprobar si se está aplicando el límite de métricas predeterminado. Si es así, debe considerar la posibilidad de optimizar el control de cardinalidad siguiendo los pasos que se indican en la siguiente sección.
En la consola de CloudWatch, elija Application Signals, Servicios. Si ve una Operación llamada AllOtherOperations o una RemoteOperation llamada AllOtherRemoteOperations, significa que se está limitando la métrica.
Si alguna métrica recopilada por Application Signals tiene el valor
AllOtherOperations
de su dimensiónOperation
, entonces se está produciendo una limitación de la métrica.Si alguna métrica recopilada por Application Signals tiene el valor
AllOtherRemoteOperations
de su dimensiónRemoteOperation
, entonces se está produciendo una limitación de la métrica.
Optimización del control de cardinalidad
Para optimizar el control de cardinalidad, puede hacer lo siguiente:
Cree reglas personalizadas para agregar operaciones.
Configure su política de limitación de métricas.
Creación de reglas personalizadas para agregar operaciones
A veces, las operaciones de alta cardinalidad pueden deberse a valores únicos inapropiados extraídos del contexto. Por ejemplo, enviar solicitudes HTTP/S que incluyan ID de usuario o ID de sesión en la ruta puede provocar cientos de operaciones dispares. Para resolver estos problemas, recomendamos configurar el agente de CloudWatch con reglas de personalización para volver a escribir estas operaciones.
En los casos en los que se generen numerosas métricas diferentes a través de llamadas RemoteOperation
individuales, por ejemplo PUT /api/customer/owners/123
, PUT /api/customer/owners/456
y solicitudes similares, le recomendamos que consolide estas operaciones en una sola RemoteOperation
. Un enfoque es estandarizar todas las llamadas RemoteOperation
que comienzan con PUT /api/customer/owners/
a un formato uniforme, específicamente PUT /api/customer/owners/{ownerId}
. En el siguiente ejemplo, se ilustra este caso. Para obtener información sobre otras reglas de personalización, consulte Habilitación de CloudWatch Application Signals.
{ "logs":{ "metrics_collected":{ "application_signals":{ "rules":[ { "selectors":[ { "dimension":"RemoteOperation", "match":"PUT /api/customer/owners/*" } ], "replacements":[ { "target_dimension":"RemoteOperation", "value":"PUT /api/customer/owners/{ownerId}" } ], "action":"replace" } ] } } } }
En otros casos, es posible que las métricas de alta cardinalidad se hayan agregado a AllOtherRemoteOperations
y es posible que no esté claro qué métricas específicas se incluyen. El agente de CloudWatch puede registrar las operaciones interrumpidas. Para identificar las operaciones interrumpidas, utilice la configuración del siguiente ejemplo para activar el registro hasta que el problema vuelva a surgir. A continuación, inspeccione los registros del agente de CloudWatch (a los que se puede acceder mediante un contenedor stdout
o archivos de registro de EC2) y busque la palabra clave drop metric data
.
{ "agent": { "config": { "agent": { "debug": true }, "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { "limiter": { "log_dropped_metrics": true } } } } } } }
Creación de su política de limitación de métricas
Si la configuración de limitación de métricas predeterminada no aborda la cardinalidad de su servicio, puede personalizar la configuración del limitador de métricas. Para configurar esta acción, agregue una sección limiter
en la sección logs/metrics_collected/application_signals
del archivo de configuración del agente de CloudWatch.
El siguiente ejemplo reduce el umbral del límite de métricas de 500 métricas distintas a 100.
{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "drop_threshold": 100 } } } } }