

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Monitorar e rastrear o uso do Amazon Q Developer
<a name="monitoring-overview"></a>

O monitoramento é uma parte importante da manutenção da confiabilidade, disponibilidade e desempenho do Amazon Q Developer e de suas outras AWS soluções. AWS fornece as seguintes ferramentas e recursos de monitoramento para monitorar e registrar a atividade do Amazon Q Developer:
+  *AWS CloudTrail*captura chamadas de API e eventos relacionados feitos por você ou em seu nome Conta da AWS e entrega os arquivos de log para um bucket do Amazon Simple Storage Service (Amazon S3) especificado por você. Você pode identificar quais usuários e contas ligaram AWS, o endereço IP de origem a partir do qual as chamadas foram feitas e quando elas ocorreram. Para obter mais informações, consulte [Registro de chamadas da API Amazon Q Developer usando AWS CloudTrail](logging-using-cloudtrail.md).
+ *A Amazon CloudWatch* monitora seus AWS recursos e os aplicativos em que você executa AWS em tempo real. Você pode coletar e rastrear métricas, criar painéis personalizados e definir alarmes que o notificam ou que realizam ações quando uma métrica especificada atinge um limite definido. Por exemplo, você pode CloudWatch rastrear o número de vezes que o Amazon Q foi invocado em sua conta ou o número de usuários ativos diariamente. Para obter mais informações, consulte [Monitorando o Amazon Q Developer com a Amazon CloudWatch](monitoring-cloudwatch.md).

O Amazon Q Developer também inclui os seguintes recursos para ajudar você a rastrear e registrar a atividade do usuário no Amazon Q:
+  *Um painel* mostra métricas agregadas de atividade do usuário dos assinantes do Amazon Q Developer Pro. Para obter mais informações, consulte [Visualizar a atividade do usuário do Amazon Q Developer no painel](dashboard.md).
+  *Os relatórios de atividades do usuário* mostram o que usuários individuais estão fazendo no Amazon Q. Para obter mais informações, consulte [Visualizar a atividade de usuários específicos no Amazon Q Developer](q-admin-user-telemetry.md).
+  *Os logs de prompt* fornecem um registro de todos os prompts que os usuários digitam no chat do Amazon Q em seu ambiente de desenvolvimento integrado (IDE). Para obter mais informações, consulte [Registrar em log os prompts dos usuários no Amazon Q Developer](q-admin-prompt-logging.md).

# Registro de chamadas da API Amazon Q Developer usando AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

O Amazon Q Developer Pro está integrado com AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, função ou um AWS service (Serviço da AWS) no Amazon Q. CloudTrail captura todas as chamadas de API para o Amazon Q como eventos. As chamadas capturadas incluem chamadas do console do Amazon Q e chamadas de código para as operações da API do Amazon Q. **Se você criar uma trilha, poderá habilitar a entrega contínua de CloudTrail eventos para um bucket do Amazon S3, incluindo eventos para o Amazon Q. Se você não configurar uma trilha, ainda poderá visualizar os eventos mais recentes no CloudTrail console no Histórico de eventos.** Usando as informações coletadas por CloudTrail, você pode determinar a solicitação que foi feita à Amazon Q, o endereço IP a partir do qual a solicitação foi feita, quem fez a solicitação, quando ela foi feita e detalhes adicionais.

