

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Profilazione delle operazioni di Amazon DocumentDB
<a name="profiling"></a>

Puoi utilizzare il profiler in Amazon DocumentDB (con compatibilità MongoDB) per registrare il tempo di esecuzione e i dettagli delle operazioni eseguite sul tuo cluster. Il profiler è utile per monitorare le operazioni più lente sul cluster per aiutare a migliorare le prestazioni delle singole query e le prestazioni complessive del cluster.

Per impostazione predefinita, la funzionalità profiler è disabilitata. Se abilitato, il profiler registra le operazioni che richiedono più tempo di un valore di soglia definito dal cliente (ad esempio, 100 ms) in Amazon Logs. CloudWatch I dettagli registrati includono il comando profilato, l'ora, il riepilogo del piano e i metadati del client. Dopo aver registrato le operazioni su CloudWatch Logs, puoi utilizzare CloudWatch Logs Insights per analizzare, monitorare e archiviare i dati di profilazione di Amazon DocumentDB. Le query comuni vengono fornite nella sezione [Domande comuni](#profiling.common-queries). 

Se abilitato, il profiler utilizza risorse aggiuntive nel cluster. Ti consigliamo di iniziare con un valore di soglia elevato (ad esempio, 500 ms) e di ridurre gradualmente il valore per identificare le operazioni lente. Iniziare con un valore di soglia di 50 ms può causare problemi di prestazioni sul cluster per applicazioni a throughput elevato. Il profiler è abilitato a livello di cluster e funziona su tutte le istanze e i database di un cluster. Amazon DocumentDB registra le operazioni su Amazon CloudWatch Logs con la massima diligenza possibile.

Sebbene Amazon DocumentDB non imponga alcun costo aggiuntivo per abilitare il profiler, ti vengono addebitate le tariffe standard per l'utilizzo dei log. CloudWatch Per informazioni sui prezzi di CloudWatch Logs, consulta i [ CloudWatch prezzi di Amazon](https://aws.amazon.com/cloudwatch/pricing/). 

