In diesem Dokument wird erläutert, wie Sie die Tokennutzung für Dateneinblicke-Scans in Knowledge Catalog (ehemals Dataplex Universal Catalog) mit Cloud Logging und Cloud Monitoring überwachen. Wenn Sie die Tokennutzung pro Scan und pro Job verfolgen, können Sie Trends bei der Modellnutzung erkennen und die in Rechnung gestellten Kosten für Ihr Projekt schätzen.
Funktionsweise des Loggings der Tokennutzung
Wenn ein Dateneinblicke-Scanjob (jsonPayload.type="DATA_DOCUMENTATION") mit dem Status SUCCEEDED abgeschlossen wird, schreibt Knowledge Catalog einen Logeintrag in das dataplex.googleapis.com/data_scan Log. Dieser Logeintrag enthält unter jsonPayload.dataDocumentation einen Block billableTokenUsage, in dem die Tokenaufschlüsselung für den Job erfasst wird. Andere Logeinträge für den Job (z. B. Ereignisse vom Typ CREATED, STARTED, FAILED oder CANCELLED) enthalten keinen Block billableTokenUsage.
Im Block billableTokenUsage können Sie drei primäre Tokenkategorien verfolgen, um die Abrechnung zu schätzen:
| Messwert | Beschreibung | Formel (mit billableTokenUsage-Feldern) |
|---|---|---|
| Nicht im Cache gespeicherte Eingabetokens | Eingabetokens, die nicht aus dem Kontext-Cache bereitgestellt wurden, einschließlich Prompt-Tokens für die Toolnutzung. | max(promptTokenCount - cachedContentTokenCount, 0) + toolUsePromptTokenCount |
| Im Cache gespeicherte Eingabetokens | Eingabetokens, die aus dem Kontext-Cache bereitgestellt wurden. Im Cache gespeicherte Tokens werden separat erfasst, da sie nicht zum Standardpreis für nicht im Cache gespeicherte Eingabetokens abgerechnet werden. | cachedContentTokenCount |
| Ausgabetokens | Generierte Antworttokens plus Tokens für die Begründung (Thinking). Thinking-Tokens werden als Ausgabetokens abgerechnet. | candidatesTokenCount + thoughtsTokenCount |
Details zur Tokenabrechnung finden Sie unter Preise für Data Cloud Agent.
Tokenfelder im Logeintrag
Jeder dataplex.googleapis.com/data_scan-Logeintrag enthält Standardressourcen- und Job-IDs wie resource.labels.datascan_id, resource.labels.location, jsonPayload.jobId und jsonPayload.state. Für erfolgreiche Dateneinblicke-Scans enthält das Objekt jsonPayload.dataDocumentation.billableTokenUsage die folgenden Felder:
| Feld | Beschreibung |
|---|---|
promptTokenCount |
Gesamtzahl der an das Modell gesendeten Prompt-Tokens, einschließlich im Cache gespeicherter Tokens. |
cachedContentTokenCount |
Anteil der Prompt-Tokens, die aus dem Kontext-Cache bereitgestellt wurden. |
toolUsePromptTokenCount |
Prompt-Tokens, die durch Toolaufrufe hinzugefügt wurden (z. B. Kontext für Schema, Profil oder Abfrageverlauf). |
candidatesTokenCount |
Generierte Antworttokens, ohne Thinking-Tokens. |
thoughtsTokenCount |
Vom Modell generierte Tokens für die Begründung (Thinking). |
Das folgende Beispiel zeigt einen dataplex.googleapis.com/data_scan-Logeintrag für einen erfolgreichen Dateneinblicke-Scanjob:
{
"resource": {
"type": "dataplex.googleapis.com/DataScan",
"labels": {
"datascan_id": "my-insights-scan",
"location": "us-central1",
"resource_container": "projects/1234567890"
}
},
"jsonPayload": {
"type": "DATA_DOCUMENTATION",
"jobId": "8f2b3c4d-1234-5678-9abc-def012345678",
"state": "SUCCEEDED",
"dataDocumentation": {
"billableTokenUsage": {
"promptTokenCount": "20412",
"candidatesTokenCount": "7053"
}
}
}
}
In diesem Beispiel wurden für den Job keine Kontextcaches, Thinking-Tokens oder Toolaufrufe verwendet. Daher sind die nicht im Cache gespeicherten Eingabetokens gleich 20,412, die im Cache gespeicherten Eingabetokens
gleich 0 und die Ausgabetokens gleich 7,053.
Hinweis
Bevor Sie Dateneinblicke-Tokenlogs abfragen oder ein Monitoring-Dashboard erstellen, müssen Sie die folgenden Voraussetzungen erfüllen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Überwachen der Tokennutzung für Dateneinblicke benötigen:
-
Logs von Datenstatistiken-Scans ansehen und Observability Analytics-Abfragen ausführen:
Loganzeige (
roles/logging.viewer) -
Benutzerdefinierte Dashboards in Monitoring erstellen:
Monitoring-Bearbeiter (
roles/monitoring.editor) -
Benutzerdefinierte Dashboards in Monitoring ansehen:
Monitoring-Betrachter (
roles/monitoring.viewer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
APIs aktivieren
Aktivieren Sie die Dataplex API, die Logging API und die Monitoring API, falls sie noch nicht aktiviert sind.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen.
Konfiguration des Logroutings prüfen
Bei Dateneinblicke-Scans werden Logs unter dem Lognamen dataplex.googleapis.com/data_scan geschrieben. Die Dashboard-Konfigurationen in diesem Dokument lesen diese Logs aus dem _Default-Log-Bucket Ihres Projekts. Prüfen Sie, ob das Logrouting Ihres Projekts die folgenden Bedingungen erfüllt:
- Die Senke
_Defaultist aktiviert und leitet Logs an den_Default-Log-Bucket weiter. Die Senke
_Defaulthat keinen „Ausschließen“-Filter, derdataplex.googleapis.com/data_scan- oderDATA_DOCUMENTATION-Logs verwirft.
Console
Rufen Sie in der Google Cloud Console die Seite Logging > Log-Router auf.
Suchen Sie die Senke
_Defaultund prüfen Sie, ob ihr Status Aktiviert ist und ihr Ziel der Bucket_Defaultist.Klicken Sie auf das Menü () der Senke und wählen Sie Senkendetails ansehen aus. Prüfen Sie, ob kein „Ausschließen“-Filter mit
dataplex.googleapis.com/data_scanoderDATA_DOCUMENTATIONübereinstimmt.
gcloud
Beschreiben Sie die Senke _Default, um ihren Status, ihr Ziel und ihre Ausschlussfilter zu prüfen:
gcloud logging sinks describe _Default --project=PROJECT_ID
Ersetzen Sie PROJECT_ID durch Ihre Google Cloud Projekt-ID.
Prüfen Sie, ob disabled nicht auf true gesetzt ist, destination mit /buckets/_Default endet und kein Eintrag unter exclusions mit data_scan übereinstimmt.
Observability Analytics für den Bucket _Default aktivieren
Wenn Sie SQL-Abfragen für Ihre Dateneinblicke-Scanlogs ausführen und das benutzerdefinierte Observability Analytics-Dashboard verwenden möchten, führen Sie ein Upgrade des _Default-Log-Buckets Ihres Projekts durch, um Observability Analytics zu verwenden.
Bevor Sie Observability Analytics für den _Default-Log-Bucket aktivieren, sollten Sie Folgendes beachten:
- Das Upgrade eines Buckets auf Observability Analytics kann nicht rückgängig gemacht werden und verursacht keine zusätzlichen Kosten.
- Sie müssen kein verknüpftes BigQuery-Dataset erstellen.
Observability Analytics-SQL-Abfragen geben nur Logs zurück, die nach Abschluss des Upgrades eingehen. Ältere Logs sind weiterhin im Log-Explorer verfügbar, werden aber nicht in den Ergebnissen von SQL-Abfrage angezeigt. Nachdem Sie den Bucket aktualisiert haben, führen Sie mindestens einen Dateneinblicke-Scan aus, damit in Ihrem Dashboard Daten angezeigt werden.
Console
Rufen Sie in der Google Cloud Console die Seite Logging > Logspeicher auf.
Suchen Sie die Zeile des Buckets
_Defaultund prüfen Sie die Spalte Observability Analytics verfügbar:- Wenn in der Spalte Öffnen angezeigt wird, ist Observability Analytics bereits aktiviert.
- Wenn in der Spalte Upgrade angezeigt wird, klicken Sie auf Upgrade und bestätigen Sie das Upgrade.
Warten Sie einige Minuten, bis sich der Status der Spalte in Öffnen ändert.
gcloud
Führen Sie ein Upgrade des
_Default-Log-Buckets durch, um Observability Analytics zu aktivieren:gcloud logging buckets update _Default \ --location=global --enable-analytics --project=PROJECT_IDErsetzen Sie PROJECT_ID durch Ihre Google Cloud Projekt-ID.
Prüfen Sie nach einigen Minuten, ob das Upgrade abgeschlossen ist:
gcloud logging buckets describe _Default \ --location=global --project=PROJECT_IDPrüfen Sie, ob die Ausgabe
analyticsEnabled: trueenthält.
Tokennutzung pro Job im Log-Explorer ansehen
Wenn Sie die Tokennutzung einzelner Datenerkenntnisse-Scanjobs prüfen möchten, verwenden Sie den Log-Explorer oder die Google Cloud CLI. Für stündliche oder tägliche Aggregationen in Ihrem Projekt können Sie mit Observability Analytics ein Dashboard erstellen.
Console
Rufen Sie in der Google Cloud Console die Seite Logging > Log-Explorer auf.
Wenn der Abfrageeditor nicht angezeigt wird, aktivieren Sie Abfrage anzeigen.
Geben Sie im Abfrageeditor die folgende Abfrage ein:
log_id("dataplex.googleapis.com/data_scan") jsonPayload.type="DATA_DOCUMENTATION" jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:*Optional: Wenn Sie nach einem bestimmten Scan oder einer bestimmten Jobausführung filtern möchten, fügen Sie der Abfrage eine der folgenden Zeilen hinzu:
resource.labels.datascan_id="DATA_SCAN_ID" jsonPayload.jobId="JOB_ID"Ersetzen Sie Folgendes:
- DATA_SCAN_ID: die ID des Dateneinblicke-Scans.
- JOB_ID: die ID einer bestimmten Ausführung des Scanjobs.
Wählen Sie einen Zeitraum aus (z. B. Letzte 24 Stunden) und klicken Sie dann auf Abfrage ausführen.
Maximieren Sie einen Logeintrag und öffnen Sie
jsonPayload>dataDocumentation>billableTokenUsage, um die Tokenanzahl für diesen Job zu prüfen.
gcloud
Lesen Sie die letzten Logeinträge für Dateneinblicke-Scans und formatieren Sie die Tokenfelder als Tabelle:
gcloud logging read \
'log_id("dataplex.googleapis.com/data_scan") AND jsonPayload.type="DATA_DOCUMENTATION" AND jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:*' \
--project=PROJECT_ID --freshness=1d --limit=20 \
--format='table(timestamp, resource.labels.datascan_id:label=SCAN,
jsonPayload.jobId:label=JOB,
jsonPayload.dataDocumentation.billableTokenUsage.promptTokenCount:label=PROMPT,
jsonPayload.dataDocumentation.billableTokenUsage.cachedContentTokenCount:label=CACHED,
jsonPayload.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount:label=TOOL_USE,
jsonPayload.dataDocumentation.billableTokenUsage.candidatesTokenCount:label=CANDIDATES,
jsonPayload.dataDocumentation.billableTokenUsage.thoughtsTokenCount:label=THOUGHTS)'
Ersetzen Sie PROJECT_ID durch Ihre Google Cloud Projekt-ID.
Eine leere Spalte in der Ausgabetabelle gibt 0 Tokens für dieses Feld an.
Verwenden Sie die Formeln unter
Funktionsweise des Loggings der Tokennutzung, um diese Felder in Messwerte umzuwandeln.
Tokennutzung mit Observability Analytics abfragen
Sie können die SQL-Abfragen für Widgets auch direkt auf der Seite Loganalysen in der Google Cloud Console ausführen oder anpassen.
Die täglichen und stündlichen Diagramme verwenden dieselbe Diagrammabfrage, die eine Zeile pro Scanjob zurückgibt. Jedes Diagramm-Widget gruppiert und summiert die Zeilen nach Tag (timeBinSize: 86400s) oder nach Stunde (timeBinSize: 3600s). Wenn Sie eine Diagrammabfrage bearbeiten und wieder in ein Dashboard-Widget einfügen, behalten Sie die Spaltenaliase timestamp, total_non_cached_input_tokens, total_cached_input_tokens und total_output_tokens bei.
Wenn Sie eine Abfrage auf einen einzelnen Scan filtern möchten, fügen Sie der WHERE-Klausel die folgende Bedingung hinzu:
AND JSON_VALUE(resource.labels, '$.datascan_id') = 'DATA_SCAN_ID'
Ersetzen Sie DATA_SCAN_ID durch die ID Ihres Daten statistiken-Scans.
Beispiel für eine Diagrammabfrage (tägliche und stündliche Diagramme)
SELECT
timestamp,
GREATEST(
IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)
- IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),
0)
+ IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)
AS total_non_cached_input_tokens,
IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)
AS total_cached_input_tokens,
IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)
+ IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)
AS total_output_tokens
FROM `PROJECT_ID.global._Default._Default`
WHERE
log_id = 'dataplex.googleapis.com/data_scan'
AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'
AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL
Ersetzen Sie PROJECT_ID durch Ihre Google Cloud Projekt-ID.
Beispiel für eine Abfrage pro Scanjob
SELECT
timestamp,
JSON_VALUE(resource.labels, '$.datascan_id') AS data_scan_id,
JSON_VALUE(resource.labels, '$.location') AS location,
JSON_VALUE(json_payload, '$.jobId') AS job_id,
JSON_VALUE(json_payload, '$.state') AS state,
GREATEST(
IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)
- IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),
0)
+ IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)
AS non_cached_input_tokens,
IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)
AS cached_input_tokens,
IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)
+ IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)
AS output_tokens
FROM `PROJECT_ID.global._Default._Default`
WHERE
log_id = 'dataplex.googleapis.com/data_scan'
AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'
AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL
ORDER BY timestamp DESC
LIMIT 500
Ersetzen Sie PROJECT_ID durch Ihre Google Cloud Projekt-ID.
Dashboard mit Observability Analytics erstellen
Wenn Sie die Tokennutzung des Modells im Zeitverlauf visualisieren und verfolgen möchten, können Sie mit Observability Analytics ein benutzerdefiniertes Monitoring-Dashboard erstellen.
Bei dieser Methode werden SQL-Abfragen direkt für Ihre Datenerkenntnisse-Scanlogs im _Default-Log-Bucket ausgeführt. Das hat mehrere Vorteile:
- Genauigkeit:Abfragen berechnen die genaue Tokenanzahl direkt aus den JSON-Nutzlasten der Logeinträge und nicht aus aggregierten Messwertschätzungen.
- Detaillierter Jobverlauf:Neben aggregierten Diagrammen können Sie einzelne Scanjobs in einer tabellarischen Ansicht prüfen.
- Keine zusätzlichen Kosten:Für das Upgrade des
_Default-Log-Buckets auf Observability Analytics fallen keine zusätzlichen Kosten an.
Mit dieser Option wird ein Monitoring-Dashboard mit drei Widgets erstellt, die SQL-Abfragen für Ihre Logs ausführen:
- Tägliche Tokennutzung (gestapeltes Balkendiagramm)
- Stündliche Tokennutzung (Liniendiagramm)
- Tokennutzung pro Scanjob (Tabelle mit den letzten 500 Jobs)
Die folgende JSON-Konfiguration für das Dashboard verwendet die integrierte @__project_id
Variable (@__project_id.global._Default._Default), mit der automatisch
das Projekt abgefragt wird, in dem Sie das Dashboard öffnen. Sie müssen vor dem Importieren keine Projektplatzhalter in der JSON-Datei bearbeiten.
Console
Rufen Sie in der Google Cloud Console die Seite Monitoring > Dashboards auf.
Klicken Sie auf Dashboard erstellen.
Klicken Sie in der Symbolleiste auf Einstellungen, wählen Sie JSON aus und dann JSON-Editor.
Ersetzen Sie den vorhandenen Inhalt des Editors durch die JSON-Definition des Dashboards, die im nächsten Abschnitt angegeben ist.
Klicken Sie auf Änderungen übernehmen. Wenn die automatische Speicherung aktiviert ist, speichert Monitoring das Dashboard als
Data Insights - Token Usage.Wenn Sie das Dashboard zum ersten Mal öffnen, werden Sie in jedem Widget aufgefordert, die Ausführung der SQL-Abfrage in der BigQuery-Engine für Ihr Projekt zu bestätigen. Prüfen Sie, ob in der Eingabeaufforderung Ihr Projekt aufgeführt ist, und klicken Sie dann in jedem Widget auf Ausführung fortsetzen.
Wählen Sie in der Dashboard-Symbolleiste einen Zeitraum aus (z. B. Letzte 7 Tage).
gcloud
- Speichern Sie die JSON-Definition des Dashboards in einer lokalen
Datei mit dem Namen
dashboard.json. Erstellen Sie das Dashboard in Monitoring:
gcloud monitoring dashboards create \ --project=PROJECT_ID \ --config-from-file=dashboard.jsonErsetzen Sie PROJECT_ID durch Ihre Google Cloud Projekt-ID.
Öffnen Sie die Dashboards-Seite in der Google Cloud Console, wählen Sie Insights Scan – Token Usage aus und klicken Sie in jedem Widget auf Ausführung fortsetzen, um die Ausführung der SQL-Abfrage zu autorisieren.
JSON-Definition des Dashboards
Maximieren Sie den folgenden Abschnitt und kopieren Sie die JSON-Definition, um das Dashboard zu erstellen:
JSON-Definition
{
"displayName": "Data Insights - Token Usage",
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"xPos": 0,
"yPos": 0,
"width": 24,
"height": 16,
"widget": {
"title": "Daily token usage",
"xyChart": {
"chartOptions": {
"mode": "COLOR",
"displayHorizontal": false
},
"dataSets": [
{
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"breakdowns": [],
"dimensions": [
{
"column": "timestamp",
"columnType": "TIMESTAMP",
"sortColumn": "timestamp",
"sortOrder": "SORT_ORDER_ASCENDING",
"timeBinSize": "86400s"
}
],
"measures": [
{
"column": "total_non_cached_input_tokens",
"aggregationFunction": {
"type": "sum",
"parameters": []
}
},
{
"column": "total_cached_input_tokens",
"aggregationFunction": {
"type": "sum",
"parameters": []
}
},
{
"column": "total_output_tokens",
"aggregationFunction": {
"type": "sum",
"parameters": []
}
}
],
"timeSeriesQuery": {
"opsAnalyticsQuery": {
"sql": "SELECT\n timestamp,\n GREATEST(\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n 0)\n + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n AS total_non_cached_input_tokens,\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n AS total_cached_input_tokens,\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n AS total_output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n log_id = 'dataplex.googleapis.com/data_scan'\n AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL"
}
}
}
],
"yAxis": {
"label": "tokens",
"scale": "LINEAR"
}
}
}
},
{
"xPos": 24,
"yPos": 0,
"width": 24,
"height": 16,
"widget": {
"title": "Hourly token usage",
"xyChart": {
"chartOptions": {
"mode": "COLOR",
"displayHorizontal": false
},
"dataSets": [
{
"plotType": "LINE",
"targetAxis": "Y1",
"breakdowns": [],
"dimensions": [
{
"column": "timestamp",
"columnType": "TIMESTAMP",
"sortColumn": "timestamp",
"sortOrder": "SORT_ORDER_ASCENDING",
"timeBinSize": "3600s"
}
],
"measures": [
{
"column": "total_non_cached_input_tokens",
"aggregationFunction": {
"type": "sum",
"parameters": []
}
},
{
"column": "total_cached_input_tokens",
"aggregationFunction": {
"type": "sum",
"parameters": []
}
},
{
"column": "total_output_tokens",
"aggregationFunction": {
"type": "sum",
"parameters": []
}
}
],
"timeSeriesQuery": {
"opsAnalyticsQuery": {
"sql": "SELECT\n timestamp,\n GREATEST(\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n 0)\n + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n AS total_non_cached_input_tokens,\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n AS total_cached_input_tokens,\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n AS total_output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n log_id = 'dataplex.googleapis.com/data_scan'\n AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL"
}
}
}
],
"yAxis": {
"label": "tokens",
"scale": "LINEAR"
}
}
}
},
{
"xPos": 0,
"yPos": 16,
"width": 48,
"height": 20,
"widget": {
"title": "Token usage per scan job (latest 500)",
"timeSeriesTable": {
"columnSettings": [],
"dataSets": [
{
"tableTemplate": "",
"timeSeriesQuery": {
"opsAnalyticsQuery": {
"sql": "SELECT\n timestamp,\n JSON_VALUE(resource.labels, '$.datascan_id') AS data_scan_id,\n JSON_VALUE(resource.labels, '$.location') AS location,\n JSON_VALUE(json_payload, '$.jobId') AS job_id,\n JSON_VALUE(json_payload, '$.state') AS state,\n GREATEST(\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') AS INT64), 0)\n - IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0),\n 0)\n + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.toolUsePromptTokenCount') AS INT64), 0)\n AS non_cached_input_tokens,\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.cachedContentTokenCount') AS INT64), 0)\n AS cached_input_tokens,\n IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.candidatesTokenCount') AS INT64), 0)\n + IFNULL(SAFE_CAST(JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.thoughtsTokenCount') AS INT64), 0)\n AS output_tokens\nFROM `@__project_id.global._Default._Default`\nWHERE\n log_id = 'dataplex.googleapis.com/data_scan'\n AND JSON_VALUE(json_payload, '$.type') = 'DATA_DOCUMENTATION'\n AND JSON_VALUE(json_payload, '$.dataDocumentation.billableTokenUsage.promptTokenCount') IS NOT NULL\nORDER BY timestamp DESC\nLIMIT 500"
}
}
}
],
"metricVisualization": "NUMBER"
}
}
}
]
}
}
Beschränkungen
- Die Tokenmesswerte sind nur vollständig, wenn
dataplex.googleapis.com/data_scan-Logs nicht ausgeschlossen oder vom_Default-Log-Bucket weggeleitet werden. - Es werden nur erfolgreiche Jobs mit Tokenmetadaten gezählt. Logeinträge ohne
billableTokenUsage-Block werden aus den Abfragen und Messwerten ausgeschlossen. - Verwenden Sie diese Dashboards, um Nutzungstrends zu überwachen und Kosten zu schätzen, nicht um eine offizielle Cloud Billing-Rechnung abzugleichen.
- Für jedes Google Cloud Projekt muss ein eigenes Dashboard eingerichtet werden.
- SQL-Abfragen geben keine Logeinträge zurück, die geschrieben wurden, bevor Observability Analytics für den Bucket
_Defaultaktiviert wurde. - Das Tabellen-Widget pro Job zeigt maximal die 500 letzten Jobs im ausgewählten Zeitraum an. Wenn Sie ältere Jobs prüfen möchten, fragen Sie den Log-Explorer ab.
Nächste Schritte
- Weitere Informationen zu Dateneinblicken für strukturierte Daten.
- Informationen zur Verwendung von Dateneinblicken für strukturierte Daten
- Informationen zum Überwachen von Knowledge Catalog-Logs .
- Informationen zum Überwachen von Knowledge Catalog-Messwerten .