View a markdown version of this page

Supervisión de los clústeres de Aurora DSQL con información de base de datos de Aurora DSQL - Amazon Aurora DSQL

Supervisión de los clústeres de Aurora DSQL con información de base de datos de Aurora DSQL

La información de base de datos de Aurora DSQL proporciona acceso a los datos muestreados por segundo de cada sesión activa del clúster, recopilados por el muestreador del Historial de sesiones activas (DASH) de DSQL, que registra el estado de espera y la instrucción SQL normalizada que ejecuta cada sesión. Los resultados agregados por minuto de DASH se publican como métricas de CloudWatch OpenTelemetry (OTel). Utilice estos datos para comprender la carga de la base de datos, encontrar las consultas que consumen más recursos y diagnosticar problemas de rendimiento.

No es necesario configurar DASH. Se activa automáticamente para todos los clústeres de Aurora DSQL y los datos agregados por minuto están disponibles a través de Información sobre las bases de datos de Amazon CloudWatch y mediante consultas del Lenguaje de consultas Prometheus (PromQL) que se ejecutan en función de las métricas de CloudWatch OTel sin costo adicional.

¿Qué es DASH?

Una sesión activa representa una conexión única al clúster que tiene una transacción abierta. En un momento dado, cada sesión activa se encuentra en uno de estos tres estados:

  • Uso de CPU

  • En espera de que se complete una operación externa, como una lectura de almacenamiento o una confirmación de reconocimiento

  • Inactivo en una transacción, en espera de la siguiente instrucción de la aplicación en una transacción abierta

DASH solo rastrea las sesiones que tienen una transacción abierta. DASH captura esta actividad muestreando todas las sesiones activas del clúster una vez por segundo. Cada muestra registra dos cosas:

  • El evento de espera: el estado en el que se encontraba la sesión en el momento del muestreo. Consulte Eventos de espera de DASH para la lista completa.

  • La instrucción SQL: los primeros 256 caracteres de SQL que estaba ejecutando la sesión, suficientes para identificar la mayoría de las consultas.

DASH agrega estas muestras por segundo y las publica en CloudWatch una vez por minuto, desglosadas por evento de espera y por instrucción SQL. El resultado es una métrica de serie temporal única, db.active_sessions.avg, que registra el número promedio de sesiones activas durante cada periodo de muestra. Este valor también se conoce como Promedio de sesiones activas (AAS).

El AAS es la señal fundamental para el análisis de rendimiento de Aurora DSQL. El desglose de los eventos de espera muestra a qué dedican el tiempo las sesiones, no solo lo ocupado que está el clúster. El desglose de SQL atribuye la carga a consultas individuales.

sugerencia

Aurora DSQL escala la CPU de forma elástica, por lo que la señal de diagnóstico más útil es la forma del perfil de espera (la distribución proporcional del tiempo de sesión entre los eventos de espera) en lugar de la AAS con respecto a un límite fijo de vCPU. Compare esa forma con la línea base que observa durante el funcionamiento normal. Un cambio en esas proporciones indica un cambio en la carga de trabajo o en el comportamiento del sistema.

Métricas de DASH y eventos de espera

DASH expone una única métrica cuyas dimensiones permiten dividir la carga de la base de datos por evento de espera y por instrucción SQL. La tabla siguiente describe la métrica de DASH.

Métrica Unidad Descripción
db.active_sessions.avg Count The average number of active sessions on the cluster over the sample period (AAS). Each active session is either running on CPU or in a named wait state.

La métrica incluye las siguientes dimensiones (etiquetas), que se utilizan para agrupar y filtrar los datos.

Dimensión Descripción
db.wait.class The broader classification of wait events to identify the general type of resource contributing to the database load. For example, class:oncpu means the statement is actively running on the CPU, and class:io means that the statement is waiting for an input/output operation to complete.
db.wait.event The wait state the sampled sessions were in. See Eventos de espera de DASH for the full list of values.
db.session.state The session state – active (executing a statement) or idle in transaction (waiting for the next command from the application while the transaction remains open).
db.query.id The fingerprint of the normalized SQL text of the statement the sessions were running.
db.query.normalized_text The normalized SQL text of the statement the sessions were running. DASH removes literal values so that it groups statements that differ only in their parameters.
aws.auroradsql.session.role.arn The IAM role ARN assumed to connect to the Aurora DSQL cluster.
application.name The application name that you set in connection parameters. You can override it at connect time. DASH includes this dimension only when you explicitly set it.

Eventos de espera de DASH

