Creación de perfiles de operaciones en Amazon DocumentDB - Amazon DocumentDB

Creación de perfiles de operaciones en Amazon DocumentDB

Puede utilizar el generador de perfiles en Amazon DocumentDB (con compatibilidad con MongoDB) para registrar el tiempo de ejecución y los detalles de las operaciones realizadas en el clúster. El generador de perfiles es útil para monitorizar las operaciones más lentas del clúster para ayudarle a mejorar el rendimiento de las consultas individuales y el rendimiento general del clúster.

De forma predeterminada, la característica del generador de perfiles está deshabilitada. Cuando está habilitada, el generador de perfiles registra las operaciones que tardan más que un valor de umbral definido por el cliente (por ejemplo, 100 ms) en Registros de Amazon CloudWatch. Los detalles registrados incluyen el comando con perfil, la hora, el resumen del plan y los metadatos del cliente. Después de que las operaciones se registren en CloudWatch Logs, puede utilizar CloudWatch Logs Insights para analizar, monitorizar y archivar los datos de perfiles de Amazon DocumentDB. En la sección Consultas comunes se proporcionan consultas comunes.

Cuando está habilitado, el generador de perfiles utiliza recursos adicionales en el clúster. Le recomendamos que comience con un valor de umbral alto (por ejemplo, 500 ms) y que reduzca gradualmente el valor para identificar las operaciones lentas. Comenzar con un valor umbral de 50 ms puede provocar problemas de rendimiento en el clúster para aplicaciones de alto rendimiento. El generador de perfiles está habilitado en el nivel de clúster y funciona en todas las instancias y bases de datos de un clúster. Amazon DocumentDB registra las operaciones en los Registros de Amazon CloudWatch en la medida en que sea posible.

Aunque Amazon DocumentDB no impone ningún recargo adicional para habilitar el generador de perfiles, se le cobrarán tarifas estándar por el uso de CloudWatch Logs. Para obtener más información sobre los precios de CloudWatch Logs, consulte Precios de Amazon CloudWatch.

Operaciones admitidas

El generador de perfiles de Amazon DocumentDB admite las siguientes operaciones:

  • aggregate

  • count

  • delete

  • distinct

  • find (OP_QUERY y comando)

  • findAndModify

  • insert

  • update

Limitaciones

El generador de perfiles de consultas lento solo puede emitir registros del generador de perfiles si todo el conjunto de resultados de la consulta puede caber en un lote y si el conjunto de resultados es inferior a 16 MB (tamaño máximo de BSON). Los conjuntos de resultados de más de 16 MB se dividen automáticamente en varios lotes.

La mayoría de los controladores o carcasas pueden establecer un tamaño de lote predeterminado que sea pequeño. Puede especificar el tamaño del lote como parte de su consulta. Con el fin de capturar registros de consultas lentos, recomendamos un tamaño de lote que supere el tamaño del conjunto de resultados esperado. Si no está seguro del tamaño del conjunto de resultados o si varía, también puede establecer el tamaño del lote en un número grande (por ejemplo, 100 000).

Sin embargo, si se utiliza un tamaño de lote mayor, será necesario recuperar más resultados de la base de datos antes de enviar una respuesta al cliente. En el caso de algunas consultas, esto puede provocar demoras más prolongadas antes de obtener los resultados. Si no planea consumir todo el conjunto de resultados, es posible que dedique más E/S a procesar la consulta y desperdiciar el resultado.

Habilitación del generador de perfiles de Amazon DocumentDB

Habilitar el generador de perfiles en un clúster es un proceso de tres pasos. Asegúrese de que todos los pasos se completan o los registros de creación de perfiles no se enviarán a CloudWatch Logs. El generador de perfiles se establece en el nivel de clúster y se realiza en todas las bases de datos e instancias del clúster.

Habilitación del generador de perfiles en un clúster
  1. Dado que no puede modificar un grupo de parámetros de clúster predeterminado, asegúrese de que dispone de un grupo de parámetros de clúster personalizado disponible. Para obtener más información, consulte Creación de grupos de parámetros de clúster de Amazon DocumentDB.

  2. Con un grupo de parámetros de clúster personalizado disponible, modifique los siguientes parámetros: profiler, profiler_threshold_ms y profiler_sampling_rate. Para obtener más información, consulte Modificación de grupos de parámetros de clúster de Amazon DocumentDB.

  3. Cree o modifique el clúster para utilizar el grupo de parámetros de clúster personalizado y para habilitar la exportación de registros de profiler a CloudWatch Logs.

