Konfigurieren Sie Plattformlogs in Artifact Registry, damit Sie Informationen zu erfolgreichen und fehlgeschlagenen Anfragen an Ihre Artifact Registry-Repositories aufrufen können. Plattformlogs werden von Cloud Logging generiert und können im Log-Explorer aufgerufen werden. Sie können Ihre Artifact Registry-Plattformlogs überprüfen, um Fehler bei fehlgeschlagenen Anfragen zu beheben, Aufzeichnungen erfolgreicher Anfragen zu führen und die Anzahl der Downloads für ein Artefakt aufzurufen.
Ein Plattformlog wird als LogEntry formatiert.
Übersicht
Artifact Registry generiert Plattformlogs für API-Aufrufe der Datenebene und API-Aufrufe der Steuerungsebene. Zu den Aktionen der Steuerungsebene gehören Repository-Verwaltungsvorgänge wie das Erstellen, Bearbeiten von Beschreibungen und Löschen von Repositories sowie Artefaktverwaltungsaktionen wie das Auflisten, Taggen und Löschen von Artefakten. Zu den Aktionen der Datenebene gehören Vorgänge wie das Pushen und Pullen von Artefakten aus Artifact Registry-Repositories.
Logs für beide Arten von Aufrufen enthalten die folgenden Informationen:
- Anfragedetails
- Antwortdetails
- Status
- Labels
- Methodenname
- Ressourcenname
- Ressourcenstandort
- Vorgangs-ID (für Vorgänge mit langer Ausführungszeit)
- Repository-Format (für Repository-Ressourcen)
- Repository-Modus (für Repository-Ressourcen)
Darüber hinaus enthalten Logs für API-Aufrufe der Steuerungsebene die folgenden Informationen:
- HTTP-Informationen
- Anfragemethode
- Anfrage-URL
- Anfragegröße (in Byte)
- Status
- Antwortgröße (in Byte)
- User-Agent
- Remote-IP (Client-IP, von der die Anfrage stammt)
- Protokoll
- Verwiesen von:
- Latenz
Sie können Plattformlogs für Artifact Registry im Log-Explorer aufrufen.
Hinweis
Aktivieren Sie die Logging API.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Plattformlogs benötigen:
- Artifact Registry-Administrator (
roles/artifactregistry.admin) - Logging-Betrachter (
roles/logging.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.
Plattform-Logging aktivieren
Sie können das Plattform-Logging für das gesamte Google Cloud Projekt oder für ein bestimmtes Repository aktivieren.
Plattform-Logging für ein Projekt aktivieren
Führen Sie den folgenden Befehl aus, um das Plattform-Logging für Ihr Google Cloud Projekt zu aktivieren:
gcloud CLI
gcloud artifacts projects update --enable-platform-logs --severity=SEVERITY --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH -H "X-GFE-SSL: yes" -H "Content-Type: application/json" -d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {"logging_state": "ENABLED", "severity_level": "SEVERITY"}}' "https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"
Wobei:
- SEVERITY bestimmt die Art der Aktionen, die die Erstellung von
Artifact Registry-Plattformlogs auslösen.
Sie können
INFOoderERROReingeben oder das Feld--severityweglassen, um Plattformlogs für alle unterstützten Aktionen zu erstellen. - LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Plattform-Logging für ein Repository aktivieren
gcloud CLI
gcloud artifacts repositories update --enable-platform-logs --severity=SEVERITY REPOSITORY --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {"loggingState": "ENABLED", "severityLevel": "SEVERITY"}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"
Wobei:
- SEVERITY bestimmt die Art der Aktionen, die die Erstellung von
Artifact Registry-Plattformlogs auslösen.
Sie können
INFOoderERROReingeben oder das Feld--severityweglassen, um Plattformlogs für alle unterstützten Aktionen zu erstellen. - REPOSITORY ist der Name Ihres Repositorys in Artifact Registry.
- LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Konfiguration des Plattform-Loggings überprüfen
Sie können prüfen, ob das Plattform-Logging von Artifact Registry in Ihrem Projekt oder für ein bestimmtes Repository aktiviert ist.
Plattform-Logging für ein Projekt überprüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob das Plattform-Logging von Artifact Registry in Ihrem Projekt aktiviert ist:
gcloud CLI
gcloud artifacts projects describe --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"
Wobei:
- LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Die Ausgabe sieht etwa so aus:
{
"name": "projects/PROJECT/locations/{"<var>LOCATION</var>"}}/projectConfig"
"platformLogsConfig": {
"loggingState": "ENABLED"
"severityLevel": "INFO"
}
}
Plattform-Logging für ein Repository überprüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob das Plattform-Logging von Artifact Registry in einem Repository aktiviert ist:
gcloud CLI
gcloud artifacts repositories describe REPOSITORY --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY"
Wobei:
- REPOSITORY ist der Name Ihres Repositorys.
- LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Die Ausgabe sieht etwa so aus:
{
"name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY"
"platformLogsConfig": {
"loggingState": "ENABLED",
"severityLevel": "INFO"
}
}
Plattform-Logging deaktivieren
Sie können das Plattform-Logging für das gesamte Google Cloud Projekt oder für ein bestimmtes Repository deaktivieren.
Plattform-Logging für ein Projekt deaktivieren
Führen Sie den folgenden Befehl aus, um das Plattform-Logging für Ihr Google Cloud Projekt zu deaktivieren:
gcloud CLI
gcloud artifacts projects update --disable-platform-logs --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {"logging_state": "DISABLED"}}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"
Wobei:
- LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Plattform-Logging für ein Repository deaktivieren
Führen Sie den folgenden Befehl aus, um das Plattform-Logging für ein Repository zu deaktivieren:
gcloud CLI
gcloud artifacts repositories update --disable-platform-logs REPOSITORY --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {"loggingState": "DISABLED", "severityLevel": "INFO"}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"
Wobei:
- REPOSITORY ist der Name Ihres Repositorys in Artifact Registry.
- LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Konfiguration des Plattform-Loggings löschen
Sie können die Konfiguration des Plattform-Loggings für ein Projekt oder für ein Repository löschen. Wenn Sie den Befehl zum Löschen ausführen, werden loggingState und severityLevel Ihres Projekts oder Repositorys auf null gesetzt.
Wenn Sie die Konfiguration für Ihr Projekt löschen, werden nur für Repositories, in denen das Plattform-Logging bereits aktiviert wurde, Plattformlogs erstellt. Wenn Sie die Konfiguration für ein Repository löschen, übernimmt dieses Repository die Konfiguration des Plattform-Loggings aus Ihrem Projekt.
Konfiguration des Plattform-Loggings für ein Projekt löschen
Führen Sie den folgenden Befehl aus, um die Konfiguration des Plattform-Loggings für Ihr Google Cloud Projekt zu löschen:
gcloud CLI
gcloud artifacts projects update --clear-platform-logs --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/projectConfig", "platformLogsConfig": {}}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/projectConfig"
Wobei:
- LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Konfiguration des Plattform-Loggings für ein Repository löschen
Führen Sie den folgenden Befehl aus, um die Konfiguration des Plattform-Loggings für ein Repository zu löschen:
gcloud CLI
gcloud artifacts repositories update --clear-platform-logs REPOSITORY --location LOCATION --project PROJECT
curl
curl -v -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH \
-H "X-GFE-SSL: yes" -H "Content-Type: application/json" \
-d '{"name": "projects/'PROJECT'/locations/'LOCATION'/repositories/'REPOSITORY'", "platformLogsConfig": {}' \
"https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY?updateMask=platformLogsConfig"
Wobei:
- REPOSITORY ist der Name Ihres Repositorys in Artifact Registry.
- LOCATION ist der Standort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Plattformlogs ansehen
So rufen Sie Ihre Plattformlogs auf:
Öffnen Sie in der Google Cloud Console die Seite Log-Explorer.
Klicken Sie im Bereich „Abfrage“ auf das Drop-down-Menü „Logname“.
Geben Sie requests ein und wählen Sie dann das Kä0}Artifact Registry Überschrift aus.
Klicken Sie auf Übernehmen.
In Logging werden Logs von API-Aufrufen der Datenebene und der Steuerungsebene im Bereich Abfrageergebnisse angezeigt.
Wenn Sie den Inhalt eines Logs aufrufen möchten, klicken Sie auf den Pfeil neben einem Log, das in den Abfrageergebnissen aufgeführt ist.
Weitere Informationen zum Interpretieren von Abfrageergebnissen im Log-Explorer finden Sie unter Abfrageergebnisse ansehen.
Plattformlogs mit Observability Analytics analysieren
Mit Observability Analytics können Sie SQL-Abfragen für Ihre Artifact Registry-Logs ausführen und so Ihre Logs detaillierter analysieren. Dieser Abschnitt enthält mehrere Beispielabfragen für häufige Anwendungsfälle. Sie können diese Abfragen anpassen, um andere Aspekte Ihrer Artifact Registry-Nutzung zu analysieren, indem Sie nach verschiedenen Feldern in der LogEntry Struktur filtern.
Bevor Sie Observability Analytics verwenden, führen Sie die folgenden Schritte aus:
Konfigurieren Sie Ihre Log-Buckets für die Verwendung von Observability Analytics.
Konfigurieren Sie Rollen und Berechtigungen von Identity and Access Management für die Verwendung von Observability Analytics.
Führen Sie als Nächstes die Schritte unter Benutzerdefinierte Abfrage eingeben und ausführen aus. Wenn Sie zum SQL-Bereich Abfrage gelangen, können Sie eine der folgenden Beispielabfragen eingeben:
Beispiel: Top 10 der IP-Adressen nach heruntergeladenem Volumen
Diese Abfrage wertet Ihre Artifact Registry-Plattformlogs aus und gibt die 10 wichtigsten IP-Adressen zurück, von denen in den letzten sieben Tagen die meisten Daten aus Ihren Repositories heruntergeladen wurden:
SELECT
http_request.remote_ip AS client_ip,
SUM(http_request.response_size) AS total_download_bytes
FROM
`YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
log_id = "artifactregistry.googleapis.com/requests"
AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
AND http_request.request_method = "GET"
AND http_request.status >= 200 AND http_request.status < 300
AND http_request.response_size > 0
AND CAST(http_request.response_size AS INT64) > 0
AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
GROUP BY
client_ip
ORDER BY
total_download_bytes DESC
LIMIT 10;
Beispiel: Anfragen pro Repository
Diese Abfrage wertet Ihre Artifact Registry-Plattformlogs aus und gibt die Anzahl der Anfragen zurück, die in den letzten 24 Stunden an jedes Repository gesendet wurden:
SELECT
JSON_VALUE(resource.labels.repository_id) AS repository,
JSON_VALUE(resource.labels.location) AS location,
COUNT(*) AS request_count
FROM
`YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
log_id = "artifactregistry.googleapis.com/requests"
AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
GROUP BY
repository,
location
ORDER BY
request_count DESC;
Beispiel: Fehlerhafte Anfragen
Diese Abfrage wertet Ihre Artifact Registry-Plattformlogs aus und listet Details zu den 10 letzten fehlgeschlagenen Anfragen der letzten Stunde auf:
SELECT
timestamp,
http_request.status,
http_request.request_method,
http_request.request_url,
http_request.remote_ip,
JSON_VALUE(resource.labels.repository_id) AS repository,
JSON_VALUE(labels.resource_name) AS artifact_name,
trace
FROM
`YOUR_PROJECT.YOUR_LOCATION.YOUR_BUCKET._AllLogs`
WHERE
log_id = "artifactregistry.googleapis.com/requests"
AND JSON_VALUE(resource.labels.repository_id) IS NOT NULL
AND http_request.status >= 400
AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
ORDER BY
timestamp DESC
LIMIT 10;