Com os registros do Gemini Code Assist Standard e Enterprise, é possível acompanhar as interações e o uso dos desenvolvedores nos seus projetos. Neste documento, descrevemos como usar o console Google Cloud ou a API REST para configurar a geração de registros do Gemini Code Assist.
Limitações
A gravação de dados de registro do Gemini Code Assist Standard e Enterprise é limitada às interações do usuário com o Gemini Code Assist em um ambiente de desenvolvimento integrado.
Por padrão, os registros do Gemini Code Assist são coletados por projeto. Para instruções sobre como configurar um projeto centralizado para coletar registros de vários projetos, consulte Configurar a geração de registros de vários projetos.
O Gemini Code Assist no GitHub não é compatível com o Cloud Logging.
Os registros do Gemini Code Assist registram uma contagem combinada de tokens (
totalTokenCount) para cada solicitação de chat e agente (CompleteTask), e você pode atribuí-la a um usuário com o rótulolabels.user_id. Essa contagem aparece nos camposRequestLog.metadata.totalTokenCount,ResponseLog.metadata.totalTokenCounteMetadataLog.apiRequest.totalTokenCount. Os registros de solicitações de preenchimento e solicitação de geração de código (CompleteCodeeGenerateCode) e os registros de metadados que registram eventos de telemetria, como eventoscodeExposure,codeAcceptance,chatExposureechatAcceptance, não incluem contagens de tokens. Os registros e as métricas do Cloud Monitoring não registram contagens separadas de tokens de comando e resposta. Para conferir o uso agregado de tokens do seu projeto, consulte Métricas de token e cota.
Antes de começar
Verifique se o projeto do Google Cloud está vinculado a uma conta de faturamento.
Verificar permissões do IAM
Para configurar a geração de registros do Gemini Code Assist, você precisa de permissões específicas do IAM. Para seguir o princípio de privilégio mínimo, conceda um papel personalizado que contenha apenas as permissões necessárias.
Peça ao administrador para criar um papel personalizado que inclua as seguintes permissões:
serviceusage.services.enable: para ativar as APIs no projeto.cloudaicompanion.loggingSettings.create: para criar configurações de geração de registros.cloudaicompanion.loggingSettings.get: para ver as configurações de geração de registros.cloudaicompanion.loggingSettings.list: para listar as configurações de geração de registros.cloudaicompanion.loggingSettings.update: para atualizar as configurações de geração de registros.cloudaicompanion.loggingSettingBindings.create: para vincular as configurações de geração de registros a um projeto.cloudaicompanion.loggingSettingBindings.get: para ver as vinculações de configuração de geração de registros.cloudaicompanion.loggingSettingBindings.list: para listar as vinculações de configuração de geração de registros.
Como alternativa, é possível conceder os papéis predefinidos
Administrador das configurações do Gemini para Google Cloud
(roles/cloudaicompanion.settingsAdmin) e
Administrador do Service Usage
(roles/serviceusage.serviceUsageAdmin). No entanto, esses papéis incluem
permissões para definir outras configurações de administrador do Gemini no
Google Cloud e gerenciar o uso do serviço no Google Cloud, o que pode
ser mais do que o necessário para definir as configurações de geração de registros.
Configurar a geração de registros do Gemini Code Assist
As seções a seguir fornecem as etapas necessárias para ativar a coleta e o armazenamento da atividade do Gemini Code Assist Standard e Enterprise no Cloud Logging, incluindo:
Registros de comandos e respostas do Gemini Code Assist Standard e Enterprise, como entradas do usuário, informações contextuais e respostas.
Registros de metadados do Gemini Code Assist Standard e Enterprise, como metadados de telemetria e linhas de código aceitas pelo usuário.
Para mais detalhes sobre os dois tipos de registros, consulte Ver registros do Gemini Code Assist.
Ativar a geração de registros do Gemini Code Assist em um projeto
Selecione uma das seguintes opções:
Console
Verifique se você ativou a API Cloud Logging no projeto.
No console do Google Cloud , acesse a página Admin do Gemini.
Clique em Configurações no menu de navegação à esquerda.
(Opcional) Clique em Registro em log de metadados do Code Assist para registrar os metadados gerados pelos usuários do Gemini Code Assist Standard e Enterprise no projeto.
(Opcional) Clique em Registros de comandos e respostas do Code Assist para registrar os comandos e as respostas gerados pelos usuários do Gemini Code Assist Standard e Enterprise no projeto.
Clique em Salvar alterações.
API
Para ativar a geração de registros do Gemini Code Assist Standard e
Enterprise, use o recurso loggingSettings para definir as configurações de geração de registros
desejadas e o recurso loggingSettings.settingBindings para
vincular as configurações a um projeto:
Verifique se você ativou a API Cloud Logging no projeto.
Crie a configuração e um valor específico dela:
Receba o token:
TOKEN=$(gcloud auth print-access-token)
Ative os registros do Gemini Code Assist Standard e Enterprise. Os registros de usuários e de metadados são ativados com os campos
log_prompts_and_responseselog_metadata, respectivamente. Se você não quiser ativar um dos campos, exclua-o da solicitação.Execute o comando a seguir para criar a configuração:
curl -X POST \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{ "log_prompts_and_responses": true, "log_metadata": true, } ' \ "https://cloudaicompanion.googleapis.com/v1/projects/CONTAINER_PROJECT_NAME/locations/global/loggingSettings?logging_setting_id=LOGS_SETTING_ID"Substitua:
CONTAINER_PROJECT_NAME: insira o ID do projeto em que o recurso de vinculação está armazenado. Esse é o projeto principal da vinculação.LOGS_SETTING_ID: insira um nome exclusivo para a configuração, comogcalm.
Se o comando for bem-sucedido, ele vai retornar um corpo de resposta que mostra
log_prompts_and_responseselog_metadatadefinidos comotrue:{ "name": "projects/CONTAINER_PROJECT_NAME/locations/global/loggingSettings/LOGS_SETTING_ID", "createTime": "2025-01-23T15:22:49.717166932Z", "updateTime": "2025-01-23T15:22:49.717166932Z", "log_prompts_and_responses": true, "log_metadata": true }Execute o comando a seguir para criar a vinculação de configuração dos registros do Gemini Code Assist Standard e Enterprise:
curl -X POST \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{ "target": "projects/TARGET_PROJECT_NAME" }' \ "https://cloudaicompanion.googleapis.com/v1/projects/CONTAINER_PROJECT_NAME/locations/global/loggingSettings/LOGS_SETTING_ID/settingBindings?setting_binding_id=LOGS_BINDING_ID"
Substitua:
TARGET_PROJECT_NAME: insira o projeto de destino a que a vinculação deve ser associada. Geralmente, é o mesmo que o projeto do contêiner. No entanto, é possível vincular uma configuração a vários projetos para que o recurso de configuração não precise ser duplicado.LOGS_BINDING_ID: use o mesmo LOGS_SETTING_ID de quando você criou a configuração, mas adicioneb1. Por exemplo, usegcalmb1.
Se o comando for bem-sucedido, ele vai retornar os metadados da operação no seguinte formato:
{ "name": "projects/<var>CONTAINER_PROJECT_NAME</var>/locations/global/operations/operation-1737646069712-62c6140bb04bb-49261230-43701daf", "metadata": { "@type": "type.googleapis.com/google.cloud.cloudaicompanion.v1.OperationMetadata", "createTime": "2025-01-23T15:27:50.076075570Z", "target": "projects/<var>TARGET_PROJECT_NAME</var>/locations/global/loggingSettings/<var>LOGS_SETTING_ID</var>/settingBindings/<var>LOGS_BINDING_ID</var>", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Desativar a geração de registros do Gemini Code Assist em um projeto
Selecione uma das seguintes opções:
Console
No console do Google Cloud , acesse a página Admin do Gemini.
Clique em Configurações no menu de navegação à esquerda.
Clique em Registros de metadados do Code Assist para desativar a gravação dos metadados do uso do Gemini Code Assist Standard e Enterprise no projeto.
Clique em Salvar alterações.
API
Para desativar a geração de registros do Gemini Code Assist Standard e
Enterprise, use o método loggingSetting.
Crie a configuração e um valor específico dela:
Receba o token:
TOKEN=$(gcloud auth print-access-token)
Execute o comando a seguir para desativar as configurações de registros do Gemini Code Assist Standard e Enterprise:
curl -X POST \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{ "log_prompts_and_responses": false, "log_metadata": false, } ' \ "https://cloudaicompanion.googleapis.com/v1/projects/CONTAINER_PROJECT_NAME/locations/global/loggingSettings?logging_metadata_id=LOGS_SETTING_ID"Substitua:
CONTAINER_PROJECT_NAME: insira o ID do projeto principal.LOGS_SETTING_ID: insira o nome da configuração atual, comogcalm.Se o comando for bem-sucedido, ele vai retornar um corpo de resposta que mostra
log_prompts_and_responseselog_metadatadefinidos comofalse:{ "name": "projects/CONTAINER_PROJECT_NAME/locations/global/loggingSettings/LOGS_SETTING_ID", "createTime": "2025-01-23T15:22:49.717166932Z", "updateTime": "2025-01-23T15:22:49.717166932Z", "log_prompts_and_responses": false, "log_metadata": false }
Configurar a geração de registros de vários projetos
É possível usar os registros do Gemini Code Assist para criar métricas e painéis para monitorar o uso por projeto. Se a organização tiver vários projetos, será possível configurar um projeto de geração de registros centralizada para coletar registros de vários projetos e gerar painéis neles.
Criar um projeto de geração de registros centralizada
Esse projeto vai servir como um hub para registros dos seus outros projetos.
No console do Google Cloud , acesse a página Criação de projetos.
Na janela Novo projeto, insira valores nos seguintes campos:
- Nome do projeto: um nome para o projeto de geração de registros centralizada.
- Conta de faturamento: selecione uma conta de faturamento.
- Organização: selecione a sua. Um projeto centralizado só pode coletar registros de projetos na mesma organização.
- Local: selecione um local.
Clique em Criar.
Configurar coletores de registros
Para direcionar os registros ao projeto centralizado, configure coletores de registros em cada um dos projetos individuais de onde você quer coletar registros.
Para configurar coletores de registros para cada projeto, faça o seguinte:
- No console do Google Cloud , mude para um projeto do qual você quer coletar registros.
Acesse a página Roteador de registros:
Clique em Criar coletor.
Em Detalhes do coletor, insira um nome e uma descrição para o coletor e clique em Avançar.
Em Destino do coletor, faça o seguinte:
- No menu Selecionar serviço do coletor, escolha Bucket do Logging.
- No menu Bucket de registros, selecione Usar bucket de registros em outro projeto.
No campo Destino do coletor, insira o seguinte:
logging.googleapis.com/projects/CENTRALIZED_PROJECT_ID/locations/global/buckets/_DefaultSubstitua
CENTRALIZED_PROJECT_IDpelo ID do projeto de geração de registros centralizada que você criou.Clique em Próxima.
Em Escolher registros para incluir no coletor, crie um filtro de inclusão inserindo o seguinte no campo Filtro de inclusão:
resource.type="cloudaicompanion.googleapis.com/Instance"Clique em Próxima.
Em Escolher registros para filtrar fora do coletor, deixe o filtro de exclusão em branco e clique em Criar coletor.
Depois que o coletor for criado, na página Roteador de registros, encontre o coletor que você criou.
Na coluna Identidade do gravador, copie o endereço de e-mail completo da conta de serviço.
Configurar acesso
Para conceder acesso ao coletor para gravar registros no projeto centralizado, faça o seguinte:
- No console do Google Cloud , mude para o projeto centralizado que você criou.
Acesse a página do IAM:
Clique em Conceder acesso.
No campo Novos principais, cole o endereço de e-mail da conta de serviço que você copiou na seção anterior.
Clique em Adicionar outro papel.
Pesquise e selecione o papel Gravador do bucket de registros (
roles/logging.bucketWriter).Clique em Salvar.
Criar um painel no projeto centralizado
Depois de configurar o projeto centralizado para receber registros, crie um painel para visualizar métricas de vários projetos:
No console do Google Cloud , acesse Monitoring > Painéis:
Clique em Criar painel.
Na barra de ferramentas, clique em Configurações e selecione JSON > Editor JSON.
No editor JSON, cole o seguinte código:
{ "displayName": "Multi-Project Gemini Code Assist Overview from Metadata Logs", "dashboardFilters": [], "labels": {}, "mosaicLayout": { "columns": 48, "tiles": [ { "height": 16, "width": 24, "widget": { "title": "Active Users by Day", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [ { "column": "event_date", "columnType": "DATE", "maxBinCount": 0, "sortColumn": "event_date", "sortOrder": "SORT_ORDER_ASCENDING", "timeBinSize": "0s", "xMax": 0, "xMin": 0 } ], "legendTemplate": "", "measures": [ { "aggregationFunction": { "parameters": [], "type": "average" }, "column": "DAU" } ], "plotType": "LINE", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": { "useReservedSlots": false }, "queryHandle": "", "savedQueryId": "", "sql": "SELECT\n COUNT (DISTINCT JSON_VALUE(labels, '$.user_id')) as DAU, CAST(timestamp AS DATE) AS event_date\nFROM\n `CENTRALIZED_PROJECT_ID.global._Default._Default`\nWHERE\n JSON_VALUE(labels, '$.user_id') is not NULL\n AND (\n JSON_VALUE(json_payload, '$.chatExposure.originalRequestId') is not NULL\n OR JSON_VALUE(json_payload, '$.codeAcceptance.originalRequestId') is not NULL\n OR JSON_VALUE(json_payload, '$.codeExposure.originalRequestId') is not NULL\n )\n AND resource.type = \"cloudaicompanion.googleapis.com/Instance\"\n AND (JSON_VALUE(resource.labels, '$.resource_container') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2') or JSON_VALUE(resource.labels, '$.project_id') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2'))\nGROUP BY\nevent_date\nORDER BY\nevent_date\n" }, "outputFullDuration": false, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } }, { "xPos": 24, "height": 16, "width": 24, "widget": { "title": "Acceptance Rate by Day", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [ { "column": "exposures_date", "columnType": "DATE", "maxBinCount": 0, "sortColumn": "exposures_date", "sortOrder": "SORT_ORDER_ASCENDING", "timeBinSize": "0s", "xMax": 0, "xMin": 0 } ], "legendTemplate": "", "measures": [ { "aggregationFunction": { "parameters": [], "type": "average" }, "column": "acceptance_rate" } ], "plotType": "LINE", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": { "useReservedSlots": false }, "queryHandle": "", "savedQueryId": "", "sql": "SELECT\nexposures_date,\nacceptances_count / exposures_count as acceptance_rate\nFROM\n(\nSELECT\nCOUNT (DISTINCT JSON_VALUE(json_payload, '$.codeAcceptance.originalRequestId')) as acceptances_count, CAST(timestamp AS DATE) AS acceptances_date\nFROM\n`CENTRALIZED_PROJECT_ID.global._Default._Default`\nWHERE\nJSON_VALUE(json_payload, '$.codeAcceptance.originalRequestId') is not NULL\nAND resource.type = \"cloudaicompanion.googleapis.com/Instance\"\nAND (JSON_VALUE(resource.labels, '$.resource_container') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2') or JSON_VALUE(resource.labels, '$.project_id') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2'))\nGROUP BY\nacceptances_date\n) as acceptances\nJOIN\n(\nSELECT\nCOUNT (DISTINCT JSON_VALUE(json_payload, '$.codeExposure.originalRequestId')) as exposures_count, CAST(timestamp AS DATE) AS exposures_date\nFROM\n`CENTRALIZED_PROJECT_ID.global._Default._Default`\nWHERE\nJSON_VALUE(json_payload, '$.codeExposure.originalRequestId') is not NULL\nAND resource.type = \"cloudaicompanion.googleapis.com/Instance\"\nAND (JSON_VALUE(resource.labels, '$.resource_container') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2') or JSON_VALUE(resource.labels, '$.project_id') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2'))\nGROUP BY\nexposures_date\n) as exposures\nON\nexposures.exposures_date = acceptances.acceptances_date\nORDER BY\nexposures_date ASC" }, "outputFullDuration": false, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } }, { "yPos": 16, "height": 16, "width": 24, "widget": { "title": "Code Suggestions by Day", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [ { "column": "exposures_date", "columnType": "DATE", "maxBinCount": 0, "sortColumn": "exposures_date", "sortOrder": "SORT_ORDER_ASCENDING", "timeBinSize": "0s", "xMax": 0, "xMin": 0 } ], "legendTemplate": "", "measures": [ { "aggregationFunction": { "parameters": [], "type": "average" }, "column": "exposures_count" } ], "plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": { "useReservedSlots": false }, "queryHandle": "", "savedQueryId": "", "sql": "SELECT\n COUNT (DISTINCT JSON_VALUE(json_payload, '$.codeExposure.originalRequestId')) as exposures_count, CAST(timestamp AS DATE) AS exposures_date\nFROM\n `CENTRALIZED_PROJECT_ID.global._Default._Default`\nWHERE\n JSON_VALUE(json_payload, '$.codeExposure.originalRequestId') is not NULL\n AND resource.type = \"cloudaicompanion.googleapis.com/Instance\"\n AND (JSON_VALUE(resource.labels, '$.resource_container') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2') or JSON_VALUE(resource.labels, '$.project_id') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2'))\nGROUP BY\n exposures_date\nORDER BY\n exposures_date" }, "outputFullDuration": false, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } }, { "yPos": 16, "xPos": 24, "height": 16, "width": 24, "widget": { "title": "Code Acceptances by Day", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [ { "column": "acceptances_date", "columnType": "DATE", "maxBinCount": 0, "sortColumn": "acceptances_date", "sortOrder": "SORT_ORDER_ASCENDING", "timeBinSize": "0s", "xMax": 0, "xMin": 0 } ], "legendTemplate": "", "measures": [ { "aggregationFunction": { "parameters": [], "type": "average" }, "column": "acceptances_count" } ], "plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": { "useReservedSlots": false }, "queryHandle": "", "savedQueryId": "", "sql": "SELECT\n COUNT (DISTINCT JSON_VALUE(json_payload, '$.codeAcceptance.originalRequestId')) as acceptances_count, CAST(timestamp AS DATE) AS acceptances_date\nFROM\n `CENTRALIZED_PROJECT_ID.global._Default._Default`\nWHERE\n JSON_VALUE(json_payload, '$.codeAcceptance.originalRequestId') is not NULL\n AND resource.type = \"cloudaicompanion.googleapis.com/Instance\"\n AND (JSON_VALUE(resource.labels, '$.resource_container') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2') or JSON_VALUE(resource.labels, '$.project_id') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2'))\nGROUP BY\n acceptances_date\nORDER BY\n acceptances_date\n" }, "outputFullDuration": false, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } }, { "yPos": 32, "height": 16, "width": 24, "widget": { "title": "Lines of Code Accepted by Day", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [ { "column": "line_count_day", "columnType": "DATE", "maxBinCount": 0, "sortColumn": "line_count_day", "sortOrder": "SORT_ORDER_ASCENDING", "timeBinSize": "0s", "xMax": 0, "xMin": 0 } ], "legendTemplate": "", "measures": [ { "aggregationFunction": { "parameters": [], "type": "average" }, "column": "lines_count" } ], "plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": { "useReservedSlots": false }, "queryHandle": "", "savedQueryId": "", "sql": "SELECT\n SUM(lines) as lines_count,\n CAST(max_timestamp AS DATE) AS line_count_day\nFROM\n(\n SELECT\n JSON_VALUE(json_payload, '$.codeAcceptance.originalRequestId') as request_id,\n MAX(CAST(JSON_VALUE(json_payload, '$.codeAcceptance.linesCount') AS INT)) as lines,\n MAX(timestamp) as max_timestamp\n FROM\n `CENTRALIZED_PROJECT_ID.global._Default._Default`\n WHERE\n JSON_VALUE(json_payload, '$.codeAcceptance.originalRequestId') is not NULL\n AND resource.type = \"cloudaicompanion.googleapis.com/Instance\"\n AND (JSON_VALUE(resource.labels, '$.resource_container') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2') or JSON_VALUE(resource.labels, '$.project_id') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2'))\n GROUP BY\n request_id\n )\nGROUP BY\n line_count_day\nORDER BY\n line_count_day" }, "outputFullDuration": false, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } }, { "yPos": 32, "xPos": 24, "height": 16, "width": 24, "widget": { "title": "Chat Exposures by Day", "id": "", "xyChart": { "chartOptions": { "displayHorizontal": false, "mode": "COLOR", "showLegend": false }, "dataSets": [ { "breakdowns": [], "dimensions": [ { "column": "chat_exposures_date", "columnType": "DATE", "maxBinCount": 0, "sortColumn": "chat_exposures_date", "sortOrder": "SORT_ORDER_ASCENDING", "timeBinSize": "0s", "xMax": 0, "xMin": 0 } ], "legendTemplate": "", "measures": [ { "aggregationFunction": { "parameters": [], "type": "average" }, "column": "chat_exposures_count" } ], "plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": { "useReservedSlots": false }, "queryHandle": "", "savedQueryId": "", "sql": "SELECT\n COUNT (DISTINCT JSON_VALUE(json_payload, '$.chatExposure.originalRequestId')) as chat_exposures_count, CAST(timestamp AS DATE) AS chat_exposures_date\nFROM\n `CENTRALIZED_PROJECT_ID.global._Default._Default`\nWHERE\n JSON_VALUE(json_payload, '$.chatExposure.originalRequestId') is not NULL\n AND resource.type = \"cloudaicompanion.googleapis.com/Instance\"\n AND (JSON_VALUE(resource.labels, '$.resource_container') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2') or JSON_VALUE(resource.labels, '$.project_id') in ('SOURCE_PROJECT_ID_1', 'SOURCE_PROJECT_ID_2'))\nGROUP BY\n chat_exposures_date\nORDER BY\n chat_exposures_date" }, "outputFullDuration": false, "unitOverride": "" } } ], "thresholds": [], "yAxis": { "label": "", "scale": "LINEAR" } } } } ] } }Substitua:
CENTRALIZED_PROJECT_ID: o ID do projeto de geração de registros centralizada que você criou.SOURCE_PROJECT_ID_1eSOURCE_PROJECT_ID_2: os IDs dos projetos de que você quer coletar registros. Se você quiser coletar registros de mais de dois projetos, adicione mais IDs de projeto às cláusulasinda consulta.
Desativar a geração de registros de vários projetos
Se você configurou a geração de registros do Gemini Code Assist para vários projetos, é possível desativá-la excluindo os coletores de registros que encaminham registros para o projeto centralizado. Para interromper o envio de registros de um projeto individual para o projeto centralizado, exclua o coletor de registros que você criou nesse projeto:
- No console do Google Cloud , mude para um projeto em que você quer interromper a coleta de registros.
Acesse a página Roteador de registros:
Identifique o coletor que encaminha os registros para o projeto centralizado.
Na linha desse coletor, clique em Mais ações e selecione Excluir coletor.
Na caixa de diálogo exibida, clique em Excluir.
Repita essas etapas para cada projeto que você quer que pare de enviar registros para o projeto centralizado.
A seguir
- Acesse os registros do Gemini Code Assist.
- Ver outras configurações de administrador do Gemini Code Assist.