En las secciones siguientes se muestra cómo implementar estos pasos mediante la AWS Management Console y la AWS Command Line Interface (AWS CLI).

Using the AWS Management Console
  1. Antes de comenzar, cree un clúster de Amazon DocumentDB y un grupo de parámetros de clúster personalizado si aún no tiene uno. Para obtener más información, consulte Creación de grupos de parámetros de clúster de Amazon DocumentDB y Creación de un clúster de Amazon DocumentDB.

  2. Utilice un grupo de parámetros de clúster personalizado disponible para modificar los siguientes parámetros. Para obtener más información, consulte Modificación de grupos de parámetros de clúster de Amazon DocumentDB.

    • profiler: habilita o deshabilita la creación de perfiles de consultas. Los valores permitidos son enabled y disabled. El valor predeterminado es disabled. Para habilitar la creación de perfiles, establezca el valor en enabled.

    • profiler_threshold_ms: cuando profiler se establece en enabled, todos los comandos que tardan más que profiler-threshold-ms se registran en CloudWatch. Los valores permitidos son [50-INT_MAX]. El valor predeterminado es 100.

    • profiler_sampling_rate: la fracción de las operaciones lentas que deben registrarse o crear un perfil. Los valores permitidos son [0.0-1.0]. El valor predeterminado es 1.0.

  3. Modifique el clúster para utilizar el grupo de parámetros de clúster personalizado y establezca las exportaciones de registro del generador de perfiles para publicar en Amazon CloudWatch.

    1. En el panel de navegación, elija Clusters (Clústeres) para agregar el grupo de parámetros personalizado a un clúster.

    2. Elija el botón situado a la izquierda del nombre del clúster al que desea asociar el grupo de parámetros. Seleccione Actions (Acciones) y, a continuación, Modify (Modificar) para modificar el clúster.

    3. En Cluster options (Opciones de clúster), elija el grupo de parámetros personalizados del paso anterior para agregárselo al clúster.

    4. En Exportaciones de registros, seleccione Registros del generador de perfiles para publicar en Amazon CloudWatch.

    5. Elija Continue (Continuar) para ver un resumen de las modificaciones.

    6. Después de verificar los cambios, puede aplicarlos inmediatamente o durante el siguiente período de mantenimiento en Scheduling of modifications (Programación de modificaciones).

    7. Elija Modify cluster (Modificar clúster) para actualizar el clúster con el nuevo grupo de parámetros.

Using the AWS CLI