Las sesiones de Aurora DSQL pueden experimentar los siguientes eventos de espera. Los eventos de espera relacionados con el almacenamiento; SequentialScanRead, ScatteredBatchRead, SingleRead, UniqueConstraintCheck y FkExistenceCheck, representan la comunicación entre la capa de procesamiento de consultas y la capa de almacenamiento, y Commit representa la comunicación con el servicio de confirmación. Es posible que esta lista se amplíe con el tiempo a medida que Aurora DSQL identifique nuevos eventos de espera.

Evento de espera Clase de espera Descripción
OnCpu class:oncpu The session isn't waiting for external input and is actively executing on CPU – parsing, planning, evaluating expressions, or processing results.
ClientRead class:client The session is idle within an open transaction, waiting for the application to send the next SQL statement or a commit/rollback command. Frequent or long ClientRead waits often indicate excessive application round-trips or transactions that you hold open longer than necessary.
ClientWrite class:client The database sends results to the application over the network. High ClientWrite can indicate large result sets or network latency between the application and the database.
SequentialScanRead class:io The session is reading a contiguous range of keys from storage. This isn't necessarily a full table scan – it might cover a relatively small range of contiguous keys.
ScatteredBatchRead class:io The session is performing batched reads from storage, retrieving multiple non-contiguous keys in a single call to storage.
SingleRead class:io The session is reading a single tuple (point lookup) from storage. ScatteredBatchRead with a batch size of 1 largely replaces this event, which is uncommon in current Aurora DSQL versions.
UniqueConstraintCheck class:io The session is validating unique key constraints, which requires storage reads to check for duplicates. This applies to both unique constraints on non-primary-key columns and primary key constraints during the insertion of new rows.
FkExistenceCheck class:io The session is validating that a referenced foreign key row exists, which requires reads to confirm the relationship.
StartTransaction class:io The session is preparing for the distributed transaction to begin.
Commit (Confirmar) class:io The session has initiated a commit and is waiting for acknowledgment from the commit service. The response is either a success or an abort (serialization error); a Commit (Confirmar) wait precedes both outcomes.
PgSleep class:timeout The session is sleeping because the application explicitly called pg_sleep(). This is an application-initiated wait, not a database-imposed one.

Acceso a datos de DASH

Puede acceder a los datos de DASH de tres formas:

  • Información sobre las bases de datos de Amazon CloudWatch: una interfaz de usuario (UI) seleccionada y sin código para explorar la carga de las bases de datos y las SQL principales. Este es el punto de partida de la mayoría de las investigaciones.

  • PromQL: consulte la métrica db.active_sessions.avg subyacente mediante programación para integrarla con herramientas de supervisión de terceros o para una exploración interactiva.

  • Habilidad de IA para el diagnóstico del sistema de Aurora DSQL: un agente de comprobación de estado basado en inteligencia artificial (IA) que analiza automáticamente los datos de DASH, compara las distribuciones de los eventos de espera en los distintos periodos de tiempo y genera informes de diagnóstico.

Todas estas rutas de acceso leen desde el mismo conjunto de datos de DASH.

Uso de información de base de datos de CloudWatch

La Información sobre las bases de datos de Amazon CloudWatch presenta los datos de DASH a través de un panel seleccionado específico para Aurora DSQL. Los clústeres de Aurora DSQL aparecen automáticamente en la información de base de datos; no necesita ninguna configuración aparte de crear el clúster y ejecutar transacciones en él.

Visualización de los datos de DASH en información de base de datos

  1. Abra la consola de CloudWatch y, en el panel de navegación izquierdo, elija Información de base de datos.

  2. En la vista Estado de la flota, localice el clúster de Aurora DSQL en la lista de recursos de bases de datos. Como alternativa, puede ir directamente a la página Instancia de base de datos y seleccionar el clúster en el panel izquierdo.

  3. Elija el identificador de base de datos para abrir el panel de instancias de base de datos.

  4. Utilice el gráfico Carga de base de datos para ver el promedio de sesiones activas a lo largo del tiempo. El gráfico es una visualización apilada en la que cada banda de color representa un evento de espera, por lo que la altura total muestra el grado de ocupación del clúster y las bandas muestran en qué invierten su tiempo las sesiones.

  5. Utilice el control Dividir por del gráfico Carga de base de datos para alternar entre los eventos de espera y el texto de SQL.

  6. La sección Análisis de carga de la base de datos muestra los AAS según los principales eventos de espera y el SQL principal clasificados según su contribución al AAS.

  7. Utilice el selector de intervalos de tiempo situado en la parte superior de la página para centrarse en una ventana de supervisión específica, como el periodo en el que se ha registrado una ralentización.

Uso de PromQL

