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 die Plattformlogs von Artifact Registry prüfen, um Fehler bei fehlgeschlagenen Anfragen zu beheben, Aufzeichnungen von erfolgreichen 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 auf 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 Datenebenenaktionen gehören Vorgänge wie das Pushen und Pullen von Artefakten aus Artifact Registry-Repositories.
Logs für beide Anruftypen 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)
Außerdem enthalten Logs für API-Aufrufe der Steuerungsebene die folgenden Informationen:
- HTTP-Informationen
- Anfragemethode
- URL beantragen
- 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 Logs Explorer aufrufen.
Hinweis
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die nötigen Berechtigungen zum Verwalten von Plattformprotokollen haben:
-
Artifact Registry-Administrator (
roles/artifactregistry.admin) -
Logging Viewer (
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 Ihr gesamtes 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 die Plattformprotokollierung 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 den Typ der Aktionen, die die Erstellung von Plattformprotokollen für Artifact Registry auslösen.
Sie können
INFOoderERROReingeben oder das Feld--severityausschließen, um Plattformlogs für alle unterstützten Aktionen zu erstellen. - LOCATION ist der Speicherort 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 den Typ der Aktionen, die die Erstellung von Plattformprotokollen für Artifact Registry auslösen.
Sie können
INFOoderERROReingeben oder das Feld--severityausschließen, um Plattformlogs für alle unterstützten Aktionen zu erstellen. - REPOSITORY ist der Name Ihres Repositorys in Artifact Registry.
- LOCATION ist der Speicherort 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 prüfen
Sie können prüfen, ob das Plattform-Logging von Artifact Registry in Ihrem Projekt oder für ein bestimmtes Repository aktiviert ist.
Plattformprotokollierung für ein Projekt prüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Plattformprotokollierung 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 Speicherort 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"
}
}
Plattformprotokollierung für ein Repository prüfen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Plattformprotokollierung 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 Speicherort 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 Ihr gesamtes 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 Speicherort 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 die Plattformprotokollierung 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 Speicherort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Konfiguration für Plattform-Logging löschen
Sie können die Konfiguration für das Plattformlogging für ein Projekt oder ein Repository löschen. Wenn Sie den Bereinigungsbefehl ausführen, werden die loggingState und severityLevel Ihres Projekts oder Repositorys auf „null“ gesetzt.
Wenn Sie die Konfiguration für Ihr Projekt löschen, werden nur für Repositorys, in denen die Plattformprotokollierung bereits aktiviert ist, Plattformlogs generiert. Wenn Sie die Konfiguration für ein Repository löschen, übernimmt dieses Repository die Plattform-Logging-Konfiguration aus Ihrem Projekt.
Plattform-Logging-Konfiguration für ein Projekt löschen
Führen Sie den folgenden Befehl aus, um die Plattformprotokollierungskonfiguration Ihres Google Cloud Projekts 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 Speicherort Ihres Repositorys.
- PROJECT ist die Projekt-ID. Wenn dieses Flag nicht angegeben ist, wird das aktuelle Projekt oder das Standardprojekt verwendet.
Konfiguration von Plattformlogs für ein Repository löschen
Führen Sie den folgenden Befehl aus, um die Plattform-Logging-Konfiguration eines Repositorys 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 Speicherort 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 Abfragebereich auf das Drop-down-Menü Logname.
Geben Sie requests ein und wählen Sie dann unter der Überschrift Artifact Registry das Kästchen requests aus.
Klicken Sie auf Übernehmen.
Im Bereich Abfrageergebnisse werden Logs von API-Aufrufen der Daten- und Steuerungsebene angezeigt.
Klicken Sie auf den Pfeil neben einem in den Suchergebnissen aufgeführten Log, um den Inhalt des Logs aufzurufen.
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. Filtern Sie dazu nach verschiedenen Feldern in der LogEntry-Struktur.
Bevor Sie Observability Analytics verwenden können, müssen Sie Folgendes tun:
Log-Buckets konfigurieren, um Observability Analytics zu verwenden.
IAM-Rollen Identity and Access Management konfigurieren, um Observability Analytics zu verwenden.
Folgen Sie dann der Anleitung unter Benutzerdefinierte Abfrage eingeben und ausführen. Wenn Sie zum Bereich Abfrage gelangen, können Sie eine der folgenden Beispielabfragen eingeben:
Beispiel: Top 10 der IP-Adressen nach heruntergeladenem Volumen
Mit dieser Abfrage werden Ihre Artifact Registry-Plattformprotokolle ausgewertet und die zehn wichtigsten IP-Adressen zurückgegeben, über die in den letzten sieben Tagen die meisten Daten aus Ihren Repositorys 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
Mit dieser Abfrage werden Ihre Artifact Registry-Plattformlogs ausgewertet und die Anzahl der Anfragen zurückgegeben, 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: Fehlgeschlagene Anfragen
Mit dieser Abfrage werden Ihre Plattformlogs für Artifact Registry ausgewertet und Details zu den zehn letzten fehlgeschlagenen Anfragen der letzten Stunde aufgeführt:
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;