El siguiente procedimiento habilita el generador de perfiles en todas las operaciones admitidas para el clúster sample-cluster.

  1. Antes de comenzar, asegúrese de tener un grupo de parámetros de clúster personalizado disponible; para ello, ejecute el siguiente comando y revise el resultado de un grupo de parámetros de clúster cuyo nombre no contenga default y cuya familia de grupos de parámetros sea docdb3.6. Si no tiene un grupo de parámetros de clúster distinto del predeterminado, consulte Creación de grupos de parámetros de clúster de Amazon DocumentDB.

    aws docdb describe-db-cluster-parameter-groups \ --query 'DBClusterParameterGroups[*].[DBClusterParameterGroupName,DBParameterGroupFamily]'

    En el siguiente resultado, solo sample-parameter-group cumple ambos criterios.

    [ [ "default.docdb3.6", "docdb3.6" ], [ "sample-parameter-group", "docdb3.6" ] ]
  2. Utilizando el grupo de parámetros de clúster personalizado, modifique los siguientes parámetros:

    • profiler: habilita o deshabilita la creación de perfiles de consultas. Los valores permitidos son enabled y disabled. El valor predeterminado es disabled. Para habilitar la creación de perfiles, establezca el valor en enabled.

    • profiler_threshold_ms: cuando profiler se establece en enabled, todos los comandos que tardan más que profiler -threshold-ms se registran en CloudWatch. Los valores permitidos son [0-INT_MAX]. Al establecer este valor en 0 se generan perfiles de todas las operaciones admitidas. El valor predeterminado es 100.

    • profiler_sampling_rate: la fracción de las operaciones lentas que deben registrarse o crear un perfil. Los valores permitidos son [0.0-1.0]. El valor predeterminado es 1.0.

    aws docdb modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name sample-parameter-group \ --parameters ParameterName=profiler,ParameterValue=enabled,ApplyMethod=immediate \ ParameterName=profiler_threshold_ms,ParameterValue=100,ApplyMethod=immediate \ ParameterName=profiler_sampling_rate,ParameterValue=0.5,ApplyMethod=immediate
  3. Modifique el clúster de Amazon DocumentDB para que utilice el grupo de parámetros de clúster personalizado sample-parameter-group del paso anterior y establezca el parámetro --enable-cloudwatch-logs-exports a profiler.

    El código siguiente modifica el clúster sample-cluster para utilizar el sample-parameter-group del paso anterior y agrega profiler a las exportaciones habilitadas de CloudWatch Logs.

    aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --db-cluster-parameter-group-name sample-parameter-group \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["profiler"]}'

    La salida de esta operación será similar a lo que se indica a continuación.

    { "DBCluster": { "AvailabilityZones": [ "us-east-1c", "us-east-1b", "us-east-1a" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "sample-cluster", "DBClusterParameterGroup": "sample-parameter-group", "DBSubnetGroup": "default", "Status": "available", "EarliestRestorableTime": "2020-04-07T02:05:12.479Z", "Endpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "MultiAZ": false, "Engine": "docdb", "EngineVersion": "3.6.0", "LatestRestorableTime": "2020-04-08T22:08:59.317Z", "Port": 27017, "MasterUsername": "test", "PreferredBackupWindow": "02:00-02:30", "PreferredMaintenanceWindow": "tue:09:50-tue:10:20", "DBClusterMembers": [ { "DBInstanceIdentifier": "sample-instance-1", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 }, { "DBInstanceIdentifier": "sample-instance-2", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 } ], "VpcSecurityGroups": [ { "VpcSecurityGroupId": "sg-abcd0123", "Status": "active" } ], "HostedZoneId": "ABCDEFGHIJKLM", "StorageEncrypted": true, "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/sample-key", "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "DBClusterArn": "arn:aws:rds:us-east-1:<accountID>:cluster:sample-cluster", "AssociatedRoles": [], "ClusterCreateTime": "2020-01-10T22:13:38.261Z", "EnabledCloudwatchLogsExports": [ "profiler" ], "DeletionProtection": true } }

Deshabilitación del generador de perfiles de Amazon DocumentDB

Para deshabilitar el generador de perfiles, deshabilite tanto el parámetro profiler como la exportación de registros de profiler a CloudWatch Logs.

Deshabilitación del generador de perfiles

Puede deshabilitar el parámetro profiler mediante la AWS Management Console o la AWS CLI, como se indica a continuación.

Using the AWS Management Console

El siguiente procedimiento utiliza la AWS Management Console para deshabilitar Amazon DocumentDB profiler.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon DocumentDB en https://console.aws.amazon.com/docdb.

  2. En el panel de navegación, seleccione Parameter groups (Grupos de parámetros). A continuación, elija el nombre del grupo de parámetros de clúster en el que desea deshabilitar el generador de perfiles.

  3. En la página Cluster parameters (Parámetros de clúster) resultante, seleccione el botón situado a la izquierda del parámetro profiler y elija Edit (Editar).

  4. En el cuadro de diálogo Modify profiler (Modificar generador de perfiles), elija disabled en la lista.

  5. Elija Modify cluster parameter (Modificar el parámetro de clúster).

Using the AWS CLI

Para deshabilitar profiler en un clúster mediante la AWS CLI, modifique el clúster tal y como se muestra a continuación.

aws docdb modify-db-cluster-parameter-group \ --db-cluster-parameter-group-name sample-parameter-group \ --parameters ParameterName=profiler,ParameterValue=disabled,ApplyMethod=immediate

Deshabilitación de la exportación de registros del generador de perfiles

Puede deshabilitar la exportación de registros de profiler a CloudWatch Logs mediante la AWS Management Console o la AWS CLI, como se indica a continuación.

Using the AWS Management Console

El siguiente procedimiento utiliza la AWS Management Console para deshabilitar la exportación de registros de Amazon DocumentDB a CloudWatch.

  1. Abra la consola de Amazon DocumentDB en https://console.aws.amazon.com/docdb.

  2. En el panel de navegación, seleccione Clusters (Clústeres). Elija el botón situado a la izquierda del nombre del clúster para el que desea deshabilitar la exportación de registros.

  3. En el menú Actions (Acciones), elija Modify (Modificar).

  4. Desplácese hacia abajo hasta la sección Log exports (Exportaciones de registros) y desactive Profiler logs (Registros del generador de perfiles).

  5. Elija Continuar.

  6. Revise los cambios y, a continuación, elija cuándo desea que se aplique este cambio en su clúster:

    • Apply during the next scheduled maintenance window (Aplicar durante el siguiente periodo de mantenimiento programado)

    • Apply immediately (Aplicar inmediatamente)

  7. Elija Modify clúster (Modificar clúster).

Using the AWS CLI

El siguiente código modifica el clúster sample-cluster y deshabilita los registros del generador de perfiles de CloudWatch.

Para Linux, macOS o Unix:

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["profiler"]}'

