In diesem Dokument wird erläutert, wie Sie den Tokenverbrauch für Dateneinblicke-Scans in Knowledge Catalog (früher Dataplex Universal Catalog) mit Cloud Logging und Cloud Monitoring überwachen. Wenn Sie die Tokennutzung pro Scan und pro Job im Blick behalten, können Sie Trends bei der Modellnutzung nachvollziehen und die in Rechnung gestellten Kosten für Ihr Projekt schätzen.
So funktioniert das Logging der Tokennutzung
Wenn ein Scan-Job für Dateneinblicke (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 einen billableTokenUsage-Block unter jsonPayload.dataDocumentation, in dem die Tokenaufschlüsselung für den Job aufgezeichnet wird. Andere Logeinträge für den Job (z. B. CREATED-, STARTED-, FAILED- oder CANCELLED-Ereignisse) enthalten keinen billableTokenUsage-Block.
Im Block billableTokenUsage können Sie drei primäre Token-Kategorien 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 werden. Im Cache gespeicherte Tokens werden separat erfasst, da sie nicht zum Standardpreis für nicht im Cache gespeicherte Eingaben abgerechnet werden. | cachedContentTokenCount |
| Ausgabetokens | Generierte Antworttokens plus Reasoning-Tokens (Thinking-Tokens). Thinking-Tokens werden als Ausgabe-Tokens abgerechnet. | candidatesTokenCount + thoughtsTokenCount |
Weitere Informationen zu den Tokenpreisen finden Sie unter Data Cloud-Agent – Preise.
Tokenfelder im Logeintrag
Jeder dataplex.googleapis.com/data_scan-Logeintrag enthält Standardressourcen- und Jobkennungen wie resource.labels.datascan_id, resource.labels.location, jsonPayload.jobId und jsonPayload.state. Bei erfolgreichen Scans von Dateneinblicken enthält das Objekt jsonPayload.dataDocumentation.billableTokenUsage die folgenden Felder:
| Feld | Beschreibung |
|---|---|
promptTokenCount |
Gesamtzahl der Prompt-Tokens, die an das Modell gesendet wurden, einschließlich im Cache gespeicherter Tokens. |
cachedContentTokenCount |
Anteil der Prompt-Tokens, die aus dem Kontext-Cache bereitgestellt werden. |
toolUsePromptTokenCount |
Prompt-Tokens, die durch Toolaufrufe hinzugefügt wurden (z. B. Schema-, Profil- oder Abfrageverlaufskontext). |
candidatesTokenCount |
Generierte Antworttokens, ausgenommen Thinking-Tokens. |
thoughtsTokenCount |
Vom Modell generierte Reasoning-Token (Thinking-Token). |
Das folgende Beispiel zeigt einen dataplex.googleapis.com/data_scan-Logeintrag für einen erfolgreichen Scan-Job für Dateneinblicke:
{
"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 weder Kontext-Caching noch Thinking-Tokens oder Toolaufrufe verwendet. Daraus ergibt sich Folgendes: 20,412 nicht im Cache gespeicherte Eingabetokens, 0 im Cache gespeicherte Eingabetokens und 7,053 Ausgabetokens.
Hinweis
Bevor Sie Token-Logs für Dateneinblicke 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:
-
Daten-Scan-Logs 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, Logging und Monitoring APIs, falls sie noch nicht aktiviert sind.
Erforderliche Rollen zum Aktivieren von APIs
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 Inhaberrolle (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 Scans von Dateneinblicken werden Logs unter dem Lognamen dataplex.googleapis.com/data_scan geschrieben. Die Dashboard-Konfigurationen in diesem Dokument lesen diese Logs aus dem Log-Bucket _Default Ihres Projekts. Prüfen Sie, ob das Logrouting Ihres Projekts die folgenden Bedingungen erfüllt:
- Die Senke
_Defaultist aktiviert und leitet Logs an den Log-Bucket_Defaultweiter. 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 der Status Aktiviert und das 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 CloudProjekt-ID.
Prüfen Sie, ob disabled nicht auf true festgelegt 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 die Scanlogs Ihrer Dateneinblicke ausführen und das benutzerdefinierte Observability Analytics-Dashboard nutzen möchten, führen Sie ein Upgrade des Log-Buckets _Default Ihres Projekts durch, um Observability Analytics zu verwenden.
Bevor Sie Observability Analytics für den Log-Bucket _Default aktivieren, sollten Sie Folgendes beachten:
- Das Upgrade eines Buckets auf Observability Analytics kann nicht rückgängig gemacht werden und es fallen keine zusätzlichen Kosten an.
- Sie müssen kein verknüpftes BigQuery-Dataset erstellen.
SQL-Abfragen von Observability Analytics 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 SQL-Abfrageergebnissen angezeigt. Führen Sie nach dem Upgrade des Buckets mindestens einen Scan für Dateneinblicke aus, damit Ihr Dashboard Daten zum Anzeigen hat.
Console
Rufen Sie in der Google Cloud Console die Seite Logging > Logspeicher auf.
Suchen Sie die Zeile für den Bucket
_Defaultund sehen Sie sich die Spalte Observability Analytics verfügbar an:- 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 Spaltenstatus in Offen ändert.
gcloud
Führen Sie ein Upgrade des Log-Buckets
_Defaultdurch, um Observability Analytics zu aktivieren:gcloud logging buckets update _Default \ --location=global --enable-analytics --project=PROJECT_IDErsetzen Sie dabei PROJECT_ID durch die ID Ihres Projekts in Google Cloud .
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 den Tokenverbrauch einzelner Scanaufträge für Dateneinblicke 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 ein Dashboard mit Observability Analytics 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, hängen Sie eine der folgenden Zeilen an die Abfrage an:
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 Scan-Jobs.
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 den Dateneinblicke-Scan 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 CloudProjekt-ID.
Eine leere Spalte in der Ausgabetabelle gibt an, dass für dieses Feld 0 Tokens vorhanden sind.
Wenn Sie diese Felder in Messwerte umwandeln möchten, verwenden Sie die Formeln unter So funktioniert das Logging der Tokennutzung.
Tokennutzung mit Observability Analytics abfragen
Sie können die SQL-Abfragen des Widgets auch direkt auf der Seite Loganalysen in derGoogle Cloud -Console ausführen oder anpassen.
Die täglichen und stündlichen Diagramme verwenden dieselbe Diagrammabfrage, die eine Zeile pro Scan-Job zurückgibt. In jedem Diagramm-Widget werden die Zeilen nach Tag (timeBinSize: 86400s) oder Stunde (timeBinSize: 3600s) gruppiert und summiert. Wenn Sie eine Diagrammabfrage bearbeiten und wieder in ein Dashboard-Widget einfügen, behalten Sie die Spaltenaliasse 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, hängen Sie die folgende Bedingung an die WHERE-Klausel an:
AND JSON_VALUE(resource.labels, '$.datascan_id') = 'DATA_SCAN_ID'
Ersetzen Sie DATA_SCAN_ID durch die ID Ihres Scans für Datenstatistiken.
Beispiel für eine Diagrammabfrage (Tages- und Stundendiagramme)
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 CloudProjekt-ID.
Beispielabfrage pro Scan-Job
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 CloudProjekt-ID.
Dashboard mit Observability Analytics erstellen
Wenn Sie den Tokenverbrauch des Modells im Zeitverlauf visualisieren und verfolgen möchten, können Sie mit Observability Analytics ein benutzerdefiniertes Monitoring-Dashboard erstellen.
Bei diesem Ansatz werden SQL-Abfragen direkt für die Scanlogs der Dateneinblicke im Log-Bucket _Default ausgeführt. Das bietet 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 Tabellenansicht prüfen.
- Keine zusätzlichen Kosten: Für das Upgrade des Log-Buckets
_Defaultauf 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)
In der folgenden JSON-Konfiguration des Dashboards wird die integrierte Variable @__project_id (@__project_id.global._Default._Default) verwendet, die automatisch das Projekt abfragt, 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 und dann JSON-Editor aus.
Ersetzen Sie den vorhandenen Inhalt des Editors durch die JSON-Definition des Dashboards, die im nächsten Abschnitt bereitgestellt wird.
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 von jedem Widget aufgefordert, die Ausführung der SQL-Abfrage in der BigQuery-Engine für Ihr Projekt zu bestätigen. Prüfen Sie, ob Ihr Projekt in der Eingabeaufforderung aufgeführt ist, und klicken Sie dann bei 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 dabei PROJECT_ID durch IhreGoogle Cloud -Projekt-ID.
Öffnen Sie in der Google Cloud Console die Seite Dashboards, wählen Sie Insights Scan – Tokennutzung aus und klicken Sie in jedem Widget auf Ausführung fortsetzen, um die Ausführung der SQL-Abfrage zu autorisieren.
JSON-Definition des Dashboards
Erweitern 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
- Tokenmesswerte sind nur vollständig, wenn
dataplex.googleapis.com/data_scan-Logs nicht ausgeschlossen oder vom Log-Bucket_Defaultweggeleitet werden. - Es werden nur erfolgreiche Jobs mit Token-Metadaten gezählt. Logeinträge ohne
billableTokenUsage-Block werden von den Abfragen und Messwerten ausgeschlossen. - Verwenden Sie diese Dashboards, um Nutzungstrends zu beobachten und Kosten zu schätzen, nicht um eine offizielle Cloud Billing-Rechnung abzugleichen.
- Für jedes Google Cloud -Projekt ist eine eigene Dashboard-Einrichtung erforderlich.
- SQL-Abfragen geben keine Logeinträge zurück, die geschrieben wurden, bevor Observability Analytics für den Bucket
_Defaultaktiviert wurde. - Im Tabellen-Widget pro Job werden maximal die 500 neuesten Jobs im ausgewählten Zeitraum angezeigt. 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
- Weitere Informationen zur Verwendung von Dateneinblicken für strukturierte Daten
- Knowledge Catalog-Logs überwachen
- Knowledge Catalog-Messwerte überwachen