**Topics**
+ [Operazioni supportate](#profiling.supported-commands)
+ [Limitazioni](#profiling.limitations)
+ [Abilitazione del profiler](#profiling.enable-profiling)
+ [Disabilitazione del profiler](#profiling.disable-profiling)
+ [Disabilitazione dell'esportazione dei log del profiler](#profiling.disabling-logs-export)
+ [Accesso ai log del profiler](#profiling.accessing)
+ [Domande comuni](#profiling.common-queries)

## Operazioni supportate
<a name="profiling.supported-commands"></a>

Il profiler Amazon DocumentDB supporta le seguenti operazioni:
+ `aggregate`
+ `count`
+ `delete`
+ `distinct`
+ `find` (OP\$1QUERY e comando)
+ `findAndModify`
+ `insert`
+ `update`

## Limitazioni
<a name="profiling.limitations"></a>

Lo slow query profiler è in grado di emettere i log del profiler solo se l'intero set di risultati della query può essere contenuto in un batch e se il set di risultati è inferiore a 16 MB (dimensione massima BSON). I set di risultati superiori a 16 MB vengono automaticamente suddivisi in più batch.

La maggior parte dei driver o delle shell può impostare una dimensione del batch predefinita piccola. È possibile specificare la dimensione del batch come parte della query. Per acquisire i log delle query lente, si consiglia di utilizzare un batch di dimensioni superiori a quelle del set di risultati previsto. Se non siete sicuri della dimensione del set di risultati o se questa varia, potete anche impostare la dimensione del batch su un numero elevato (ad esempio 100k).

Tuttavia, l'utilizzo di un batch di dimensioni maggiori significa che sarà necessario recuperare più risultati dal database prima di inviare una risposta al client. Per alcune domande, ciò potrebbe creare ritardi più lunghi prima di ottenere risultati. Se non si prevede di utilizzare l'intero set di risultati, è possibile che si spenda di più I/Os per elaborare la query e buttare via il risultato.

## Abilitazione del profiler Amazon DocumentDB
<a name="profiling.enable-profiling"></a>

L'abilitazione del profiler su un cluster è un processo in tre fasi. Assicurati che tutti i passaggi siano stati completati, altrimenti i log di profilazione non verranno inviati a Logs. CloudWatch Il profiler è impostato a livello di cluster e viene eseguito su tutti i database e le istanze del cluster.

**Per abilitare il profiler su un cluster**

1. Poiché non puoi modificare un gruppo predefinito di parametri del cluster, assicurati di disporre di un gruppo personalizzato di parametri del cluster. Per ulteriori informazioni, consulta [Creazione di gruppi di parametri del cluster Amazon DocumentDB](cluster_parameter_groups-create.md). 

1. Utilizzando un gruppo di parametri personalizzato del cluster disponibile, modifica i seguenti parametri: `profiler`, `profiler_threshold_ms`, e `profiler_sampling_rate`. Per ulteriori informazioni, consulta [Modifica dei gruppi di parametri del cluster Amazon DocumentDB](cluster_parameter_groups-modify.md). 

1. Crea o modifica il cluster per utilizzare il gruppo di parametri del cluster personalizzato e per abilitare l'esportazione `profiler` dei log in Logs. CloudWatch 

Le sezioni seguenti mostrano come implementare questi passaggi utilizzando Console di gestione AWS and the AWS Command Line Interface ().AWS CLI

------
#### [ Using the Console di gestione AWS ]

1. Prima di iniziare, crea un cluster Amazon DocumentDB e un gruppo di parametri cluster personalizzato se non ne hai già uno. Per ulteriori informazioni, consultare [Creazione di gruppi di parametri del cluster Amazon DocumentDB](cluster_parameter_groups-create.md) e [Creazione di un cluster Amazon DocumentDB](db-cluster-create.md). 

1. Utilizzando un gruppo personalizzato di parametri del cluster disponibile, modifica i parametri seguenti. Per ulteriori informazioni, consulta [Modifica dei gruppi di parametri del cluster Amazon DocumentDB](cluster_parameter_groups-modify.md). 
   + `profiler`— Abilita o disabilita la profilazione delle query. I valori consentiti sono `enabled ` e `disabled`. Il valore predefinito è `disabled`. Per abilitare il profiling, impostare il valore su `enabled`.
   + `profiler_threshold_ms`— Quando `profiler` è impostato su`enabled`, ` profiler_threshold_ms` vengono registrati tutti i comandi che richiedono più tempo del previsto. CloudWatch I valori consentiti sono `[50-INT_MAX]`. Il valore predefinito è `100`.
   + `profiler_sampling_rate`— La frazione di operazioni lente che devono essere profilate o registrate. I valori consentiti sono `[0.0-1.0]`. Il valore predefinito è `1.0`.

1. Modifica il cluster per utilizzare il gruppo di parametri del cluster personalizzato e imposta le esportazioni dei log del profiler per la pubblicazione su Amazon CloudWatch.

   1. Nel riquadro di navigazione scegliere **Clusters (Cluster)** per aggiungere il nuovo gruppo di parametri personalizzato a un cluster.

   1. Scegliere il pulsante a sinistra del nome del cluster a cui si desidera associare il gruppo di parametri. Selezionare **Actions (Operazioni)**, quindi **Modify (Modifica)** per modificare il cluster.

   1. In **Cluster options (Opzioni cluster)**, scegliere il gruppo di parametri personalizzato dal passaggio precedente per aggiungerlo al cluster.

   1. In **Esportazioni di log**, seleziona **i log di Profiler** da pubblicare su Amazon. CloudWatch

   1. Scegliere **Continue (Continua)** per visualizzare un riepilogo delle modifiche.

   1. Dopo aver verificato le modifiche, è possibile applicarle immediatamente o durante la successiva finestra di manutenzione in **Scheduling of modifications (Pianificazione delle modifiche)**.

   1. Scegliere **Modify cluster (Modifica cluster)** per aggiornare il cluster con il nuovo gruppo di parametri. 

------
#### [ Using the AWS CLI ]

La procedura seguente abilita il profiler su tutte le operazioni supportate per il cluster `sample-cluster`.

1. Prima di iniziare, assicurati di avere un gruppo di parametri del cluster personalizzati disponibile eseguendo il comando seguente e verificando che l'output di un gruppo di parametri del cluster non abbia `default` nel nome e che abbia `docdb3.6` come famiglia del gruppi di parametri. Se non disponi di un gruppo di parametri cluster non predefinito, consulta [Creazione di gruppi di parametri del cluster Amazon DocumentDB](cluster_parameter_groups-create.md). 

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

   Nel seguente output, solo `sample-parameter-group ` soddisfa entrambi i criteri.

   ```
   [
          [
              "default.docdb3.6",
              "docdb3.6"
          ],
          [
              "sample-parameter-group",
              "docdb3.6"
          ]
   ]
   ```

1. Utilizzando il gruppo personalizzato di parametri del cluster, modifica i parametri seguenti:
   + `profiler`— Abilita o disabilita la profilazione delle query. I valori consentiti sono `enabled ` e `disabled`. Il valore predefinito è `disabled`. Per abilitare il profiling, impostare il valore su `enabled`.
   + `profiler_threshold_ms`— Quando `profiler` è impostato su`enabled`, tutti i comandi richiedono più tempo di quello a `profiler_threshold_ms` cui sono stati registrati. CloudWatch I valori consentiti sono `[50-INT_MAX]`. Il valore predefinito è `100`. 
   + `profiler_sampling_rate`— La frazione di operazioni lente che devono essere profilate o registrate. I valori consentiti sono `[0.0-1.0]`. Il valore predefinito è `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
   ```

1. Modifica il tuo cluster Amazon DocumentDB in modo che utilizzi il gruppo di parametri del cluster `sample-parameter-group` personalizzato del passaggio precedente e imposti il parametro `--enable-cloudwatch-logs-exports` su. `profiler`

   Il codice seguente modifica il cluster in `sample-cluster` modo che utilizzi quello del `sample-parameter-group` passaggio precedente e lo aggiunge `profiler` alle esportazioni di CloudWatch Logs abilitate.

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

   L'aspetto dell'output di questa operazione è simile al seguente.

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

------

## Disattivazione del profiler Amazon DocumentDB
<a name="profiling.disable-profiling"></a>

Per disabilitare il profiler, si disabilitano sia il `profiler` parametro che l'esportazione dei `profiler` log in Logs. CloudWatch 

### Disabilitazione del profiler
<a name="profiling.disable-profiler"></a>

È possibile disabilitare il `profiler` parametro utilizzando Console di gestione AWS o AWS CLI, come segue.

------
#### [ Using the Console di gestione AWS ]

La procedura seguente utilizza Console di gestione AWS per disabilitare Amazon DocumentDB`profiler`.

1. [Accedi a e apri Console di gestione AWS la console Amazon DocumentDB all'indirizzo https://console.aws.amazon.com /docdb.](https://console.aws.amazon.com/docdb)

1. Nel riquadro di navigazione scegliere **Parameter groups (Gruppi di parametri)**. Scegliere quindi il nome del gruppo di parametri del cluster su cui si desidera disabilitare il profiler.

1. Nella pagina **Cluster parameters (Parametri cluster) ** risultante, selezionare il pulsante a sinistra del parametro `profiler` e scegliere **Edit (Modifica)**.

1. Nella finestra di dialogo **Modify profiler (Modifica profiler)**, scegliere `disabled` nell'elenco.

1. Scegliere **Modify cluster parameter (Modifica parametro cluster)**. 

------
#### [ Using the AWS CLI ]

Per disabilitare `profiler` su un cluster utilizzando l' AWS CLI, modificare il cluster come segue.

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

------

## Disabilitazione dell'esportazione dei log del profiler
<a name="profiling.disabling-logs-export"></a>

È possibile disabilitare l'esportazione dei `profiler` log in CloudWatch Logs utilizzando o, come segue. Console di gestione AWS AWS CLI

------
#### [ Using the Console di gestione AWS ]

La procedura seguente utilizza Console di gestione AWS per disabilitare l'esportazione dei log in Amazon DocumentDB in. CloudWatch

1. [Apri la console Amazon DocumentDB in https://console.aws.amazon.com /docdb.](https://console.aws.amazon.com/docdb)

1. Nel pannello di navigazione scegliere **Cluster**. Scegliere il pulsante a sinistra del nome del cluster per il quale si desidera disabilitare l'esportazione dei log.

1. Nel menu **Actions (Operazioni)** selezionare **Modify (Modifica)**.

1. Scorrere verso il basso fino alla sezione **Log exports (Esportazioni log)** e deselezionare **Profiler logs (Log del profiler)**. 

1. Scegli **Continua**.

1. Esaminare le modifiche, quindi scegliere quando applicare la modifica al cluster.
   + **Apply during the next scheduled maintenance window (Applica durante la prossima finestra di manutenzione pianificata)**
   + **Apply immediately (Applica immediatamente)**

1. Scegliere **Modify cluster (Modifica cluster)**.

------
#### [ Using the AWS CLI ]

Il codice seguente modifica il cluster `sample-cluster ` e disabilita i log del profiler. CloudWatch 

**Example**  
Per Linux, macOS o Unix:  

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

```
aws docdb modify-db-cluster ^
   --db-cluster-identifier sample-cluster ^
   --cloudwatch-logs-export-configuration '{"DisableLogTypes":["profiler"]}'
```
L'aspetto dell'output di questa operazione è simile al seguente.  

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

------

## Accesso ai log del profiler di Amazon DocumentDB
<a name="profiling.accessing"></a>

Segui questi passaggi per accedere ai log del tuo profilo su Amazon CloudWatch.

1. Apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Assicurati di trovarti nella stessa regione del cluster Amazon DocumentDB.

1. Nel riquadro di navigazione scegli **Logs (Log)**.

1. Per trovare i log del profiler per il cluster, nell'elenco scegliere `/aws/docdb/yourClusterName/profiler`.

   I log del profiler per ogni istanza sono disponibili nei rispettivi nomi di istanza.

## Domande comuni
<a name="profiling.common-queries"></a>

Di seguito sono riportate alcune query comuni che è possibile utilizzare per analizzare i comandi profilati. [Per ulteriori informazioni su CloudWatch Logs Insights, vedere [Analisi dei dati di registro con CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) e Query di esempio.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-examples.html) 

### Ottieni le 10 operazioni più lente su una raccolta specificata
<a name="profiling.common-queries.slow-queries-on-collection"></a>

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

### Ottieni tutte le operazioni di aggiornamento su una raccolta che ha richiesto più di 60 ms
<a name="profiling.common-queries.updates-gt-60-ms"></a>

```
filter millis > 60 and op = "update"
```

### Ottieni le 10 operazioni più lente dell'ultimo mese
<a name="profiling.common-queries.slow-queries-last-month"></a>

```
sort millis desc | limit 10
```

### Ottenere tutte le query con un riepilogo del piano COLLSCAN
<a name="profiling.common-queries.collscan-plan-summary"></a>

```
filter planSummary="COLLSCAN"
```