本文說明如何使用 Google Cloud 控制台或 API,為專案設定 Gemini Code Assist Standard 和 Enterprise 記錄。
限制
Gemini Standard 和 Enterprise 版 Google Cloud 記錄的記錄資料 僅限於使用者在 IDE 中與 Gemini Code Assist 的互動。
根據預設,系統會依專案收集 Gemini for Google Cloud 記錄。如要瞭解如何設定集中式專案,從多個專案收集記錄,請參閱「設定多專案記錄」。
GitHub 上的 Gemini Code Assist 不支援使用 Cloud Logging 記錄。
事前準備
確認 Google Cloud 專案已連結至帳單帳戶。
驗證 IAM 權限
如要設定 Gemini Code Assist 標準版和企業版記錄功能,您可以授予「Gemini for Google Cloud 設定管理員」(roles/cloudaicompanion.settingsAdmin) Identity and Access Management (IAM) 預先定義的角色,其中包含使用所有 Gemini for Google Cloud
管理員設定所需的所有權限。
或者,您也可以更新任何自訂 IAM 角色。您必須具備特定的 IAM 權限,詳情請參閱以下章節。
設定 Gemini Code Assist 記錄功能
以下各節將說明如何啟用 Gemini Code Assist 標準版和企業版活動的收集和儲存功能,包括:
Gemini Code Assist Standard 版和 Enterprise 版的提示詞和回覆記錄,例如使用者輸入內容、背景資訊和回覆。
Gemini Code Assist Standard 版和 Enterprise 版的中繼資料記錄,例如遙測中繼資料和使用者接受的程式碼行數。
如要進一步瞭解這兩種記錄,請參閱「查看 Gemini 記錄」。
在專案中啟用 Gemini Code Assist 的記錄功能
選取下列選項之一:
控制台
確認您已在專案中啟用 Cloud Logging API。
確認您在擁有訂閱項目的專案中,具備下列 IAM 權限:
instance.queryEffectiveSettinginstance.queryEffectiveSettingBindingsloggingSettings.createloggingSettings.listloggingSettings.updateloggingSettings.getcloudaicompanion.instances.loggingSettings.usecloudaicompanion.instances.queryEffectiveSettingsettingBindings.loggingSettingsListsettingBindings.loggingSettingsGetsettingBindings.loggingSettingsUpdatesettingBindings.loggingSettingsCreatecloudaicompanion.settingBindings.loggingSettingsUsecloudaicompanion.instances.queryEffectiveSettingBindings
前往 Google Cloud 控制台的「Gemini 管理員」頁面。
系統會載入「Gemini for Google Cloud」頁面。
按一下左側導覽選單中的「設定」。
載入「設定」頁面。
(選用) 按一下「記錄 Code Assist 中繼資料」,記錄專案中 Gemini Code Assist 標準版和企業版使用者產生的中繼資料。
(選用) 按一下「記錄 Code Assist 提示詞和回覆」,記錄專案中 Gemini Code Assist 標準版和企業版使用者產生的提示詞和回覆。
按一下 [儲存變更]。
API
如要為 Gemini Code Assist 標準版和企業版啟用記錄功能,請使用 loggingSettings 資源定義所需的記錄設定,並使用 loggingSettings.settingBindings 資源將設定繫結至專案:
確認您已在專案中啟用 Cloud Logging API。
確認您在擁有訂閱項目的專案中,具備下列 IAM 權限:
instance.queryEffectiveSettinginstance.queryEffectiveSettingBindingsloggingSettings.createloggingSettings.listloggingSettings.updateloggingSettings.getcloudaicompanion.instances.loggingSettings.usecloudaicompanion.instances.queryEffectiveSettingsettingBindings.loggingSettingsListsettingBindings.loggingSettingsGetsettingBindings.loggingSettingsUpdatesettingBindings.loggingSettingsCreatecloudaicompanion.settingBindings.loggingSettingsUsecloudaicompanion.instances.queryEffectiveSettingBindings
建立設定和設定專屬值:
取得權杖:
TOKEN=$(gcloud auth print-access-token)
啟用 Gemini Code Assist Standard 和 Enterprise 記錄。 使用者記錄和中繼資料記錄分別透過
log_prompts_and_responses和log_metadata欄位啟用。如不想啟用其中一個欄位,請將該欄位從要求中排除。執行下列指令來建立設定:
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"更改下列內容:
CONTAINER_PROJECT_NAME:輸入繫結資源所屬專案的專案 ID。這是繫結的父項專案。LOGS_SETTING_ID:輸入專屬設定名稱,例如gcalm。
如果指令成功執行,則會傳回回應主體,顯示
log_prompts_and_responses和log_metadata設為true:{ "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 }執行下列指令,建立 Gemini Code Assist 標準版和企業版記錄設定繫結:
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"
更改下列內容:
TARGET_PROJECT_NAME:輸入要繫結繫結的目標專案。這通常與容器專案相同。不過,您可以將設定繫結至多個專案,這樣就不必重複設定資源。LOGS_BINDING_ID:使用您建立設定時的相同 LOGS_SETTING_ID,但附加b1。例如,使用gcalmb1。
如果指令成功執行,則會傳回下列格式的作業中繼資料:
{ "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 }
在專案中停用 Gemini Code Assist 的記錄功能
選取下列選項之一:
控制台
確認您在擁有訂閱項目的專案中,具備下列 IAM 權限:
instance.queryEffectiveSettinginstance.queryEffectiveSettingBindingsloggingSettings.deleteloggingSettings.listloggingSettings.updateloggingSettings.getcloudaicompanion.instances.loggingSettings.usecloudaicompanion.instances.queryEffectiveSettingsettingBindings.loggingSettingsListsettingBindings.loggingSettingsGetsettingBindings.loggingSettingsUpdatesettingBindings.loggingSettingsDeletecloudaicompanion.settingBindings.loggingSettingsUsecloudaicompanion.instances.queryEffectiveSettingBindings
前往 Google Cloud 控制台的「Gemini 管理員」頁面。
系統會載入「Gemini for Google Cloud」頁面。
按一下左側導覽選單中的「設定」。
載入「設定」頁面。
按一下「記錄 Code Assist 中繼資料」,即可關閉記錄專案中 Gemini Code Assist Standard 版和 Enterprise 版的使用情形中繼資料。
按一下 [儲存變更]。
API
如要停用 Gemini Code Assist Standard 和 Enterprise 的記錄功能,請使用 loggingSetting 方法。
確認您在擁有訂閱項目的專案中,具備下列 IAM 權限:
instance.queryEffectiveSettinginstance.queryEffectiveSettingBindingsloggingSettings.createloggingSettings.listloggingSettings.updateloggingSettings.getcloudaicompanion.instances.loggingSettings.usecloudaicompanion.instances.queryEffectiveSettingsettingBindings.loggingSettingsListsettingBindings.loggingSettingsGetsettingBindings.loggingSettingsUpdatesettingBindings.loggingSettingsCreateserviceusage.services.enable
建立設定和設定專屬值:
取得權杖:
TOKEN=$(gcloud auth print-access-token)
執行下列指令,停用 Gemini Code Assist Standard 版和 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"更改下列內容:
CONTAINER_PROJECT_NAME:輸入父項專案 ID。LOGS_SETTING_ID:輸入現有設定名稱,例如gcalm。如果指令成功執行,則會傳回回應主體,顯示
log_prompts_and_responses和log_metadata設為false:{ "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 }
設定多專案記錄功能
您可以使用 Gemini Code Assist 的記錄建立指標和資訊主頁,監控每個專案的使用情況。如果貴機構有多個專案,您可以設定集中式記錄專案,從多個專案收集記錄,並在這些專案中產生資訊主頁。
建立集中式記錄專案
這個專案將做為其他專案記錄的中心。
在 Google Cloud 控制台中,前往「Project creation」(建立專案) 頁面。
在「New Project」(新增專案) 視窗中,輸入下列欄位的值:
- 專案名稱:集中式記錄專案的名稱。
- 帳單帳戶:選取帳單帳戶。
- 機構:選取您的機構。集中式專案只能收集同一個機構中專案的記錄。
- 位置:選取位置。
點選「建立」。
設定記錄接收器
如要將記錄檔導向集中式專案,請在要收集記錄檔的每個個別專案中設定記錄檔接收器。
如要為每個專案設定記錄檔接收器,請按照下列步驟操作:
- 在 Google Cloud 控制台中,切換至要收集記錄的專案。
前往「記錄檔路由器」頁面:
按一下「Create Sink」(建立接收器)。
在「接收器詳細資料」中,輸入接收器的名稱和說明,然後按一下「下一步」。
在「接收器目的地」部分執行下列步驟:
- 在「選取接收器服務」選單中,選取「記錄檔值區」。
- 在「記錄檔 bucket」選單中,選取「使用其他專案中的記錄檔 bucket」。
在「Sink destination」(接收器目的地) 欄位中輸入下列內容:
logging.googleapis.com/projects/CENTRALIZED_PROJECT_ID/locations/global/buckets/_Default將
CENTRALIZED_PROJECT_ID替換為您建立的集中式記錄專案 ID。點選「下一步」。
在「選擇要納入接收器的記錄檔」中,於「納入篩選器」欄位輸入下列內容,建立納入篩選器:
resource.type="cloudaicompanion.googleapis.com/Instance"點選「下一步」。
在「選擇要從接收器排除的記錄檔」部分,將排除篩選器留空,然後按一下「建立接收器」。
建立接收器後,請在「記錄檔路由器」頁面中找出您建立的接收器。
在「寫入者身分」欄中,複製完整的服務帳戶電子郵件地址。
設定存取權
如要授予接收器權限,將記錄檔寫入集中式專案,請執行下列操作:
- 在 Google Cloud 控制台中,切換至您建立的集中式專案。
前往「IAM」(身分與存取權管理) 頁面:
按一下「授予存取權」。
在「新增主體」欄位,貼上您在上一個部分複製的服務帳戶電子郵件地址。
按一下 [Add another role] (新增其他角色)。
搜尋並選取「記錄檔值區寫入者」角色 (
roles/logging.bucketWriter)。按一下 [儲存]。
在集中式專案中建立資訊主頁
將集中式專案設為接收記錄後,即可建立資訊主頁,查看多項專案的指標:
在 Google Cloud 控制台中,依序前往「Monitoring」(監控) >「Dashboards」(資訊主頁):
按一下「Create dashboard」(建立資訊主頁)。
在工具列中,依序點選「設定」>「JSON」>「JSON 編輯器」。
在 JSON 編輯器中貼上下列程式碼:
{ "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" } } } } ] } }更改下列內容:
CENTRALIZED_PROJECT_ID:您建立的集中式記錄專案 ID。SOURCE_PROJECT_ID_1和SOURCE_PROJECT_ID_2:您要收集記錄的專案 ID。如要從兩個以上的專案收集記錄,可以在查詢的in子句中新增更多專案 ID。
停用多專案記錄
如果您為多個專案設定 Gemini Code Assist 記錄功能,可以刪除將記錄檔轉送至集中式專案的記錄接收器,藉此停用這項功能。如要停止將個別專案的記錄檔傳送至集中式專案,請刪除您在該專案中建立的記錄檔接收器:
- 在 Google Cloud 控制台中,切換至要停止收集記錄的專案。
前往「記錄檔路由器」頁面:
找出將記錄檔轉送至集中式專案的接收器。
在該接收器的資料列中,按一下「More actions」(更多動作),然後選取「Delete sink」(刪除接收器)。
在隨即顯示的對話方塊中,按一下「刪除」。
針對要停止將記錄傳送至集中式專案的每個專案,重複執行這些步驟。