DASH expone los datos como la métrica de CloudWatch db.active_sessions.avg, que puede consultar con PromQL en CloudWatch Query Studio.

Los siguientes ejemplos funcionan en Query Studio, donde el espacio de trabajo activo ya limita los resultados a la cuenta y región, y el selector de tiempo controla la ventana de evaluación. Como el nombre de la métrica contiene puntos, los ejemplos utilizan el formulario de selector de nombre entre comillas de PromQL, {"db.active_sessions.avg"}.

nota

Todos los ejemplos incluyen un filtro de etiquetas @resource.aws.auroradsql.cluster_id para limitar los resultados a un único clúster. Sustituya cluster-id por el identificador de clúster. Si solo tiene un clúster, puede omitir este filtro o usar los filtros de interfaz de usuario de Query Studio en su lugar. Para detectar todas las etiquetas disponibles en la métrica del entorno, ejecute {"db.active_sessions.avg"} como una consulta en serie e inspeccione el conjunto de etiquetas de cada serie devuelta.

Carga de la base de datos por evento de espera

Devuelve el número promedio de sesiones activas agrupadas por evento de espera: la misma vista de AAS por evento de espera disponible en el gráfico de carga de la base de datos de información de la base de datos, pero accesible mediante programación.

avg by ("db.wait.event") ( { "db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="cluster-id" } )

El resultado tiene una serie por cada valor db.wait.event distinto, y cada una contiene la contribución media de AAS de ese estado de espera.

SQL principal según el promedio de sesiones activas

Clasifica las instrucciones SQL según su contribución media a la carga de la base de datos. Es el equivalente de PromQL de la vista SQL principal de información de base de datos.

topk(5, avg by ("db.query.normalized_text") ( { "db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="cluster-id" } ) )

Para ver las principales combinaciones de instrucciones SQL y eventos de espera según su contribución a la carga, agregue db.wait.event a la cláusula de agrupamiento. Como esto clasifica todas las combinaciones juntas, los resultados pueden incluir varios eventos de espera para la misma instrucción de alta contribución:

topk(5, avg by ("db.query.normalized_text", "db.wait.event") ( { "db.active_sessions.avg", "@resource.aws.auroradsql.cluster_id"="cluster-id" } ) )
Instrucciones SQL que realizan la mayor cantidad de lecturas de almacenamiento

Devuelve las cinco instrucciones SQL que más tiempo dedican a las operaciones de lectura de almacenamiento, filtrándolas por los eventos de espera de lectura de almacenamiento.

topk(5, sum by ("db.query.normalized_text") ( { "db.active_sessions.avg", "db.wait.event"=~"S.*Read|.*Check", "@resource.aws.auroradsql.cluster_id"="cluster-id" } ) )

La expresión regular S.*Read coincide con los eventos de lectura de almacenamiento cuyos nombres comienzan con S y terminan con Read (SequentialScanRead, ScatteredBatchRead, SingleRead). El patrón incluye .*Check explícitamente porque los eventos de espera UniqueConstraintCheck y FkExistenceCheck no coinciden con el primer patrón, pero también son eventos de espera de lectura de almacenamiento.

Uso de la habilidad de IA de diagnóstico del sistema de Aurora DSQL

La habilidad de IA de diagnóstico del sistema de Aurora DSQL automatiza el análisis de comprobación de estado del clúster de Aurora DSQL mediante la lectura de los datos de DASH, la comparación de las distribuciones de los eventos de espera en los distintos periodos de tiempo y la generación de un informe de diagnóstico. La habilidad forma parte del complemento databases-on-aws en complementos de agente para AWS en el repositorio awslabs/agent-plugins y funciona con cualquier agente de codificación de IA compatible.

Para analizar el estado del clúster, emita una petición como la siguiente:

“Compruebe el rendimiento de mi clúster de Aurora DSQL cluster-id en us-east-1 y escríbame un informe de markdown”.

La habilidad utiliza el servidor de protocolo de contexto para modelos (MCP) de CloudWatch para analizar la métrica db.active_sessions.avg en una selección de periodos de tiempo y devuelve un informe de markdown. Puede dirigir esta ventana de comparación del rendimiento en la petición:

“Compruebe el rendimiento de las últimas 4 horas y compárelo con el del lunes pasado”.

Cuando las consultas específicas parecen problemáticas, la habilidad inicia un flujo de trabajo de diagnóstico más profundo centrado en SQL e informa sobre las posibles soluciones para esa instrucción. Decide si se debe profundizar en una consulta en función del cambio de eventos de espera que detecte, de modo que no necesite más indicaciones.