Este documento descreve como configurar o registro em log do Gemini Code Assist Standard e Enterprise para um projeto usando o console do Google Cloud ou uma API.
Limitações
O Gemini Standard e o Enterprise no Google Cloud registram dados de registro limitados às interações do usuário com o Gemini Code Assist em um ambiente de desenvolvimento integrado.
Por padrão, os registros do Gemini para Google Cloud são coletados por projeto. Para instruções sobre como configurar um projeto centralizado para coletar registros de vários projetos, consulte Configurar geração de registros em vários projetos.
O Gemini Code Assist no GitHub não oferece suporte ao registro em log com o Cloud Logging.
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 uma função personalizada que contenha apenas as permissões necessárias.
Peça ao administrador para criar uma função personalizada que inclua as seguintes permissões:
serviceusage.services.enablepara ativar as APIs do projeto.cloudaicompanion.loggingSettings.createpara criar configurações de geração de registros.cloudaicompanion.loggingSettings.getpara conferir as configurações de registro.cloudaicompanion.loggingSettings.list—para listar as configurações de registro.cloudaicompanion.loggingSettings.updatepara atualizar as configurações de geração de registros.cloudaicompanion.loggingSettingBindings.create—para vincular configurações de registro a um projeto.cloudaicompanion.loggingSettingBindings.getpara conferir as vinculações de configurações de geração de registros.cloudaicompanion.loggingSettingBindings.list—para listar vinculações de configurações de registro.
Como alternativa, é possível conceder os papéis predefinidos
Administrador das configurações do Gemini para Google Cloud (roles/cloudaicompanion.settingsAdmin) e
Administrador do uso do serviço (roles/serviceusage.serviceUsageAdmin).
No entanto, esses papéis incluem permissões para configurar todas as configurações de administrador do Gemini para Google Cloud
e gerenciar o uso do serviço, o que pode ser mais do que o necessário
para configurar as opçõ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.
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.
Acessar o Gemini para Google Cloud
A página Gemini para Google Cloud é carregada.
Clique em Configurações no menu de navegação à esquerda.
A página Configurações é carregada.
(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.
Acessar o Gemini para Google Cloud
A página Gemini para Google Cloud é carregada.
Clique em Configurações no menu de navegação à esquerda.
A página Configurações é carregada.
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 em vários projetos
É possível usar os registros do Gemini Code Assist para criar métricas e painéis de monitoramento do uso por projeto. Se a organização tiver vários projetos, configure um projeto de geração de registros centralizado para coletar registros de vários projetos e gerar painéis neles.
Criar um projeto de geração de registros centralizado
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 projeto.
Na janela Novo projeto, insira valores para os seguintes campos:
- Nome do projeto: um nome para seu projeto de geração de registros centralizada.
- Conta de faturamento: selecione uma conta de faturamento.
- Organização: selecione sua organização. 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 que você quer coletar registros.
Para configurar coletores de registros em cada projeto, faça o seguinte:
- No console do Google Cloud, mude para um projeto de que 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, selecione 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 registro centralizado 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 seu 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 de bucket de registros (
roles/logging.bucketWriter).Clique em Salvar.
Criar um painel em um projeto centralizado
Depois de configurar o projeto centralizado para receber registros, crie um painel para ver 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 em vários projetos
Se você configurou a geração de registros do Gemini Code Assist para vários projetos, desative-a excluindo os coletores de registros que roteiam os registros para o projeto centralizado. Para interromper o envio de registros de um projeto individual para o projeto centralizado, exclua o coletor de registros criado 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 registros para seu projeto centralizado.
Na linha do 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 parar de enviar registros para o projeto centralizado.