Para Windows:

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["profiler"]}'

La salida de esta operación será similar a lo que se indica a continuación.

{ "DBCluster": { "AvailabilityZones": [ "us-east-1c", "us-east-1b", "us-east-1a" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "sample-cluster", "DBClusterParameterGroup": "sample-parameter-group", "DBSubnetGroup": "default", "Status": "available", "EarliestRestorableTime": "2020-04-08T02:05:17.266Z", "Endpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster.node.us-east-1.docdb.amazonaws.com", "MultiAZ": false, "Engine": "docdb", "EngineVersion": "3.6.0", "LatestRestorableTime": "2020-04-09T05:14:44.356Z", "Port": 27017, "MasterUsername": "test", "PreferredBackupWindow": "02:00-02:30", "PreferredMaintenanceWindow": "tue:09:50-tue:10:20", "DBClusterMembers": [ { "DBInstanceIdentifier": "sample-instance-1", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 }, { "DBInstanceIdentifier": "sample-instance-2", "IsClusterWriter": true, "DBClusterParameterGroupStatus": "in-sync", "PromotionTier": 1 } ], "VpcSecurityGroups": [ { "VpcSecurityGroupId": "sg-abcd0123", "Status": "active" } ], "HostedZoneId": "ABCDEFGHIJKLM", "StorageEncrypted": true, "KmsKeyId": "arn:aws:kms:us-east-1:<accountID>:key/sample-key", "DbClusterResourceId": "cluster-ABCDEFGHIJKLMNOPQRSTUVWXYZ", "DBClusterArn": "arn:aws:rds:us-east-1:<accountID>:cluster:sample-cluster", "AssociatedRoles": [], "ClusterCreateTime": "2020-01-10T22:13:38.261Z", "DeletionProtection": true } }

Acceso a los registros del generador de perfiles de Amazon DocumentDB

Siga estos pasos para acceder a sus registros de perfil de Amazon CloudWatch.

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. Asegúrese de que se encuentra en la misma región que el clúster de Amazon DocumentDB.

  3. En el panel de navegación, elija Logs (Registros).

  4. Para encontrar los registros del generador de perfiles de su clúster, en la lista, elija /aws/docdb/yourClusterName/profiler.

    Los registros de perfil de cada una de las instancias están disponibles debajo de los nombres de instancia respectivos.

Consultas comunes

A continuación se muestran algunas consultas comunes que puede utilizar para analizar los comandos con perfil. Para obtener más información sobre CloudWatch Logs Insights, consulte Análisis de datos de registro con CloudWatch Logs Insights y las Consultas de muestra.

Obtención de las 10 operaciones más lentas en una colección especificada

filter ns="test.foo" | sort millis desc | limit 10

Obtención de todas las operaciones de actualización de una colección que tardaron más de 60 ms

filter millis > 60 and op = "update"

Obtención de las 10 operaciones más lentas del último mes

sort millis desc | limit 10

Obtener todas las consultas con un resumen de plan COLLSCAN

filter planSummary="COLLSCAN"