Para obter mais informações sobre CloudTrail, consulte o [Guia AWS CloudTrail do usuário](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Informações do Amazon Q Developer em CloudTrail
<a name="q-developer-info-in-cloudtrail"></a>

CloudTrail é ativado no seu Conta da AWS quando você cria a conta. Quando a atividade ocorre no Amazon Q Developer, essa atividade é registrada em um CloudTrail evento junto com outros AWS service (Serviço da AWS) eventos no **histórico de eventos**. Você pode visualizar, pesquisar e baixar eventos recentes no seu Conta da AWS. Para obter mais informações, consulte [Visualização de CloudTrail eventos com histórico](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html) de eventos no *Guia AWS CloudTrail do usuário*.

Para um registro contínuo de eventos em seu Conta da AWS, incluindo eventos para o Amazon Q, crie uma trilha. Uma *trilha* permite CloudTrail entregar arquivos de log para um bucket do Amazon S3. Por padrão, quando você cria uma trilha no console, ela é aplicada a todas as Regiões da AWS. A trilha registra eventos de todas as regiões na AWS partição e entrega os arquivos de log ao bucket do Amazon S3 que você especificar. Além disso, você pode configurar outros Serviços da AWS para analisar e agir com base nos dados do evento coletados nos CloudTrail registros. Para obter mais informações, consulte os seguintes tópicos no *Guia do usuário do AWS CloudTrail *:
+  [Visão geral da criação de uma trilha](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html) 
+  [CloudTrail serviços e integrações suportados](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations) 
+  [Configurando notificações do Amazon SNS para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html) 
+  [Recebendo arquivos de CloudTrail log de várias regiões](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 
+  [Recebendo arquivos de CloudTrail log de várias contas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html) 

Todas as ações do Amazon Q Developer são registradas CloudTrail e geram entradas nos arquivos de CloudTrail log.

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações de identidade ajudam a determinar o seguinte:
+ Se a solicitação foi feita com credenciais de usuário root ou AWS Identity and Access Management (IAM)
+ Se a solicitação foi feita com credenciais de segurança temporárias de um perfil ou de um usuário federado
+ Se a solicitação foi feita por outro AWS service (Serviço da AWS)

Para obter mais informações, consulte o [elemento CloudTrail userIdentity](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html) no Guia do *AWS CloudTrail usuário*.

## Noções básicas sobre entradas de arquivos de log do Amazon Q Developer
<a name="understanding-q-developer-entries"></a>

Uma trilha é uma configuração que permite a entrega de eventos como arquivos de log para um bucket do Amazon S3 que você especificar. CloudTrail os arquivos de log contêm uma ou mais entradas de log. Um evento representa uma única solicitação de qualquer fonte e inclui informações sobre a ação solicitada, a data e a hora da ação, os parâmetros da solicitação e assim por diante. CloudTrail os arquivos de log não são um rastreamento de pilha ordenado das chamadas públicas de API, portanto, eles não aparecem em nenhuma ordem específica.

O Amazon Q Developer também faz chamadas de API com um `dryRun` parâmetro para verificar se você tem as permissões necessárias para a ação, sem realmente fazer a solicitação. As chamadas para o Amazon Q Developer APIs com o `dryRun` parâmetro são capturadas como eventos e registradas `"dryRun" : true` em um CloudTrail registro no `requestParameters` campo.

O exemplo a seguir mostra uma entrada de CloudTrail registro que demonstra a `SendMessage` ação.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAXD12ABCDEF3G4HI5J:aws-user",
        "arn": "arn:aws:sts::123456789012:assumed-role/PowerUser/aws-user",
        "accountId": "123456789012",
        "accessKeyId": "ASIAAB12CDEFG34HIJK",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAXD12ABCDEF3G4HI5J",
                "arn": "arn:aws:iam::123456789012:role/PowerUser",
                "accountId": "123456789012",
                "userName": "PowerUser"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-11-28T10:00:00Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2023-11-28T10:00:00Z",
    "eventSource": "q.amazonaws.com",
    "eventName": "SendMessage",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "123.456.789.012",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
    "requestParameters": {
        "Origin": "https://conversational-experience-worker.widget.console.aws.amazon.com",
        "conversationId": "a298ec0d-0a49-4d2e-92bd-7d6e629b4619",
        "source": "CONSOLE",
        "conversationToken": "***",
        "utterance": "***"
    },
    "responseElements": {
        "result": {
            "content": {
                "text": {
                    "body": "***",
                    "references": []
                }
            },
            "format": "PLAINTEXT",
            "intents": {},
            "type": "TEXT"
        },
        "Access-Control-Expose-Headers": "x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date",
        "metadata": {
            "conversationExpirationTime": "2024-02-25T19:31:38Z",
            "conversationId": "a298ec0d-0a49-4d2e-92bd-7d6e629b4619",
            "conversationToken": "***",
            "utteranceId": "3b87b46f-04a9-41ef-b8fe-8abf52d2c053"
        },
        "resultCode": "LLM"
    },
    "additionalEventData": {
        "quickAction": "dev"
    },
    "requestID": "19b3c30e-906e-4b7f-b5c3-509f67248655",
    "eventID": "a552c487-7d97-403a-8ec4-d49539c7a03d",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```

O exemplo a seguir mostra uma entrada de CloudTrail registro que demonstra a `PassRequest` ação.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDA6ON6E4XEGIEXAMPLE",
        "arn": "arn:aws:iam::555555555555:user/Mary",
        "accountId": "555555555555",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
            "type": "Role",
            "principalId": "AIDA6ON6E4XEGIEXAMPLE",
            "arn": "arn:aws:iam::555555555555:user/Mary",
            "accountId": "555555555555",
            "userName": "Mary"
    
        },
        "attributes": {
            "creationDate": "2024-04-10T20:03:01Z",
            "mfaAuthenticated": "false"
        },
        "invokedBy": "q.amazonaws.com"
    },
    "eventTime": "2024-04-10T20:04:42Z",
    "eventSource": "q.amazonaws.com",
    "eventName": "PassRequest",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "q.amazonaws.com",
    "userAgent": "q.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "requestID": "2d528c76-329e-410b-9516-EXAMPLE565dc",
    "eventID": "ba0801a1-87ec-4d26-be87-EXAMPLE75bbb",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "555555555555",
    "eventCategory": "Management"
}
```

O exemplo a seguir mostra uma entrada de CloudTrail registro que demonstra que o Amazon Q está chamando a `s3:ListBuckets` ação em seu nome.

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDA6ON6E4XEGIEXAMPLE",
        "arn": "arn:aws:iam::555555555555:user/Paulo",
        "accountId": "555555555555",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDA6ON6E4XEGIEXAMPLE",
                "arn": "arn:aws:iam::555555555555:user/Paulo",
                "accountId": "555555555555",
                "userName": "Paulo"
            },
            "attributes": {
                "creationDate": "2024-04-10T14:06:08Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "q.amazonaws.com"
    },
    "eventTime": "2024-04-10T14:07:55Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "ListBuckets",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "q.amazonaws.com",
    "userAgent": "q.amazonaws.com",
    "requestParameters": {
        "Host": "s3.amazonaws.com"
    },
    "responseElements": null,
    "additionalEventData": {
        "SignatureVersion": "SigV4",
        "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
        "bytesTransferredIn": 0,
        "AuthenticationMethod": "AuthHeader",
        "x-amz-id-2": "ExampleRequestId123456789",
        "bytesTransferredOut": 4054
    },
    "requestID": "ecd94349-b36f-44bf-b6f5-EXAMPLE9c463",
    "eventID": "2939ba50-1d26-4a5a-83bd-EXAMPLE85850",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "555555555555",
    "vpcEndpointId": "vpce-EXAMPLE1234",
    "eventCategory": "Management"
}
```

# Monitorando o Amazon Q Developer com a Amazon CloudWatch
<a name="monitoring-cloudwatch"></a>

**nota**  
As métricas discutidas aqui se referem apenas ao uso do [Amazon Q em seu IDE](q-in-IDE.md).

Você pode monitorar o Amazon Q Developer usando CloudWatch, que coleta dados brutos e os processa em métricas legíveis, quase em tempo real. Essas estatísticas são mantidas por 15 meses, de maneira que você possa acessar informações históricas e ter uma perspectiva melhor de como a hospedagem do servidor de jogos com o Amazon Q está se saindo. Você também pode definir alarmes que observam determinados limites e enviam notificações ou realizam ações quando esses limites são atingidos. Para obter mais informações, consulte o [Guia CloudWatch do usuário da Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

O serviço do Amazon Q Developer relata as métricas a seguir no namespace do `AWS/Q`.


| Dimensões | Métrica | Caso de uso ou explicação | 
| --- | --- | --- | 
|  Contagem  |  Invocations  |  Você deseja determinar quantas invocações foram contadas ao longo do tempo.  | 
|  UserCount  |  DailyActiveUserTrend  |  Você deseja determinar o número de usuários ativos por dia.  | 
|  SubscriptionUserCount  |  SubscriptionCount  |  Você deseja determinar o número de usuários com assinaturas pagas.  | 
|  UniqueUserCount  |  MonthlyActiveUniqueUsers  |  Você deseja determinar o número de usuários ativos em um determinado mês.  | 
|  ProgrammingLanguage, SuggestionState, CompletionType  |  GeneratedLineCount  |  Você deseja determinar o número de linhas geradas pelo Amazon Q Developer.  | 
|  ProgrammingLanguage, SuggestionState, CompletionType  |  SuggestionReferenceCount  |  Você deseja determinar o número de acionadores de recomendação com referências que ocorreram.  | 
|  ProgrammingLanguage  |  CodeScanCount  |  Você deseja determinar o número de escaneamentos de código que foram realizados.  | 
|  ProgrammingLanguage  |  TotalCharacterCount  |  O número de caracteres em seu arquivo, incluindo todas as sugestões do Amazon Q Developer.  | 
|  ProgrammingLanguage  |  CodeWhispererCharacterCount  |  O número de caracteres gerados pelo Amazon Q Developer.  | 

Para agregar invocações, use a estatística Sum.

Para agregar DailyActiveUserTrend, use a estatística de soma e use “1 dia” como período.

Para agregar SubscriptionCount, use a estatística Sum.

Para agregar, MonthlyActiveUniqueUsers use a estatística Sum e use “30 dias” como o período.

# Identificação de ações de usuários específicos com o Amazon CloudWatch Logs
<a name="monitoring-telemetry"></a>

É possível obter métricas em nível de usuário sobre o uso do Amazon Q Developer. Para descobrir qual usuário realizou uma ação específica, procure os eventos chamados SendTelemetryEvent e examine o objeto JSON do tipo SendTelemetryEventRequest que eles contêm. Dentro desse objeto, o esquema aparece da seguinte forma.

**dica**  
Você também pode gerar um relatório no formato CSV da atividade de usuários individuais no Amazon Q Developer. Para obter mais informações, consulte [Visualizar a atividade de usuários específicos no Amazon Q Developer](q-admin-user-telemetry.md).

```
http://json-schema.org/draft-07/schema#",
    "definitions": {
        "ProgrammingLanguage": {
            "type": "object",
            "properties": {
                "languageName": {
                    "type": "string",
                    "enum": [
                        "python",
                        "javascript",
                        "java",
                        "csharp",
                        "typescript",
                        "c",
                        "cpp",
                        "go",
                        "kotlin",
                        "php",
                        "ruby",
                        "rust",
                        "scala",
                        "shell",
                        "sql",
                        "json",
                        "yaml",
                        "vue",
                        "tf",
                        "tsx",
                        "jsx",
                        "plaintext"
                    ],
                    "description": "Programming Languages supported by Q"
                }
            }
        },
        "Dimension": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "must match ^[-a-zA-Z0-9._]*$ and be between 1 and 255 characters"
                },
                "value": {
                    "type": "string",
                    "description": "must match ^[-a-zA-Z0-9._]*$ and be between 1 and 1024 characters"
                }
            }
        }
    },
    "telemetryEvents": {
        "UserTriggerDecisionEvent": {
            "type": "object",
            "properties": {
                "sessionId": {
                    "type": "string",
                    "description": "UUID for the session"
                },
                "requestId": {
                    "type": "string",
                    "description": "UUID for the request"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "completionType": {
                    "type": "string",
                    "enum": [
                        "BLOCK",
                        "LINE"
                    ]
                },
                "suggestionState": {
                    "type": "string",
                    "enum": [
                        "ACCEPT",
                        "REJECT",
                        "DISCARD",
                        "EMPTY"
                    ]
                },
                "recommendationLatencyMilliseconds": {
                    "type": "number"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "triggerToResponseLatencyMilliseconds": {
                    "type": "number"
                },
                "suggestionReferenceCount": {
                    "type": "integer"
                },
                "generatedLine": {
                    "type": "integer"
                },
                "numberOfRecommendations": {
                    "type": "integer"
                }
            },
            "required": [
                "sessionId",
                "requestId",
                "programmingLanguage",
                "completionType",
                "suggestionState",
                "recommendationLatencyMilliseconds",
                "timestamp"
            ]
        },
        "CodeCoverageEvent": {
            "type": "object",
            "properties": {
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "acceptedCharacterCount": {
                    "type": "integer"
                },
                "totalCharacterCount": {
                    "type": "integer"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "unmodifiedAcceptedCharacterCount": {
                    "type": "integer"
                }
            },
            "required": [
                "programmingLanguage",
                "acceptedCharacterCount",
                "totalCharacterCount",
                "timestamp"
            ]
        },
        "UserModificationEvent": {
            "type": "object",
            "properties": {
                "sessionId": {
                    "type": "string",
                    "description": "UUID for the session"
                },
                "requestId": {
                    "type": "string",
                    "description": "UUID for the request"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "modificationPercentage": {
                    "type": "number",
                    "description": "This is the percentage of AI generated code which has been modified by the user"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                }
            },
            "required": [
                "sessionId",
                "requestId",
                "programmingLanguage",
                "modificationPercentage",
                "timestamp"
            ]
        },
        "CodeScanEvent": {
            "type": "object",
            "properties": {
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "codeScanJobId": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "codeAnalysisScope": {
                    "type": "string",
                    "enum": [
                        "FILE",
                        "PROJECT"
                    ]
                }
            },
            "required": [
                "programmingLanguage",
                "codeScanJobId",
                "timestamp"
            ]
        },
        "CodeScanRemediationsEvent": {
            "type": "object",
            "properties": {
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "CodeScanRemediationsEventType": {
                    "type": "string",
                    "enum": [
                        "CODESCAN_ISSUE_HOVER",
                        "CODESCAN_ISSUE_APPLY_FIX",
                        "CODESCAN_ISSUE_VIEW_DETAILS"
                    ]
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "detectorId": {
                    "type": "string"
                },
                "findingId": {
                    "type": "string"
                },
                "ruleId": {
                    "type": "string"
                },
                "component": {
                    "type": "string"
                },
                "reason": {
                    "type": "string"
                },
                "result": {
                    "type": "string"
                },
                "includesFix": {
                    "type": "boolean"
                }
            }
        },
        "MetricData": {
            "type": "object",
            "properties": {
                "metricName": {
                    "type": "string",
                    "description": "must match pattern ^[-a-zA-Z0-9._]*$ and be between 1 and 1024 characters"
                },
                "metricValue": {
                    "type": "number"
                },
                "timestamp": {
                    "type": "string",
                    "description": "datetime, example: Jul 23, 2024, 12:11:02 AM"
                },
                "product": {
                    "type": "string",
                    "description": "must match pattern ^[-a-zA-Z0-9._]*$ and be between 1 and 128 characters"
                },
                "dimensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Dimension"
                    },
                    "description": "maximum size of 30"
                }
            },
            "required": [
                "metricName",
                "metricValue",
                "timestamp",
                "product"
            ]
        },
        "ChatAddMessageEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                },
                "messageId": {
                    "type": "string",
                    "description": "Unique identifier for the chat message"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "userIntent": {
                    "type": "string",
                    "enum": [
                        "SUGGEST_ALTERNATE_IMPLEMENTATION",
                        "APPLY_COMMON_BEST_PRACTICES",
                        "IMPROVE_CODE",
                        "SHOW_EXAMPLES",
                        "CITE_SOURCES",
                        "EXPLAIN_LINE_BY_LINE",
                        "EXPLAIN_CODE_SELECTION",
                        "GENERATE_CLOUDFORMATION_TEMPLATE"
                    ]
                },
                "hasCodeSnippet": {
                    "type": "boolean"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "activeEditorTotalCharacters": {
                    "type": "integer"
                },
                "timeToFirstChunkMilliseconds": {
                    "type": "number"
                },
                "timeBetweenChunks": {
                    "type": "array",
                    "items": {
                        "type": "number"
                    },
                    "description": "maximum size of 100"
                },
                "fullResponselatency": {
                    "type": "number"
                },
                "requestLength": {
                    "type": "integer"
                },
                "responseLength": {
                    "type": "integer"
                },
                "numberOfCodeBlocks": {
                    "type": "integer"
                },
                "hasProjectLevelContext": {
                    "type": "boolean"
                }
            },
            "required": [
                "conversationId",
                "messageId"
            ]
        },
        "ChatInteractWithMessageEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                },
                "messageId": {
                    "type": "string",
                    "description": "Unique identifier for the chat message"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "interactionType": {
                    "type": "string",
                    "enum": [
                        "INSERT_AT_CURSOR",
                        "COPY_SNIPPET",
                        "COPY",
                        "CLICK_LINK",
                        "CLICK_BODY_LINK",
                        "CLICK_FOLLOW_UP",
                        "HOVER_REFERENCE",
                        "UPVOTE",
                        "DOWNVOTE"
                    ],
                    "description": "Chat Message Interaction Type"
                },
                "interactionTarget": {
                    "type": "string",
                    "description": "Target of message interaction"
                },
                "acceptedCharacterCount": {
                    "type": "integer"
                },
                "acceptedLineCount": {
                    "type": "integer"
                },
                "acceptedSnippetHasReference": {
                    "type": "boolean"
                },
                "hasProjectLevelContext": {
                    "type": "boolean"
                }
            },
            "required": [
                "conversationId",
                "messageId"
            ]
        },
        "ChatUserModificationEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                },
                "customizationArn": {
                    "type": "string",
                    "description": "ARN of the customization matching pattern: ^arn:[-.a-z0-9]{1,63}:codewhisperer:([-.a-z0-9]{0,63}:){2}([a-zA-Z0-9-_:/]){1,1023}$"
                },
                "messageId": {
                    "type": "string",
                    "description": "Unique identifier for the chat message"
                },
                "programmingLanguage": {
                    "$ref": "#/definitions/ProgrammingLanguage"
                },
                "modificationPercentage": {
                    "type": "number",
                    "description": "This is the percentage of AI generated code which has been modified by the user"
                },
                "hasProjectLevelContext": {
                    "type": "boolean"
                }
            },
            "required": [
                "conversationId",
                "messageId",
                "modificationPercentage"
            ]
        },
        "SuggestionState": {
            "type": "string",
            "enum": [
                "ACCEPT",
                "REJECT",
                "DISCARD",
                "EMPTY"
            ]
        },
        "TerminalUserInteractionEvent": {
            "type": "object",
            "properties": {
                "terminalUserInteractionEventType": {
                    "type": "string",
                    "enum": [
                        "CODEWHISPERER_TERMINAL_TRANSLATION_ACTION",
                        "CODEWHISPERER_TERMINAL_COMPLETION_INSERTED"
                    ],
                    "description": "Terminal User Interaction Event Type"
                },
                "terminal": {
                    "type": "string"
                },
                "terminalVersion": {
                    "type": "string"
                },
                "shell": {
                    "type": "string"
                },
                "shellVersion": {
                    "type": "string"
                },
                "duration": {
                    "type": "integer"
                },
                "timeToSuggestion": {
                    "type": "integer"
                },
                "isCompletionAccepted": {
                    "type": "boolean"
                },
                "cliToolCommand": {
                    "type": "string"
                }
            }
        },
        "FeatureDevEvent": {
            "type": "object",
            "properties": {
                "conversationId": {
                    "type": "string",
                    "description": "ID which represents a multi-turn conversation, length between 1 and 128"
                }
            },
            "required": [
                "conversationId"
            ]
        }
    },
    "SendTelemetryEventRequest": {
        "type": "object",
        "properties": {
            "clientToken": {
                "type": "string",
                "description": "The client's authentication token"
            },
            "telemetryEvent": {
                "properties": {
                    "oneOf": [
                        {
                            "_comment": "This event is emitted when a user accepts or rejects an inline code suggestion",
                            "$ref": "#/definitions/userTriggerDecisionEvent"
                        },
                        {
                            "_comment": "This event is emitted every five minutes. It details how much code is written by inline code suggestion and in total during that period",
                            "$ref": "#/definitions/codeCoverageEvent"
                        },
                        {
                            "_comment": "This event is emitted when a code snippet from inline code suggestion has been edited by a user. It details the percentage of that code snippet modified by the user",
                            "$ref": "#/definitions/userModificationEvent"
                        },
                        {
                            "_comment": "This field is emitted when a security scan is requested by a user",
                            "$ref": "#/definitions/codeScanEvent"
                        },
                        {
                            "_comment": "This field is emitted when a security scan recommended remediation is accepted by a user",
                            "$ref": "#/definitions/codeScanRemediationsEvent"
                        },
                        {
                            "_comment": "This event is deprecated but may still occur in telemetry. Do not use this.",
                            "$ref": "#/definitions/metricData"
                        },
                        {
                            "_comment": "This event is emitted when Q adds an AI generated message to the chat window",
                            "$ref": "#/definitions/chatAddMessageEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user interacts with a chat message",
                            "$ref": "#/definitions/chatInteractWithMessageEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user modifies a code snippet sourced from chat. It gives a percentage of the code snippet which has been modified",
                            "$ref": "#/definitions/chatUserModificationEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user interacts with a terminal suggestion",
                            "$ref": "#/definitions/terminalUserInteractionEvent"
                        },
                        {
                            "_comment": "This event is emitted when a user first prompts the /dev feature.",
                            "$ref": "#/definitions/featureDevEvent"
                        }
                    ]
                }
            },
            "optOutPreference": {
                "type": "string",
                "enum": [
                    "OPTIN",
                    "OPTOUT"
                ],
                "description": "OPTOUT and telemetry is only provided to the account of purchasing enterprise, OPTIN and telemetry may also be used for product improvement"
            },
            "userContext": {
                "type": "object",
                "properties": {
                    "ideCategory": {
                        "type": "string",
                        "enum": [
                            "JETBRAINS",
                            "VSCODE",
                            "CLI",
                            "JUPYTER_MD",
                            "JUPYTER_SM"
                        ]
                    },
                    "operatingSystem": {
                        "type": "string",
                        "description": "The operating system being used"
                    },
                    "product": {
                        "type": "string",
                        "description": "The name of the product being used"
                    },
                    "clientId": {
                        "type": "string",
                        "description": "A UUID representing the individual client being used"
                    },
                    "ideVersion": {
                        "type": "string",
                        "description": "The version of the Q plugin"
                    }
                },
                "required": [
                    "ideCategory",
                    "operatingSystem",
                    "product",
                    "clientId",
                    "ideVersion"
                ]
            },
            "profileArn": {
                "type": "string",
                "description": "The arn of the Q Profile used to configure individual user accounts."
```

Observe que a SendTelemetryEvent pode conter um dos vários eventos de telemetria. Cada um deles descreve uma interação específica entre o ambiente de desenvolvimento.

Uma descrição mais detalhada de cada evento aparece abaixo.

## UserTriggerDecisionEvent
<a name="monitoring-telemetry-user-trigger"></a>

Esse evento é acionado quando um usuário interage com uma sugestão feita pela Amazon Q. Ele captura se a sugestão foi aceita, rejeitada ou modificada, junto com os metadados relevantes.
+ `completionType`: Se a conclusão foi um bloco ou uma linha.
+ `suggestionState`: se o usuário aceitou, rejeitou ou descartou a sugestão.

## CodeScanEvent
<a name="monitoring-telemetry-code-scan"></a>

Esse evento é registrado quando uma varredura de código é executada. Ele ajuda a rastrear o escopo e o resultado da verificação, fornecendo informações sobre as verificações de segurança e qualidade do código.
+ `codeScanJobId` – O identificador exclusivo para o trabalho.
+ `codeAnalysisScope`: se a verificação foi executada no nível do arquivo ou no nível do projeto.
+ `programmingLanguage`: O idioma que está sendo digitalizado.

## CodeScanRemediationsEvent
<a name="monitoring-telemetry-remediations"></a>

Esse evento captura as interações do usuário com as sugestões de remediação do Amazon Q, como a aplicação de correções ou a visualização dos detalhes do problema.
+ `CodeScanRemediationsEventType`: o tipo de ação de remediação tomada (por exemplo, visualizar detalhes ou aplicar uma correção).
+ `includesFix`: um booleano que indica se o problema do código inclui uma correção sugerida.

## ChatAddMessageEvent
<a name="monitoring-telemetry-add-message"></a>

Esse evento é acionado quando uma nova mensagem é adicionada a uma conversa de bate-papo em andamento. Ele captura a intenção do usuário e todos os trechos de código envolvidos.
+ `conversationId`: O identificador exclusivo para a conversa.
+ `messageId`: O identificador exclusivo do chat de mensagem.
+ `userIntent`: a intenção do usuário, como melhorar o código ou explicar o código.
+ `programmingLanguage`: o idioma relacionado à mensagem de bate-papo.

## ChatInteractWithMessageEvent
<a name="monitoring-telemetry-interact-message"></a>

Esse evento captura quando os usuários interagem com mensagens de bate-papo, como copiar trechos de código, clicar em links ou passar o mouse sobre referências.
+ `interactionType`: o tipo de interação (por exemplo, copiar, passar o mouse, clicar).
+ `interactionTarget`: o destino da interação (por exemplo, um trecho de código ou um link).
+ `acceptedCharacterCount`: o número de caracteres da mensagem que foram aceitos.
+ `acceptedSnippetHasReference`: um booleano indicando se o trecho aceito incluía uma referência.

## TerminalUserInteractionEvent
<a name="monitoring-telemetry-interact-event"></a>

Esse evento registra as interações do usuário com os comandos do terminal ou as conclusões no ambiente do terminal.
+ `terminalUserInteractionEventType`: o tipo de interação (por exemplo, tradução de terminal ou preenchimento de código).
+ `isCompletionAccepted`: um booleano indicando se a conclusão foi aceita pelo usuário.
+ `duration`: O tempo necessário para a interação.

# Acessando mensagens relacionadas à personalização no Amazon Logs CloudWatch
<a name="customizations-optimize-accessing-logs"></a>

Você pode armazenar informações sobre a criação de suas personalizações no [Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) Logs.

Você pode autorizar seu administrador do Amazon Q Developer a visualizar esses logs com o conjunto de permissões a seguir.

Para saber mais sobre as permissões necessárias para entregar registros a vários recursos, consulte [Registro que requer permissões adicionais [V2]](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions-V2) no *Guia do usuário do Amazon CloudWatch Logs*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowLogDeliveryActions",
            "Effect": "Allow",
            "Action": [
                "logs:PutDeliverySource",
                "logs:GetDeliverySource",
                "logs:DeleteDeliverySource",
                "logs:DescribeDeliverySources",
                "logs:PutDeliveryDestination",
                "logs:GetDeliveryDestination",
                "logs:DeleteDeliveryDestination",
                "logs:DescribeDeliveryDestinations",
                "logs:CreateDelivery",
                "logs:GetDelivery",
                "logs:DeleteDelivery",
                "logs:DescribeDeliveries",
                "firehose:ListDeliveryStreams",
                "firehose:DescribeDeliveryStream",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:*",
                "arn:aws:firehose:us-east-1:111122223333:deliverystream/*",
                "arn:aws:s3:::*"
            ]
        }
    ]
}
```

------

# Visualizar a atividade do usuário do Amazon Q Developer no painel
<a name="dashboard"></a>

Disponível somente para administradores do Amazon Q Developer, o painel do Amazon Q Developer resume dados úteis sobre como seus assinantes Pro usam o serviço.

![\[O painel do Amazon Q que exibe o total de assinaturas, assinaturas ativas e pendentes, um widget de linhas de código sugeridas, um widget de usuários ativos e filtros.\]](http://docs.aws.amazon.com/pt_br/amazonq/latest/qdeveloper-ug/images/q-dev-dashboard.png)


Na maioria das vezes, o Amazon Q gera e exibe novas métricas de hora em hora. A única seção que não é atualizada de hora em hora é o widget de **usuários ativos**, que é atualizado diariamente de acordo com o relógio em Tempo Universal Coordenado (UTC).

O painel mostra métricas coletadas de usuários inscritos nos seguintes:
+ a AWS conta na qual você está atualmente conectado

  *and*
+ nas contas de membro, se você estiver conectado a uma conta gerencial para a qual a [visibilidade das assinaturas em toda a organização](subscribe-visibility.md) tenha sido habilitada.
**nota**  
O widget **Usuários ativos** exibe somente informações da conta na qual você está conectado no momento.

**Como visualizar e filtrar o painel**

1. Faça login no Console de gerenciamento da AWS.

1. Vá para o console do Amazon Q Developer.

1. Escolha **Painel** no painel de navegação.

1. (Opcional) Filtre as informações por intervalo de datas, linguagem de programação, personalização ou fornecedor de ambiente de desenvolvimento integrado (IDE).

**Observações:**
+ Se o link do **Painel** não estiver disponível no painel de navegação, consulte [Como solucionar problemas no painel](dashboard-troubleshooting.md).
+ Se você quiser enviar métricas de usuário para receber um relatório diário com um detalhamento por usuário do uso do Amazon Q Developer, consulte [Visualizar a atividade de usuários específicos no Amazon Q Developer](q-admin-user-telemetry.md).
+ Para obter informações sobre métricas específicas, consulte [Descrições das métricas de uso do painel do Amazon Q Developer](dashboard-metrics-descriptions.md) ou clique no link de ajuda (![\[The help link.\]](http://docs.aws.amazon.com/pt_br/amazonq/latest/qdeveloper-ug/images/help-icon.png)) no canto superior direito da página do painel.

# Descrições das métricas de uso do painel do Amazon Q Developer
<a name="dashboard-metrics-descriptions"></a>

A tabela a seguir descreve as métricas exibidas no painel do Amazon Q Developer.

Para obter mais informações sobre o painel, consulte [Visualizar a atividade do usuário do Amazon Q Developer no painel](dashboard.md).


| Nome da métrica | Description | 
| --- | --- | 
|  **Assinaturas totais**  |  Mostra o total de assinaturas na AWS conta atual, bem como as assinaturas nas contas dos membros, se você estiver conectado a uma conta de gerenciamento para a qual a visibilidade das assinaturas em [toda a organização foi ativada](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-visibility.html).  | 
|  **Assinaturas ativas**  |  Mostra o total de assinaturas ativas na AWS conta atual, bem como as assinaturas nas contas dos membros, se você estiver conectado a uma conta de gerenciamento para a qual a visibilidade das assinaturas em [toda a organização foi ativada](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-visibility.html). As *assinaturas ativas* são aquelas que pertencem a usuários que começaram a usar o Amazon Q em seu ambiente de desenvolvimento integrado (IDE). Essas assinaturas são cobradas. Para obter mais informações sobre assinaturas ativas, consulte [Status de assinaturas do Amazon Q Developer](q-admin-setup-subscribe-status.md).  | 
|  **Assinaturas pendentes**  |  Mostra o total de assinaturas pendentes na AWS conta atual, bem como as assinaturas nas contas dos membros, se você estiver conectado a uma conta de gerenciamento para a qual a visibilidade das assinaturas em [toda a organização foi ativada](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-visibility.html). As *assinaturas pendentes* são aquelas que pertencem a usuários que ainda não começaram a usar o Amazon Q em seu IDE. Essas assinaturas não são cobradas. Para obter mais informações sobre assinaturas pendentes, consulte [Status de assinaturas do Amazon Q Developer](q-admin-setup-subscribe-status.md).  | 
|  **Linhas de código aceitas**  |  Mostra um gráfico circular que indica as linhas de código aceitas pelos usuários, divididas por recurso do Amazon Q (desenvolvimento de recursos, geração de documentação, geração de testes unitários etc.).   | 
|  **Usuários ativos**  |  Mostra um gráfico de linhas que indica o número de assinantes que estavam usando ativamente o Amazon Q no IDE durante um intervalo de datas especificado.  | 
|  **Sugestões em linha**  |  Mostra o número total de sugestões e sugestões aceitas para o recurso de [sugestões em linha](inline-suggestions.md). A porcentagem de sugestões aceitas é calculada dividindo o número de sugestões aceitas pelos usuários pelo total de sugestões geradas pelo Amazon Q. A contagem total de sugestões inclui sugestões aceitas e rejeitadas ativamente; ela não inclui sugestões rejeitadas porque o usuário continuou digitando ou começou a realizar outras operações em seu IDE.  | 
|  **Chat em linha**  |  Mostra o número total de sugestões e o número de sugestões aceitas para o recurso de [chat em linha](q-in-IDE-inline-chat.md). A porcentagem de sugestões aceitas é calculada dividindo o número de sugestões aceitas pelos usuários pelo total de sugestões geradas pelo Amazon Q.  | 
|  **Chat no IDE** — **Total de mensagens enviadas**  |  Mostra o número total de respostas do Amazon Q na janela de [chat do Amazon Q](q-in-IDE-chat.md) do IDE do usuário.  | 
|  **Desenvolvimento de recursos** — **Taxa de aceitação**  |  Mostra a taxa de aceitação do [recurso de desenvolvimento](q-in-IDE-chat.md#develop-code) de recursos. A taxa de aceitação é calculada dividindo o número de linhas de código aceitas pelos usuários pelo total de linhas de código sugeridas pelo Amazon Q.  | 
|  **Geração de documentos**  |  Mostra o número total de arquivos de documentação (como READMEs arquivos de suporte) criados e atualizados pelo recurso de [geração de documentos](q-in-IDE-chat.md#doc-generation). As taxas de aceitação são iguais ao número de atualizações ou criações de arquivos aceitas pelos usuários, dividido pelo número total de atualizações ou criações de arquivos sugeridas pelo Amazon Q.  | 
|  **Geração de teste de unidade**  |  Mostra o número total de testes unitários gerados pelo recurso de [geração de testes unitários](q-in-IDE-chat.md#unit-tests) e o número de testes unitários aceitos pelos usuários. A taxa de aceitação é calculada dividindo o número de testes de unidade aceitos pelos usuários pelo número total de testes de unidade gerados pelo Amazon Q.  | 
|  **Revisões de código**  |  Mostra o número total de análises de código e relatórios de descobertas gerados pelo recurso de [revisão de código](code-reviews.md). O número **total de revisões de código (somente manual)** e o **relatório de descobertas (somente manual)** se refere às revisões de código e aos relatórios de descoberta que *não* são [gerados automaticamente](start-review.md#auto-scan).  | 
|  **Correções de código**  |  Mostra o número total de [correções de código](address-code-issues.md) geradas pelo Amazon Q. A taxa de aceitação é calculada dividindo o número de correções de código aceitas pelos usuários pelo número total de correções de código sugeridas pelo Amazon Q.  | 
|  **Transformação de código**  |  Mostra o número total de transformações de código realizadas pelo recurso de [transformação](address-code-issues.md) e o número de linhas de código processadas.  | 

# Desabilitar o painel do Amazon Q Developer
<a name="dashboard-disabling"></a>

Você pode desabilitar o painel do Amazon Q Developer se tiver dúvidas sobre privacidade de dados, tempos de carregamento da página ou outros possíveis problemas. Ao desabilitar o painel, a página do painel (e todos os links para ela) não ficam mais disponíveis no console do Amazon Q Developer.

Para obter mais informações sobre o painel, consulte [Visualizar métricas de uso (painel)](dashboard.md).

**Como desabilitar o painel**

1. Abra o console do Amazon Q Developer:
   + Se você configurar o Amazon Q Developer com uma instância organizacional de Centro de Identidade do AWS IAM, faça login usando uma conta de gerenciamento ou conta de membro.
   + Se você configurou o Amazon Q Developer com uma instância de conta do Centro de Identidade IAM, faça login com a conta associada a essa instância.

1. Escolha **Configurações** e, na seção **Atividade do usuário do Amazon Q Developer**, escolha **Editar**. 

1. Desabilite o **painel de uso do Amazon Q Developer**.

# Como solucionar problemas no painel do Amazon Q Developer
<a name="dashboard-troubleshooting"></a>

Se a página do painel do Amazon Q Developer não estiver disponível, siga as seguintes etapas:
+ **Verifique suas permissões**. Para visualizar o painel, você precisa das seguintes permissões:
  + `q:ListDashboardMetrics` 
  + `codewhisperer:ListProfiles` 
  + `sso:ListInstances` 
  + `user-subscriptions:ListUserSubscriptions` 
  + Para ver métricas geradas antes de 22 de novembro de 2024, você também precisa de `cloudwatch:GetMetricData` e `cloudwatch:ListMetrics` 

    Para obter mais informações sobre permissões, consulte [Permitir que administradores usem o console do Amazon Q Developer](id-based-policy-examples-admins.md#q-admin-setup-admin-users).
+ **Verifique suas configurações**. No console do Amazon Q Developer, escolha **Configurações** e verifique se a opção **painel de uso do Amazon Q Developer** está habilitada.

Para obter mais informações sobre o painel, consulte [Visualizar métricas de uso (painel)](dashboard.md).

# Visualizar a atividade de usuários específicos no Amazon Q Developer
<a name="q-admin-user-telemetry"></a>

Você pode configurar o Amazon Q para coletar a telemetria de atividade do usuário de assinantes individuais do Amazon Q Developer em sua organização e apresentar essas informações em um relatório. O relatório fornece informações sobre como usuários específicos estão usando o Amazon Q.

O Amazon Q gera o relatório todos os dias à meia-noite (00:00) do Tempo Universal Coordenado (UTC) e o salva em um arquivo CSV no seguinte caminho:

`s3://bucketName/prefix/AWSLogs/accountId/QDeveloperLogs/by_user_analytic/region/year/month/day/00/accountId_by_user_analytic_timestamp.csv`

O arquivo CSV é disposto da seguinte forma:
+ Cada linha mostra um usuário que interagiu com o Amazon Q naquele dia.
+ Cada coluna mostra uma métrica, conforme descrito em [Métricas do relatório de atividade do usuário](user-activity-metrics.md). As métricas são calculadas com base na telemetria do usuário coletada ao longo do dia.

Se mais de mil usuários interagirem com o Amazon Q durante o dia, o Amazon Q dividirá os dados em vários arquivos CSV contendo mil usuários cada, com sufixos `part_1`, `part_2` e assim por diante.

**nota**  
Ao habilitar os relatórios de atividade do usuário, o Amazon Q coleta a telemetria, independentemente de como o desenvolvedor definiu a configuração **Permitir que o Amazon Q envie dados de uso à AWS** no IDE. Essa configuração controla se a telemetria pode ser usada pela *corporação AWS *, não pela sua organização. Para saber mais sobre essa configuração, consulte [Optando por não compartilhar sua telemetria do lado do cliente](opt-out-IDE.md#opt-out-IDE-telemetry).

Use as instruções a seguir para habilitar os relatórios de atividade do usuário.

**Pré-requisito**

Crie um bucket do Amazon S3 para armazenar o arquivo CSV do relatório de atividade do usuário. O bucket deve:
+ Esteja na AWS região em que o perfil Amazon Q Developer foi instalado. O perfil foi instalado quando você atribuiu usuários da força de trabalho do Centro de Identidade do IAM ao Amazon Q Developer Pro pela primeira vez. Para obter mais informações sobre esse perfil e suas regiões compatíveis, consulte [O que é o perfil do Amazon Q Developer?](subscribe-understanding-profile.md) e [Regiões compatíveis com o console do Q Developer e o perfil do Q Developer](q-admin-setup-subscribe-regions.md#qdev-console-and-profile-regions).
+ Esteja na AWS conta em que os usuários estão inscritos. Se os usuários estiverem inscritos em várias contas da AWS , será preciso criar buckets em cada uma dessas contas. Não há suporte para buckets entre contas.
+ (Opcional, mas recomendado) Ser diferente do bucket que você pode estar usando para [registro em log de prompts](q-admin-prompt-logging.md).
+ Incluir um prefixo, também conhecido como subpasta, onde o Amazon Q salvará o arquivo CSV. O arquivo CSV não pode ser salvo na raiz do bucket.
+ Tenha uma política de bucket como a que segue. Substitua *bucketName**region*,*accountId*,, e *prefix* por suas próprias informações.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "QDeveloperLogsWrite",
              "Effect": "Allow",
              "Principal": {
                  "Service": "q.amazonaws.com"
              },
              "Action": [
                  "s3:PutObject"
              ],
              "Resource": [
                  "arn:aws:s3:::bucketName/prefix/*"
              ],
              "Condition": {
                  "StringEquals": {
                      "aws:SourceAccount": "111122223333"
                  },
                  "ArnLike": {
                      "aws:SourceArn": "arn:aws:codewhisperer:us-east-1:111122223333:*"
                  }
              }
          }
      ]
  }
  ```

------

  Se estiver configurando o SSE-KMS no bucket, adicione a política abaixo na chave KMS:

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "Service": "q.amazonaws.com"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
          "StringEquals": {
            "aws:SourceAccount": "accountId" 
          },
          "ArnLike": {
             "aws:SourceArn": "arn:aws:codewhisperer:region:accountId:*"
          }
      }
  }
  ```

  Para saber mais sobre como proteger os dados em seu bucket do Amazon S3, consulte [Proteger dados com criptografia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

**Como habilitar relatórios de atividade do usuário**

1. Abra o console do Amazon Q Developer.

   Para usar o console do Amazon Q Developer Pro, você deve ter as permissões definidas em [Permitir que administradores usem o console do Amazon Q Developer](id-based-policy-examples-admins.md#q-admin-setup-admin-users).

1. Escolha **Configurações**.

1. Em **Relatórios de atividade do usuário do Q Developer**, escolha **Editar**.

1. Habilite a opção **Coletar métricas granulares por usuário**.

1. Em **Local do S3**, insira o URI do Amazon S3 que você usará para armazenar os relatórios CSV. Exemplo: `s3://amzn-s3-demo-bucket/user-activity-reports/`

# Métricas do relatório de atividade do usuário
<a name="user-activity-metrics"></a>

A tabela a seguir descreve as métricas incluídas nos relatórios de atividade do usuário gerados pelo Amazon Q Developer.

Para obter mais informações sobre esses relatórios, consulte [Visualizar a atividade de usuários específicos no Amazon Q Developer](q-admin-user-telemetry.md).


| Nome da métrica | Description | 
| --- | --- | 
|  Linhas Chat\$1 AICode  |  Linhas de código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica inclui o código gerado pelo [chat do Amazon Q](q-in-IDE-chat.md) (não pelo [chat em linha](q-in-IDE-inline-chat.md)) e inserido no IDE.   | 
|  Bate-papo\$1 MessagesInteracted  |  O número de mensagens de chat nas quais o usuário interagiu positivamente com o Amazon Q. Exemplos de interações positivas incluem clicar em um link, inserir uma sugestão e votar positivamente em uma resposta fornecida pelo Amazon Q. Essa métrica inclui mensagens geradas pelo [chat do Amazon Q](q-in-IDE-chat.md) (não pelo [chat em linha](q-in-IDE-inline-chat.md)).   | 
|  Bate-papo\$1 MessagesSent  |  O número de mensagens enviadas de e ao Amazon Q. Essa métrica inclui os prompts do usuário e as respostas do Amazon Q no [chat do Amazon Q](q-in-IDE-chat.md) (não no [chat em linha](q-in-IDE-inline-chat.md)).   | 
|  CodeFix\$1AcceptanceEventCount  |  O número de correções de código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica às correções de código geradas por meio do [recurso de revisão de código](code-reviews.md).  | 
|  CodeFix\$1AcceptedLines  |  Linhas de código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica às linhas de código geradas por meio do [recurso de revisão de código](code-reviews.md).  | 
|  CodeFix\$1GeneratedLines  |  Linhas de código sugeridas pela Amazon Q. Essa métrica se aplica às linhas de código geradas por meio do [recurso de revisão de código](code-reviews.md).  | 
|  CodeFix\$1GenerationEventCount  |  Número de correções de código sugeridas pela Amazon Q. Essa métrica se aplica às correções de código geradas por meio do [recurso de revisão de código](code-reviews.md).  | 
|  CodeReview\$1FailedEventCount  |  O número de problemas de código encontrados para os quais o Amazon Q não conseguiu sugerir uma correção de código. Essa métrica se aplica aos problemas de código gerados usando o [recurso de revisão de código](code-reviews.md).  | 
|  CodeReview\$1FindingsCount  |  Número de problemas de código encontrados pela Amazon Q. Essa métrica se aplica aos problemas de código encontrados usando o [recurso de revisão de código](code-reviews.md).  | 
|  CodeReview\$1SucceededEventCount  |  O número de problemas de código encontrados para os quais o Amazon Q conseguiu gerar uma sugestão de correção de código. Essa métrica se aplica aos problemas de código encontrados usando o [recurso de revisão de código](code-reviews.md).  | 
|  Desenvolvedor\$1 AcceptanceEventCount  |  O número de recursos de código sugeridos pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica os recursos de código gerados por meio do [comando /review](q-in-IDE-chat.md#develop-code).  | 
|  Desenvolvedor\$1 AcceptedLines  |  Linhas de código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica às linhas de código geradas por meio do [comando /dev](q-in-IDE-chat.md#develop-code).  | 
|  Desenvolvedor\$1 GeneratedLines  |  Linhas de código sugeridas pelo Amazon Q. Essa métrica se aplica às linhas de código geradas por meio do [comando /dev](q-in-IDE-chat.md#develop-code).  | 
|  Desenvolvedor\$1 GenerationEventCount  |  O número de recursos de código sugeridos pelo Amazon Q. Essa métrica se aplica aos recursos de código geradas por meio do [comando /dev](q-in-IDE-chat.md#develop-code).  | 
|  DocGeneration\$1AcceptedFileUpdates  |  O número de atualizações de arquivo sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica às atualizações de arquivo geradas por meio do [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1AcceptedFilesCreations  |  O número de criações de arquivo sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica às criações de arquivo geradas por meio do [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1AcceptedLineAdditions  |  Linhas de adições de documentação sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica à documentação gerada por meio do [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1AcceptedLineUpdates  |  Linhas de atualizações de documentação sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica à documentação gerada usando o [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1EventCount  |  O número de vezes que o usuário interagiu com o Amazon Q usando o [comando /doc](q-in-IDE-chat.md#doc-generation).   | 
|  DocGeneration\$1RejectedFileCreations  |  O número de criações de arquivo sugeridas pelo Amazon Q e rejeitadas pelo usuário. Essa métrica se aplica às criações de arquivo geradas por meio do [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1RejectedFileUpdates  |  O número de atualizações de arquivo sugeridas pelo Amazon Q e rejeitadas pelo usuário. Essa métrica se aplica às atualizações de arquivo geradas por meio do [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1RejectedLineAdditions  |  Linhas de adições de documentação sugeridas pelo Amazon Q e rejeitadas pelo usuário. Essa métrica se aplica à documentação gerada por meio do [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  DocGeneration\$1RejectedLineUpdates  |  Linhas de atualizações de documentação sugeridas pelo Amazon Q e rejeitadas pelo usuário. Essa métrica se aplica à documentação gerada usando o [comando /doc](q-in-IDE-chat.md#doc-generation).  | 
|  InlineChat\$1AcceptedLineAdditions  |  Linhas de adições de código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica inclui adições de código geradas pelo [chat em linha](q-in-IDE-inline-chat.md) (não pelo [chat do Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1AcceptedLineDeletions  |  Linhas de exclusões código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica inclui exclusões de código sugeridas pelo [chat em linha](q-in-IDE-inline-chat.md) (não pelo [chat do Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1AcceptanceEventCount  |  O número de sugestões do [chat em linha](q-in-IDE-inline-chat.md) (não do [chat do Amazon Q](q-in-IDE-chat.md)) aceitas pelo usuário.  | 
|  InlineChat\$1DismissalEventCount  |  O número de sugestões do [chat em linha](q-in-IDE-inline-chat.md) (não do [chat do Amazon Q](q-in-IDE-chat.md)) abandonadas pelo usuário. Nesse contexto, “abandonado” significa que a sugestão de código foi exibida, mas o usuário continuou digitando ou realizando outras operações em seu IDE e não aceitou ou rejeitou explicitamente a sugestão de código.  | 
|  InlineChat\$1DismissedLineAdditions  |  Linhas de adições de código sugeridas pelo Amazon Q e abandonadas pelo usuário. Nesse contexto, “abandonado” significa que a sugestão de código foi exibida, mas o usuário continuou digitando ou realizando outras operações em seu IDE e não aceitou ou rejeitou explicitamente a sugestão de código. Essa métrica inclui adições de código geradas pelo [chat em linha](q-in-IDE-inline-chat.md) (não pelo [chat do Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1DismissedLineDeletions  |  Linhas de exclusões de código sugeridas pelo Amazon Q e abandonadas pelo usuário. Nesse contexto, “abandonado” significa que a sugestão de código foi exibida, mas o usuário continuou digitando ou realizando outras operações em seu IDE e não aceitou ou rejeitou explicitamente a sugestão de código. Essa métrica inclui exclusões de código sugeridas pelo [chat em linha](q-in-IDE-inline-chat.md) (não pelo [chat do Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1EventCount  |  O número de sessões de [chat em linha](q-in-IDE-inline-chat.md) (não de [chat do Amazon Q](q-in-IDE-chat.md)) nas quais o usuário participou.  | 
|  InlineChat\$1RejectedLineAdditions  |  Linhas de adições de código sugeridas pelo Amazon Q e rejeitadas pelo usuário. Essa métrica inclui adições de código geradas pelo [chat em linha](q-in-IDE-inline-chat.md) (não pelo [chat do Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1RejectedLineDeletions  |  Linhas de exclusões código sugeridas pelo Amazon Q e rejeitadas pelo usuário. Essa métrica inclui exclusões de código sugeridas pelo [chat em linha](q-in-IDE-inline-chat.md) (não pelo [chat do Amazon Q](q-in-IDE-chat.md)).  | 
|  InlineChat\$1RejectionEventCount  |  O número de sugestões do [chat em linha](q-in-IDE-inline-chat.md) (não do [chat do Amazon Q](q-in-IDE-chat.md)) rejeitadas pelo usuário.  | 
|  Linhas embutidas AICode  |  Linhas de código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica inclui código aceito como [sugestões em linha](inline-suggestions.md).  | 
|  Em linha\$1 AcceptanceCount  |  O número de [sugestões em linha](inline-suggestions.md) aceitas pelo usuário.  | 
|  Em linha\$1 SuggestionsCount  |  O número de [sugestões em linha](inline-suggestions.md) exibidas ao usuário.  | 
|  TestGeneration\$1AcceptedLines  |  Linhas de código sugeridas pelo Amazon Q e aceitas pelo usuário. Essa métrica se aplica às linhas de código geradas por meio do [comando /test](q-in-IDE-chat.md#unit-tests).  | 
|  TestGeneration\$1AcceptedTests  |  O número de testes de unidade sugeridos pelo Amazon Q e aceitos pelo usuário. Essa métrica se aplica aos testes de unidade gerados por meio do [comando /test](q-in-IDE-chat.md#unit-tests).  | 
|  TestGeneration\$1EventCount  |  O número de vezes que o usuário interagiu com o Amazon Q com o [comando /test](q-in-IDE-chat.md#unit-tests).   | 
|  TestGeneration\$1GeneratedLines  |  Linhas de código sugeridas pelo Amazon Q. Essa métrica se aplica às linhas de código geradas por meio do [comando /test](q-in-IDE-chat.md#unit-tests).  | 
|  TestGeneration\$1GeneratedTests  |  O número de testes de unidade sugeridos pelo Amazon Q. Essa métrica se aplica aos testes de unidade gerados por meio do [comando /test](q-in-IDE-chat.md#unit-tests).  | 
|  Transformação\$1 EventCount  |  O número de vezes que o usuário interagiu com o Amazon Q por meio do [comando /transform](transform-in-IDE.md), excluindo as vezes em que o usuário [transformou o código na linha de comandos](transform-CLI.md).  | 
|  Transformação\$1 LinesGenerated  |  Linhas de código sugeridas pelo Amazon Q. Essa métrica se aplica ao código gerado por meio do [comando /transform](transform-in-IDE.md), excluindo o [código transformado na linha de comandos](transform-CLI.md).  | 
|  Transformação\$1 LinesIngested  |  Linhas de código fornecidas ao Amazon Q para transformação. Essa métrica se aplica ao código fornecido por meio do [comando /transform](transform-in-IDE.md), excluindo o código fornecido para [transformação na linha de comandos](transform-CLI.md) ou para uma [conversão SQL](transform-sql.md).  | 

# Registrar em log os prompts dos usuários no Amazon Q Developer
<a name="q-admin-prompt-logging"></a>

Os administradores podem habilitar o registro em log de todas as [sugestões em linha](inline-suggestions.md) e [conversas de chat](q-in-IDE-chat.md) que os usuários têm com o Amazon Q em seu ambiente de desenvolvimento integrado (IDE). Esses logs podem ajudar na auditoria, depuração, análise e na garantia da conformidade.

Quando os desenvolvedores usam sugestões em linha, o Amazon Q registra em log as sugestões aceitas e ativamente rejeitadas. Quando os desenvolvedores conversam com o Amazon Q, o Amazon Q registra em log os prompts dos desenvolvedores e as respostas do Amazon Q. Quando os desenvolvedores conversam com [o Amazon Q Agent para desenvolvimento de software](q-in-IDE-chat.md#develop-code) usando o **/dev** comando, somente os prompts serão registrados.

O Amazon Q armazena os logs em um bucket do Amazon S3 criado por você, no seguinte caminho:

`bucketName/prefix/AWSLogs/accountId/QDeveloperLogs/log-type/region/year/month/day/utc-hour/zipFile.gz/logFile.json`

No caminho anterior, `log-type` é um dos seguintes:
+ `GenerateAssistantResponse`: armazena os logs de chat
+ `GenerateCompletions`: armazena os logs de preenchimento em linha
+ `StartTaskAssistCodeGeneration`: armazena os logs **/dev**

Para obter exemplos e explicações sobre o conteúdo do arquivo de log, consulte [Exemplos de log de prompts no Amazon Q Developer](q-admin-prompt-log-examples.md).

O recurso de registro em log de prompts não é cobrado. No entanto, há o custo de armazenamento do bucket do Amazon S3 usado para armazenar os logs e uma pequena taxa pela chave do KMS opcional usada para criptografar o bucket.

Use as instruções a seguir para habilitar o registro em log de prompts.

**Pré-requisitos**
+ Os usuários devem estar inscritos em uma conta independente ou, se você estiver usando o [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html), em uma conta gerencial. Atualmente, o Q Developer não oferece suporte ao registro em log de prompts de usuários inscritos em contas de membro no AWS Organizations.
+ Crie um bucket do Amazon S3 para manter os logs de solicitações. O bucket deve:
  + Esteja na AWS região em que o perfil Amazon Q Developer foi instalado. O perfil foi instalado quando você atribuiu usuários ao Amazon Q Developer Pro pela primeira vez. Para obter mais informações sobre esse perfil e suas regiões compatíveis, consulte [O que é o perfil do Amazon Q Developer?](subscribe-understanding-profile.md) e [Regiões compatíveis com o console do Q Developer e o perfil do Q Developer](q-admin-setup-subscribe-regions.md#qdev-console-and-profile-regions).
  + Esteja na AWS conta em que os usuários estão inscritos.
  + Tenha uma política de bucket como a que segue. Substitua *bucketName**region*,*accountId*,, e *prefix* por suas próprias informações.

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "QDeveloperLogsWrite",
                "Effect": "Allow",
                "Principal": {
                    "Service": "q.amazonaws.com"
                },
                "Action": [
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::bucketName/prefix/*"
                ],
                "Condition": {
                    "StringEquals": {
                        "aws:SourceAccount": "111122223333"
                    },
                    "ArnLike": {
                    "aws:SourceArn": "arn:aws:codewhisperer:us-east-1:111122223333:*"
                    }
                }
            }
        ]
    }
    ```

------

    Se estiver configurando o SSE-KMS no bucket, adicione a seguinte política na chave do KMS:

    ```
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "q.amazonaws.com"
        },
        "Action": "kms:GenerateDataKey",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "accountId" 
            },
            "ArnLike": {
               "aws:SourceArn": "arn:aws:codewhisperer:region:accountId:*"
            }
        }
    }
    ```

    Para saber mais sobre como proteger os dados em seu bucket do Amazon S3, consulte [Proteger dados com criptografia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

**Para ativar o log de prompts**

1. Abra o console do Amazon Q Developer.

   Para usar o console do Amazon Q Developer Pro, você deve ter as permissões definidas em [Permitir que administradores usem o console do Amazon Q Developer](id-based-policy-examples-admins.md#q-admin-setup-admin-users).
**nota**  
Você deve entrar como administrador independente da conta ou da conta gerencial. Os administradores de contas de membros não podem habilitar o registro em log de prompts porque esse registro não é compatível com usuários inscritos em contas de membros.

1. Escolha **Configurações**.

1. Em **Preferências**, escolha **Editar**.

1. Na janela Editar preferências, ative o **log de prompts do Q Developer**.

1. Em Local do Amazon S3, insira a URI do Amazon S3 que você usará para receber os logs. Exemplo: `s3://amzn-s3-demo-bucket/qdev-prompt-logs/`

# Exemplos de log de prompts no Amazon Q Developer
<a name="q-admin-prompt-log-examples"></a>

Esta seção fornece exemplos de logs de prompts gerados pelo Amazon Q Developer. 

Cada exemplo conta com uma tabela que descreve os campos do arquivo de log.

Para obter mais informações sobre os logs de prompt, consulte [Registrar em log os prompts dos usuários no Amazon Q Developer](q-admin-prompt-logging.md).

**Topics**
+ [

## Exemplo de log de sugestões em linha
](#prompt-log-examples-inline)
+ [

## Exemplo de log de chat
](#prompt-log-examples-chat)
+ [

## Exemplo de log /dev
](#prompt-log-examples-dev)

## Exemplo de log de sugestões em linha
<a name="prompt-log-examples-inline"></a>

O exemplo a seguir mostra um arquivo de log gerado quando um usuário aceita uma sugestão em linha.

```
{
    "records": [
        {
            "generateCompletionsEventRequest": {
                "leftContext": "import * cdk from 'aws-cdk-lib';\r\nimport * s3 from 'aws-cdk-lib/aws-s3';\r\nimport { Stack, StackProps } from 'constructs';\r\nexport class MyStack extends Stack {\r\n  constructor(scope: cdk.App, id: string, props?: StackProps) {\r\n    super(scope, id, props);\r\n\r\n    new s3.Bucket(this, 'XXXXXXXX', {\r\n      versioned: true\r\n    });\r\n  }\r\n  ",
                "rightContext": "",
                "fileName": "cdk-modified.ts",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-06T15:09:16.412719Z"
            },
            "generateCompletionsEventResponse": {
                "completions": ["synth() {\n    return cdk.App.prototype.synth.apply(this, arguments);\n  }"],
                "requestId": "797c70ee-abc9-4cc7-a148-b9df17f6ce48"
            }
        }
    ]
}
```

A tabela a seguir descreve os campos no arquivo de log para sugestões em linha.


| Nome do campo | Description | 
| --- | --- | 
|  `records`  |  Campo de nível superior que contém um conjunto de sugestões em linha, também conhecidas como preenchimentos em linha.  | 
|  `generateCompletionsEventRequest`  |  Descreve a solicitação de uma sugestão de código em linha. A solicitação é feita pelo Amazon Q em nome do usuário.  | 
|  `leftContext`  |  Indica o código antes do cursor que o Amazon Q está usando como contexto para gerar uma sugestão em linha.  | 
|  `rightContext`  |  Indica o código após o cursor que o Amazon Q está usando como contexto para gerar uma sugestão em linha.  | 
|  `fileName`  |  Indica o nome do arquivo no qual uma sugestão em linha foi solicitada.  | 
|  `customizationArn`  |  Indica o nome do recurso da Amazon (ARN) da personalização aplicada às sugestões em linha. Neste exemplo, não há personalização.   | 
|  `userId`  |  Indica o ID do usuário que solicitou uma sugestão em linha.  | 
|  `timeStamp`  |  Indica a data e a hora em que a sugestão em linha foi solicitada. A data/hora está no formato de Tempo Universal Coordenado (UTC).  | 
|  `generateCompletionsEventResponse`  |  Descreve a sugestão em linha gerada pelo Amazon Q.  | 
|  `completions`  |  Indica a sugestão em linha fornecida pelo Amazon Q aceita pelo usuário.  | 
|  `requestId`  |  O ID da solicitação em linha que exclusivamente identifica o evento.  | 

## Exemplo de log de chat
<a name="prompt-log-examples-chat"></a>

O exemplo a seguir mostra um arquivo de log gerado quando um usuário conversa usando o Amazon Q em seu IDE.

```
{
    "records": [
        {
            "generateAssistantResponseEventRequest": {
                "prompt": "Can you explain how to set up object-level access control in an S3 bucket using AWS CDK?",
                "chatTriggerType": "MANUAL",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-06T15:05:56.313070Z"
            },
            "generateAssistantResponseEventResponse": {
                "assistantResponse": "I'll explain how to set up object-level access control for an S3 bucket using AWS CDK. Here's how you can implement different access control configurations: [[1]](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html)\n\n1. Using Bucket Owner Enforced (Recommended Modern Approach):\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL\n});\n```\n\n2. Using Public Access Block Configuration:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  blockPublicAccess: new s3.BlockPublicAccess({\n    blockPublicAcls: true,\n    blockPublicPolicy: true,\n    ignorePublicAcls: true,\n    restrictPublicBuckets: true\n  })\n});\n```\n\n3. Setting Access Control for Specific Use Cases:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as iam from 'aws-cdk-lib/aws-iam';\n\nconst bucket = new s3.Bucket(this, 'XXXXXXXX', {\n  // Enable versioning for object-level recovery\n  versioned: true,\n  \n  // Enforce encryption\n  encryption: s3.BucketEncryption.S3_MANAGED,\n  \n  // Block all public access\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n  \n  // Enforce object ownership\n  objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n  \n  // Enable server access logs\n  serverAccessLogsPrefix: 'logs/'\n});\n\n// Grant read access to specific IAM role\nconst role = new iam.Role(this, 'MyRole', {\n  assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),\n});\nbucket.grantRead(role);\n\n// Grant write access to specific objects with prefix\nbucket.addToResourcePolicy(new iam.PolicyStatement({\n  actions: ['s3:PutObject'],\n  resources: [bucket.arnForObjects('uploads/*')],\n  principals: [new iam.AccountRootPrincipal()]\n}));\n```\n\n4. Setting up Lifecycle Rules for Objects:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  lifecycle: [\n    {\n      transitions: [\n        {\n          storageClass: s3.StorageClass.INFREQUENT_ACCESS,\n          transitionAfter: cdk.Duration.days(30)\n        },\n        {\n          storageClass: s3.StorageClass.GLACIER,\n          transitionAfter: cdk.Duration.days(90)\n        }\n      ],\n      expiration: cdk.Duration.days(365)\n    }\n  ]\n});\n```\n\nKey points to remember:\n- Always use the principle of least privilege\n- Block public access by default unless explicitly required\n- Use BUCKET_OWNER_ENFORCED for object ownership when possible\n- Consider implementing lifecycle rules for cost optimization\n- Use versioning for sensitive data\n- Implement server-side encryption\n- Use resource policies and IAM roles for access control instead of ACLs\n- Monitor access patterns using server access logging\n\nThese configurations help create a secure and well-managed S3 bucket with appropriate access controls at both bucket and object levels.",
                "followupPrompts": "How can you implement multi-factor authentication for S3 bucket access using AWS CDK?What are the best practices for setting up object-level versioning in AWS S3 using CDK?How can you use AWS CDK to create a custom error message for unauthorized access attempts on an S3 bucket?",
                "messageMetadata": {
                    "conversationId": "491bd3cd-d70d-40c0-a452-5ef3f0878422",
                    "utteranceId": null
                },
                "codeReferenceEvents": [],
                "supplementaryWebLinksEvent": [
                    {
                        "uri": "https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html",
                        "title": "[1] Manage access control lists (ACLs) for Amazon S3 buckets using an AWS SDK - Amazon Simple Storage Service",
                        "snippet": "The following code example shows how to manage access control lists (ACLs) for Amazon S3 buckets.\n\n.NET\n\n**AWS SDK for .NET**\n\n```\n    using System;\n    using System.Collections.Generic;\n    using System.Threading.Tasks;\n    using Amazon.S3;\n    using Amazon.S3.Model;\n\n    /// <summary>\n    /// This example shows how to manage Amazon Simple Storage Service\n    /// (Amazon S3) access control lists (ACLs) to control Amazon S3 bucket\n    /// access.\n    /// </summary>\n    public class ManageACLs\n    {\n        public static async Task Main()\n        {\n            string bucketName = \"amzn-s3-demo-bucket1\";\n            string newBucketName = \"amzn-s3-demo-bucket2\";\n            string keyName = \"sample-object.txt\";\n            string emailAddress = \"someone@example.com\";\n\n            // If the AWS Region where your bucket is located is different from\n            // the Region defined for the default user, pass the Amazon S3 bucket's\n            // name to the client constructor. It should look like this:\n            // RegionEndpoint bucketRegion = RegionEndpoint.USEast1;\n            IAmazonS3 client = new AmazonS3Client();\n\n            await TestBucketObjectACLsAsync(client, bucketName, newBucketName, keyName, emailAddress);\n        }\n\n        /// <summary>\n        /// Creates a new Amazon S3 bucket with a canned ACL, then retrieves the ACL\n        /// information and then adds a new ACL to one of the objects in the\n        /// Amazon S3 bucket.\n        /// </summary>\n        /// <param name=\"client\">The initialized Amazon S3 client object used to call\n        /// methods to create a bucket, get an ACL, and add a different ACL to\n        /// one of the objects.</param>\n        /// <param name=\"bucketName\">A string representing the original Amazon S3\n        /// bucket name.</param>\n        /// <param name=\"newBucketName\">A string representing the name of the\n        /// new bucket that will be created.</param>\n        /// <param name=\"keyName\">A string representing the key name of an Amazon S3\n        /// object for which we will change the ACL.</param>\n        /// <param name=\"emailAddress\">A string representing the email address\n        /// belonging to the person to whom access to the Amazon S3 bucket will be\n        /// granted.</param>\n        public static async Task TestBucketObjectACLsAsync(\n            IAmazonS3 client,\n            string bucketName,\n            string newBucketName,\n            string keyName,\n            string emailAddress)\n        {\n            try\n            {\n                // Create a new Amazon S3 bucket and specify canned ACL.\n                var success = await CreateBucketWithCannedACLAsync(client, newBucketName);\n\n                // Get the ACL on a bucket.\n                await GetBucketACLAsync(client, bucketName);\n\n                // Add (replace) the ACL on an object in a bucket.\n                await AddACLToExistingObjectAsync(client, bucketName, keyName, emailAddress);\n            }\n            catch (AmazonS3Exception amazonS3Exception)\n            {\n                Console.WriteLine($\"Exception: {amazonS3Exception.Message}\");\n            }\n        }\n\n        /// <summary>\n        /// Creates a new Amazon S3 bucket with a canned ACL attached.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"newBucketName\">A string representing the name of the\n        /// new Amazon S3 bucket.</param>\n        /// <returns>Returns a boolean value indicating success or failure.</returns>\n        public static async Task<bool> CreateBucketWithCannedACLAsync(IAmazonS3 client, string newBucketName)\n        {\n            var request = new PutBucketRequest()\n            {\n                BucketName = newBucketName,\n                BucketRegion = S3Region.EUWest1,\n\n                // Add a canned ACL.\n                CannedACL = S3CannedACL.LogDeliveryWrite,\n            };\n\n            var response = await client.PutBucketAsync(request);\n            return response.HttpStatusCode == System.Net.HttpStatusCode.OK;\n        }\n\n\n        /// <summary>\n        /// Retrieves the ACL associated with the Amazon S3 bucket name in the\n        /// bucketName parameter.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"bucketName\">The Amazon S3 bucket for which we want to get the\n        /// ACL list.</param>\n        /// <returns>Returns an S3AccessControlList returned from the call to\n        /// GetACLAsync.</returns>\n        public static async Task<S3AccessControlList> GetBucketACLAsync(IAmazonS3 client, string bucketName)\n        {\n            GetACLResponse response = await client.GetACLAsync(new GetACLRequest\n            {\n                BucketName = bucketName,\n            });\n\n            return response.AccessControlList;\n        }\n\n\n\n        /// <summary>\n        /// Adds a new ACL to an existing object in the Amazon S3 bucket.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"bucketName\">A string representing the name of the Amazon S3\n        /// bucket containing the object to which we want to apply a new ACL.</param>\n        /// <param name=\"keyName\">A string representing the name of the object\n        /// to which we want to apply the new ACL.</param>\n        /// <param name=\"emailAddress\">The email address of the person to whom\n        /// we will be applying to whom access will be granted.</param>\n        public static async Task AddACLToExistingObjectAsync(IAmazonS3 client, string bucketName, string keyName, string emailAddress)\n        {\n            // Retrieve the ACL for an object.\n            GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest\n            {\n                BucketName = bucketName,\n                Key = keyName,\n            });\n\n            S3AccessControlList acl = aclResponse.AccessControlList;\n\n            // Retrieve the owner.\n            Owner owner = acl.Owner;\n\n            // Clear existing grants.\n            acl.Grants.Clear();\n\n            // Add a grant to reset the owner's full permission\n            // (the previous clear statement removed all permissions).\n            var fullControlGrant = new S3Grant\n            {\n                Grantee = new S3Grantee { CanonicalUser = acl.Owner.Id },\n            };\n            acl.AddGrant(fullControlGrant.Grantee, S3Permission.FULL_CONTROL);\n\n            // Specify email to identify grantee for granting permissions.\n            var grantUsingEmail = new S3Grant\n            {\n                Grantee = new S3Grantee { EmailAddress = emailAddress },\n                Permission = S3Permission.WRITE_ACP,\n            };\n\n            // Specify log delivery group as grantee.\n            var grantLogDeliveryGroup = new S3Grant\n            {\n                Grantee = new S3Grantee { URI = \"http://acs.amazonaws.com/groups/s3/LogDelivery\" },\n                Permission = S3Permission.WRITE,\n            };\n\n            // Create a new ACL.\n            var newAcl = new S3AccessControlList\n            {\n                Grants = new List<S3Grant> { grantUsingEmail, grantLogDeliveryGroup },\n                Owner = owner,\n            };\n\n            // Set the new ACL. We're throwing away the response here.\n            _ = await client.PutACLAsync(new PutACLRequest\n            {\n                BucketName = bucketName,\n                Key = keyName,\n                AccessControlList = newAcl,\n            });\n        }\n\n    }\n\n\n```\n\n* For API details, see the following topics in _AWS SDK for .NET API Reference_.\n  \n  * GetBucketAcl\n\n* GetObjectAcl\n\n* PutBucketAcl\n\n* PutObjectAcl\n\nFor a complete list of AWS SDK developer guides and code examples, see Developing with Amazon S3 using the AWS SDKs. This topic also includes information about getting started and details about previous SDK versions.\n"
                    }
                ],
                "requestId": "dad38fc0-815c-45f7-970a-db916cb7f131"
            }
        }
    ]
}
```


| Nome do campo | Description | 
| --- | --- | 
|  `records`  |  Campo de nível superior que contém um conjunto de prompts e respostas.  | 
|  `generateAssistantResponseEventRequest`  |  Descreve o prompt inserido pelo usuário na janela de chat no IDE.  | 
|  `prompt`  |  Indica o prompt que o usuário inseriu na janela de chat.  | 
|  `chatTriggerType`  |  `MANUAL` indica que o usuário inseriu um prompt na janela de chat ou clicou em uma das perguntas sugeridas na janela de chat. `INLINE_CHAT` indica que o usuário inseriu um prompt na pequena tela de entrada na janela principal de codificação. Para obter mais informações sobre conversas em linha, consulte [Conversar em linha com o Amazon Q Developer](q-in-IDE-inline-chat.md).  | 
|  `customizationArn`  |  Indica o nome do recurso da Amazon (ARN) da personalização aplicada ao chat. Neste exemplo, não há personalização. Para     | 
|  `userId`  |  Indica o ID do usuário que inseriu o prompt.  | 
|  `timeStamp`  |  Indica a data e a hora em que o usuário inseriu o prompt. A data/hora está no formato Universal Coordenado (UTC).  | 
|  `generateAssistantResponseEventResponse`  |  Descreve a resposta gerada pelo Amazon Q.  | 
|  `assistantResponse`  |  Indica a resposta que o Amazon Q forneceu ao prompt do usuário.  | 
|  `followupPrompts`  |  Indica os exemplos de prompts de acompanhamento exibidos ao usuário no final da resposta.  | 
|  `messageMetadata`  |  Descreve os metadados associados à resposta.  | 
|  `conversationId`  |  Indica o ID da conversa da resposta. O ID da conversa agrupa as mensagens em uma sessão de chat.  | 
|  `utteranceId`  |  Indica o ID do enunciado da resposta. Um ID de enunciado é um rótulo que distingue um prompt do outro em um diálogo ou conjunto de dados.  | 
|  `codeReferenceEvents`  |  Descreve links para referências de código incluídas na resposta.  | 
|  `supplementaryWebLinksEvent`  |  Indica os links exibidos ao usuário no final da resposta.  | 
|  `requestId`  |  O ID da resposta que exclusivamente identifica o evento.  | 

## Exemplo de log /dev
<a name="prompt-log-examples-dev"></a>

O exemplo a seguir mostra um arquivo de log gerado quando um usuário insere um comando **/dev** no chat do Amazon Q em seu IDE.

```
{
    "records": [
        {
            "startTaskAssistCodeGenerationEventRequest": {
                "prompt": "write a python application that prints 'hello world!' text to the screen and format it in red bold text",
                "chatTriggerType": "MANUAL",
                "conversationId": "da1c95b6-84e1-46a2-9ef9-fe92f5ee169e",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-13T15:40:27.808027101Z"
            },
            "startTaskAssistCodeGenerationEventResponse": {
                "requestId": "e504f126-7197-4e3c-a046-1a10d5a3f3e0"
            }
        }
    ]
}
```


| Nome do campo | Description | 
| --- | --- | 
|  `records`  |  Campo de nível superior que contém um conjunto de prompts e respostas.  | 
|  `startTaskAssistCodeGenerationEventRequest`  |  Descreve o prompt **/dev** inserido pelo usuário na janela de chat no IDE.  | 
|  `prompt`  |  Indica o prompt **/dev** que o usuário inseriu na janela de chat.  | 
|  `chatTriggerType`  |  `MANUAL` indica que o usuário inseriu um prompt na janela de chat ou clicou em uma das perguntas sugeridas na janela de chat. `INLINE_CHAT` indica que o usuário inseriu um prompt na pequena tela de entrada na janela principal de codificação. Para obter mais informações sobre conversas em linha, consulte [Conversar em linha com o Amazon Q Developer](q-in-IDE-inline-chat.md).  | 
|  `conversationId`  |  Indica o ID da conversa da resposta. O ID da conversa agrupa as mensagens em uma sessão de chat.  | 
|  `customizationArn`  |  Indica o nome do recurso da Amazon (ARN) da personalização aplicada ao chat. Neste exemplo, não há personalização. Para     | 
|  `userId`  |  Indica o ID do usuário que inseriu o prompt.  | 
|  `timeStamp`  |  Indica a data e a hora em que o usuário inseriu o prompt. A data/hora está no formato Universal Coordenado (UTC).  | 
|  `startTaskAssistCodeGenerationEventResponse`  |  Descreve a resposta gerada pelo Amazon Q. Atualmente, não há suporte ao registro das respostas aos comandos **/dev**, portanto, o campo não incluirá uma resposta.  | 
|  `assistantResponse`  |  Indica a resposta que o Amazon Q forneceu ao prompt do usuário.  | 
|  `requestId`  |  O ID da resposta que exclusivamente identifica o evento.  | 