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.avgsubyacente 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
-
Abra la consola de CloudWatch y, en el panel de navegación izquierdo, elija Información de base de datos.
-
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.
-
Elija el identificador de base de datos para abrir el panel de instancias de base de datos.
-
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.
-
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.
-
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.
-
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
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.
Recursos relacionados
-
Consulta de métricas con PromQL: información general de la compatibilidad con PromQL en CloudWatch.
-
Ejecución de consultas de PromQL en Query Studio: el entorno de trabajo de consultas interactivo de la consola de CloudWatch.
-
Métricas vendidas de AWS en formato OpenTelemetry: cómo se exponen las métricas de servicio de AWS, incluidas las de Aurora DSQL, como series temporales consultables por PromQL.
-
Información sobre las bases de datos de Amazon CloudWatch: la interfaz de usuario de CloudWatch para supervisar la carga y el rendimiento de las bases de datos.
-
Complementos de agente para AWS
en el sitio web de GitHub: repositorio de origen del complemento databases-on-awsque contiene la habilidad de IA de diagnóstico del sistema de Aurora DSQL.