Mengakses dan menggunakan log platform

Konfigurasi log platform di Artifact Registry agar Anda dapat melihat informasi tentang permintaan yang berhasil dan gagal yang dibuat ke repositori Artifact Registry Anda. Log platform dibuat oleh Cloud Logging dan dapat dilihat di Logs Explorer. Anda dapat meninjau log platform Artifact Registry untuk membantu memecahkan masalah permintaan yang gagal, menyimpan catatan permintaan yang berhasil, dan melihat jumlah download untuk artefak.

Log platform diformat sebagai LogEntry.

Ringkasan

Artifact Registry membuat log platform untuk panggilan API bidang data dan panggilan API bidang kontrol. Tindakan bidang kontrol mencakup operasi pengelolaan repositori seperti membuat repositori, mengedit deskripsi repositori, dan menghapus repositori, serta tindakan pengelolaan artefak seperti mencantumkan artefak, memberi tag pada artefak, dan menghapus artefak. Tindakan bidang data mencakup operasi seperti mengirim dan menarik artefak dari repositori Artifact Registry.

Log untuk kedua jenis panggilan tersebut berisi informasi berikut:

  • Detail permintaan
  • Detail respons
  • Status
  • Label
    • Nama metode
    • Nama resource
    • Lokasi resource
    • ID Operasi (untuk operasi yang berjalan lama)
    • Format repositori (untuk resource repositori)
    • Mode repositori (untuk resource repositori)

Selain itu, log untuk panggilan API bidang kontrol berisi informasi berikut:

  • Informasi HTTP
    • Metode permintaan
    • Minta URL
    • Ukuran permintaan (dalam byte)
    • Status
    • Ukuran respons (dalam byte)
    • Agen pengguna
    • IP Jarak Jauh (IP klien yang mengeluarkan permintaan)
    • Protokol
    • Referer
    • Latensi

Anda dapat melihat log platform untuk Artifact Registry di Logs Explorer.

Sebelum memulai

Aktifkan Logging API.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengelola log platform, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Mengaktifkan logging platform

Anda dapat mengaktifkan logging platform di seluruh Google Cloud project atau untuk repositori tertentu.

Mengaktifkan logging platform untuk project

Untuk mengaktifkan logging platform untuk project Google Cloud Anda, jalankan perintah berikut:

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"

Dengan:

  • SEVERITY menentukan jenis tindakan yang memicu pembuatan log platform Artifact Registry. Anda dapat memasukkan INFO, ERROR, atau mengecualikan kolom --severity untuk membuat log platform untuk semua tindakan yang didukung.
  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Mengaktifkan logging platform untuk repositori

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"

Dengan:

  • SEVERITY menentukan jenis tindakan yang memicu pembuatan log platform Artifact Registry. Anda dapat memasukkan INFO, ERROR, atau mengecualikan kolom --severity untuk membuat log platform untuk semua tindakan yang didukung.
  • REPOSITORY adalah nama repositori Anda di Artifact Registry.
  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Memverifikasi konfigurasi logging platform

Anda dapat memverifikasi apakah logging platform Artifact Registry diaktifkan di project Anda atau untuk repositori tertentu.

Memverifikasi logging platform untuk project

Untuk memverifikasi apakah logging platform Artifact Registry diaktifkan di project Anda, jalankan perintah berikut:

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"

Dengan:

  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Outputnya mirip dengan hal berikut ini:

{
  "name": "projects/PROJECT/locations/{"<var>LOCATION</var>"}}/projectConfig"
  "platformLogsConfig": {
    "loggingState": "ENABLED"
    "severityLevel": "INFO"
  }
}

Memverifikasi logging platform untuk repositori

Untuk memverifikasi apakah logging platform Artifact Registry diaktifkan di repositori, jalankan perintah berikut:

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"

Dengan:

  • REPOSITORY adalah nama repositori Anda.
  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Outputnya mirip dengan hal berikut ini:

{
  "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY"
  "platformLogsConfig": {
    "loggingState": "ENABLED",
    "severityLevel": "INFO"
  }
}

Menonaktifkan logging platform

Anda dapat menonaktifkan logging platform untuk seluruh project Google Cloud atau untuk repositori tertentu.

Menonaktifkan logging platform untuk project

Untuk menonaktifkan logging platform untuk project Google Cloud Anda, jalankan perintah berikut:

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"

Dengan:

  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Menonaktifkan logging platform untuk repositori

Untuk menonaktifkan logging platform untuk repositori, jalankan perintah berikut:

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"

Dengan:

  • REPOSITORY adalah nama repositori Anda di Artifact Registry.
  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Menghapus konfigurasi logging platform

Anda dapat menghapus konfigurasi logging platform untuk project atau untuk repositori. Saat Anda menjalankan perintah penghapusan, loggingState dan severityLevel project atau repositori Anda akan disetel ke null.

Jika Anda menghapus konfigurasi untuk project, hanya repositori tempat logging platform telah diaktifkan yang akan menghasilkan log platform. Jika Anda menghapus konfigurasi untuk repositori, repositori tersebut akan mewarisi konfigurasi logging platform dari project Anda.

Menghapus konfigurasi logging platform untuk project

Untuk menghapus konfigurasi logging platform project Google Cloud Anda, jalankan perintah berikut:

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"

Dengan:

  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Menghapus konfigurasi logging platform untuk repositori

Untuk menghapus konfigurasi logging platform repositori, jalankan perintah berikut:

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"

Dengan:

  • REPOSITORY adalah nama repositori Anda di Artifact Registry.
  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.

Melihat log platform

Untuk melihat log platform Anda, lakukan hal berikut:

  1. Buka halaman Logs Explorer di konsol Google Cloud .

    Buka halaman Logs Explorer

  2. Di panel kueri, klik drop-down Log name.

  3. Masukkan requests, lalu centang kotak requests di bagian header Artifact Registry.

  4. Klik Terapkan.

    Logging menampilkan log dari panggilan API bidang data dan bidang kontrol di panel Query results.

  5. Untuk melihat konten log, klik tanda panah di samping log yang tercantum dalam hasil kueri.

Untuk mengetahui informasi selengkapnya tentang cara memahami hasil kueri di Logs Explorer, lihat Melihat hasil kueri.

Menganalisis log platform dengan Observability Analytics

Anda dapat menggunakan Observability Analytics untuk menjalankan kueri SQL terhadap log Artifact Registry, sehingga Anda dapat menganalisis log secara lebih mendetail. Bagian ini berisi beberapa contoh kueri untuk kasus penggunaan umum. Anda dapat menyesuaikan kueri ini untuk menganalisis aspek lain dari penggunaan Artifact Registry dengan memfilter berbagai kolom dalam struktur LogEntry.

Sebelum Anda mulai menggunakan Observability Analytics, lakukan hal berikut:

  1. Konfigurasi bucket log Anda untuk menggunakan Observability Analytics.

  2. Konfigurasi peran dan izin Identity and Access Management untuk menggunakan Analisis Observabilitas.

Selanjutnya, ikuti langkah-langkah untuk Memasukkan dan menjalankan kueri kustom. Saat membuka panel Query SQL, Anda dapat memasukkan salah satu contoh kueri berikut:

Contoh: 10 alamat IP teratas berdasarkan volume yang didownload

Kueri ini mengevaluasi log platform Artifact Registry Anda dan menampilkan 10 alamat IP teratas yang telah mendownload data terbanyak dari repositori Anda selama tujuh hari terakhir:

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;

Contoh: Permintaan per repositori

Kueri ini mengevaluasi log platform Artifact Registry Anda dan menampilkan jumlah permintaan yang dibuat ke setiap repositori dalam 24 jam terakhir:

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;

Contoh: Permintaan yang gagal

Kueri ini mengevaluasi log platform Artifact Registry Anda dan mencantumkan detail untuk 10 permintaan gagal terbaru selama satu jam terakhir:

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;