Menulis dan mengkueri entri log menggunakan skrip Python

Panduan memulai ini memperkenalkan Anda pada beberapa kemampuan Cloud Logging dan menunjukkan cara melakukan hal berikut:

  • Menulis entri log menggunakan skrip Python.
  • Melihat entri log menggunakan skrip Python.
  • Menghapus entri log menggunakan skrip Python.
  • Merutekan log ke bucket Cloud Storage.

Logging dapat mengarahkan entri log ke tujuan berikut:

  • Bucket Cloud Storage
  • Set data BigQuery
  • Pub/Sub
  • Bucket logging
  • Project Google Cloud

Sebelum memulai

Anda harus memiliki project Google Cloud dengan penagihan yang diaktifkan untuk menyelesaikan panduan memulai ini. Jika Anda tidak memiliki project Google Cloud, atau tidak mengaktifkan penagihan untuk project Google Cloud, lakukan hal berikut:
  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

Panduan memulai ini menggunakan Cloud Logging dan Cloud Storage. Penggunaan resource ini dapat menimbulkan biaya. Setelah menyelesaikan panduan memulai ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Lihat Membersihkan di halaman ini untuk detail selengkapnya.

Memulai

Anda dapat menggunakan lingkungan Cloud Shell atau lingkungan Linux generik untuk menyelesaikan panduan memulai ini. Python telah diinstal sebelumnya di Cloud Shell.

Cloud Shell

  1. Buka Cloud Shell dan verifikasi konfigurasi project Google Cloud Anda:

    1. Dari Konsol Google Cloud, klik Activate Cloud Shell:

      Di Konsol Google Cloud, klik ikon Cloud Shell.

      Cloud Shell akan terbuka di jendela dan menampilkan pesan selamat datang:

      Selamat datang di pesan Cloud Shell.

    2. Pesan selamat datang akan mencerminkan project ID Google Cloud yang dikonfigurasi. Jika ini bukan project Google Cloud yang ingin Anda gunakan, jalankan perintah berikut setelah mengganti PROJECT_ID dengan ID project Anda:

       gcloud config set project PROJECT_ID
      

Linux

  1. Pastikan Python sudah diinstal dan dikonfigurasi. Untuk mengetahui informasi tentang menyiapkan mesin Anda untuk pengembangan Python, lihat Menyiapkan lingkungan pengembangan Python.

  2. Instal library klien Cloud Logging:

    pip install --upgrade google-cloud-logging
    
  3. Siapkan izin Identity and Access Management untuk project Google Cloud Anda. Pada langkah-langkah berikut, Anda akan membuat akun layanan untuk project Google Cloud, lalu membuat dan mendownload file ke workstation Linux.

    1. Pada panel navigasi Konsol Google Cloud, pilih IAM & Admin, lalu pilih Service Accounts:

      Buka Akun Layanan

    2. Pilih project Google Cloud panduan memulai Anda, lalu klik Create Service Account:

      • Masukkan nama akun.
      • Masukkan deskripsi akun.
      • Klik Buat dan lanjutkan.
    3. Klik kolom Pilih peran dan pilih Admin Logging.

    4. Klik Selesai untuk menyelesaikan pembuatan akun layanan.

    5. Buat file kunci dan download ke workstation Anda:

      • Untuk akun layanan Anda, klik Opsi lainnya, lalu pilih Kelola kunci.
      • Di panel Keys, klik Add key.
      • Klik Buat kunci baru.
      • Untuk Jenis kunci, pilih JSON, lalu klik Buat. Setelah beberapa saat, jendela pop-up akan menampilkan pesan yang mirip dengan yang ditunjukkan di bawah:

        Kunci pribadi disimpan ke komputer Anda.

  4. Di workstation Linux, berikan kredensial autentikasi ke aplikasi Anda dengan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file kunci Anda. Contoh:

     export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/FILE_NAME.json"
    

    Variabel lingkungan ini hanya berlaku untuk sesi shell Anda saat ini, jadi jika Anda membuka sesi baru, tetapkan variabel kembali.

Sumber clone

Guna mengonfigurasi Cloud Shell untuk panduan memulai ini, lakukan hal berikut:

  1. Clone project GitHub python-logging:

      git clone https://github.com/googleapis/python-logging
    

    Direktori samples/snippets berisi dua skrip yang digunakan dalam panduan memulai ini:

    • snippets.py memungkinkan Anda mengelola entri dalam log.
    • export.py memungkinkan Anda mengelola ekspor log.
  2. Ubah ke direktori snippets:

      cd python-logging/samples/snippets
    

Menulis entri log

Skrip snippets.py menggunakan library klien Python untuk menulis entri log ke Logging. Jika opsi write ditentukan pada command line, skrip akan menulis entri log berikut:

  • Entri dengan data yang tidak terstruktur dan tingkat keparahan yang tidak ditentukan.
  • Entri dengan data tidak terstruktur dan tingkat keparahan ERROR.
  • Entri dengan data terstruktur JSON dan tanpa tingkat keparahan yang ditentukan.

Untuk menulis entri log baru ke log my-log, jalankan skrip snippets.py dengan opsi write:

python snippets.py my-log write

Melihat entri log

Untuk melihat entri log di Cloud Shell, jalankan skrip snippets.py dengan opsi list:

python snippets.py my-log list

Perintah selesai dengan hasil:

    Listing entries for logger my-log:
    * 2018-11-15T16:05:35.548471+00:00: Hello, world!
    * 2018-11-15T16:05:35.647190+00:00: Goodbye, world!
    * 2018-11-15T16:05:35.726315+00:00: {u'favorite_color': u'Blue', u'quest': u'Find the Holy Grail', u'name': u'King Arthur'}

Jika hasilnya tidak menampilkan entri apa pun, coba lagi perintah tersebut. Logging memerlukan waktu beberapa saat untuk menerima dan memproses entri log.

Anda juga dapat melihat entri log menggunakan Logs Explorer. Untuk mengetahui detail selengkapnya, lihat Melihat log menggunakan Logs Explorer.

Menghapus entri log

Untuk menghapus semua entri log dalam log my-log, jalankan skrip snippets.py dengan opsi delete:

python snippets.py my-log delete

Perintah selesai dengan hasil:

Deleted all logging entries for my-log.

Log rute

Di bagian ini, Anda akan melakukan hal berikut:

  • Membuat bucket Cloud Storage sebagai tujuan untuk data Anda.
  • Buat sink yang menyalin entri log baru ke tujuan.
  • Perbarui izin bucket Cloud Storage Anda.
  • Menulis entri log ke Logging.
  • Atau, verifikasi konten bucket Cloud Storage Anda.

Buat tujuan

Tujuan ekspor untuk panduan memulai ini adalah bucket Cloud Storage. Untuk membuat bucket Cloud Storage, lakukan hal berikut:

  1. Pada panel navigasi Google Cloud Console, pilih Cloud Storage, lalu klik Buckets:

    Buka Buckets

  2. Klik Create bucket.
  3. Masukkan nama untuk bucket Anda.
  4. Untuk Location type, pilih Region, yang memilih lokasi bucket dengan latensi terendah.
  5. Untuk Default storage class, pilih Standard.
  6. Untuk Access control, pilih Fine-Smooth.
  7. Untuk Alat perlindungan, pilih Tidak ada, lalu klik Buat.

Panduan memulai ini menggunakan nama bucket Cloud Storage myloggingproject-1.

Membuat sink

Sink adalah aturan yang menentukan apakah Logging merutekan entri log yang baru tiba ke suatu tujuan. Wastafel memiliki tiga atribut:

  • Nama
  • Tujuan
  • Filter

Untuk mengetahui informasi selengkapnya tentang wastafel, lihat Wastafel.

Jika entri log yang baru tiba memenuhi kondisi kueri, entri log tersebut akan dirutekan ke tujuan.

Skrip export.py menggunakan library klien Python untuk membuat, mencantumkan, mengubah, dan menghapus sink. Untuk membuat mysink sink yang mengekspor semua entri log dengan tingkat keparahan minimal INFO ke myloggingproject-1 bucket Cloud Storage, jalankan perintah berikut:

python export.py create mysink myloggingproject-1 "severity>=INFO"

Untuk melihat sink Anda, jalankan skrip export.py dengan opsi list:

python export.py list

Skrip menampilkan hal berikut:

    mysink: severity>=INFO -> storage.googleapis.com/myloggingproject-1

Memperbarui izin tujuan

Izin tujuan, dalam hal ini, bucket Cloud Storage Anda, tidak diubah saat Anda membuat sink menggunakan skrip export.py. Anda harus mengubah setelan izin bucket Cloud Storage untuk memberikan izin tulis ke sink Anda. Untuk mengetahui informasi tentang akun layanan, cakupan akses, dan peran Identity and Access Management, lihat Akun Layanan.

Untuk memperbarui izin di bucket Cloud Storage:

  1. Identifikasi Identitas Penulis sink Anda:

    1. Pada panel navigasi Google Cloud Console, pilih Logging, lalu pilih Log Router:

      Buka Router Log

      Anda akan melihat tabel ringkasan sink Anda.

    2. Temukan sink Anda di tabel, pilih Menu, lalu pilih View sink details.

    3. Salin identitas penulis ke papan klip Anda.

  2. Pada panel navigasi Google Cloud Console, pilih Cloud Storage, lalu klik Buckets:

    Buka Buckets

  3. Untuk membuka tampilan mendetail, klik nama bucket.

  4. Pilih Izin, lalu klik Berikan Akses.

  5. Tempelkan identitas penulis ke kotak New principals. Hapus awalan serviceAccount: dari alamat identitas penulis.

  6. Tetapkan Role ke Storage Object Creator, lalu klik Save.

Untuk mengetahui informasi selengkapnya, lihat Menetapkan izin tujuan.

Validasi sink

Untuk memvalidasi bahwa sink dan tujuan Anda dikonfigurasi dengan benar, lakukan hal berikut:

  1. Tulis entri log baru ke log my-log:

    python snippets.py my-log write
    
  2. Lihat konten bucket Cloud Storage Anda:

    1. Pada panel navigasi Google Cloud Console, pilih Cloud Storage, lalu klik Buckets:

      Buka Buckets

    2. Untuk membuka tampilan mendetail, klik nama bucket. Tampilan mendetail mencantumkan folder yang berisi data. Jika tidak ada data di bucket Anda, pesan berikut akan ditampilkan:

      There are no live objects in this bucket.

      Seperti dijelaskan dalam Entri log terlambat, mungkin perlu waktu 2 atau 3 jam sebelum entri pertama muncul di tujuan, atau sebelum Anda diberi tahu tentang error konfigurasi.

      Setelah bucket Anda menerima data, tampilan mendetail menunjukkan hasil yang serupa dengan:

      Tampilan detail konten bucket.

    3. Data di setiap folder disusun dalam serangkaian folder yang diberi label dengan folder tingkat atas yang terdiri dari nama log, lalu berturut-turut, tahun, bulan, dan hari. Untuk melihat data yang diekspor oleh sink Anda, klik nama folder my-log, lalu terus klik subfolder tahun, bulan, dan hari sampai Anda menemukan file yang diakhiri dengan json:

      Tampilan subfolder konten bucket.

    4. File JSON berisi entri log yang diekspor ke bucket Cloud Storage Anda. Klik nama file JSON untuk melihat isinya. Isinya mirip dengan:

       {"insertId":"yf1cshfoivz48",
       "logName":"projects/loggingproject-222616/logs/my-log",
       "receiveTimestamp":"2018-11-15T23:06:14.738729911Z",
       "resource":{"labels":{"project_id":"loggingproject-222616"},"type":"global"},
       "severity":"ERROR",
       "textPayload":"Goodbye, world!",
       "timestamp":"2018-11-15T23:06:14.738729911Z"}
      

      Karena tingkat keparahan ERROR lebih besar dari tingkat keparahan INFO, entri log yang berisi string '"Goodbye, world!"' diekspor ke tujuan sink. Entri log lain yang ditulis tidak diekspor ke tujuan karena tingkat keparahannya ditetapkan ke nilai default, dan tingkat keparahan default-nya kurang dari INFO.

Pemecahan masalah

Ada beberapa alasan mengapa bucket Cloud Storage mungkin kosong:

  • Bucket belum menerima data. Mungkin diperlukan waktu 2 atau 3 jam sebelum entri pertama muncul di tujuan, atau sebelum Anda diberi tahu tentang error konfigurasi. Untuk informasi selengkapnya, lihat Entri log terlambat.

  • Terjadi error konfigurasi. Dalam hal ini, Anda akan menerima pesan email yang mirip dengan baris subjek berikut:

     [ACTION REQUIRED] Logging export config error in myloggingproject.

    Isi isi email menjelaskan masalah konfigurasi. Misalnya, jika Anda tidak memperbarui izin tujuan, email akan mencantumkan kode error berikut:

     bucket_permission_denied

    Untuk memperbaiki kondisi tertentu ini, lihat Memperbarui izin tujuan di halaman ini.

  • Tidak ada entri log yang ditulis setelah sink dibuat. Sink diterapkan hanya untuk entri log yang baru masuk. Untuk memperbaiki situasi ini, tulis entri log baru:

     python snippets.py my-log write
    

Pembersihan

Agar akun Google Cloud Anda tidak dikenakan biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.

  1. (Opsional) Hapus entri log yang Anda buat. Jika Anda tidak menghapus entri log, entri log tersebut akan kedaluwarsa dan dihapus. Lihat Kuota dan batas.

    Untuk menghapus semua entri log dalam log my-log, jalankan perintah berikut:

     python snippets.py my-log delete
    
  2. Hapus project Google Cloud Anda atau hapus referensi panduan memulai.

    • Untuk menghapus project Google Cloud, dari panel Project Info di Google Cloud Console, klik Go to project settings, lalu klik Shut down.

    • Untuk menghapus referensi panduan memulai:

      1. Hapus sink Anda dengan menjalankan perintah berikut:

        python export.py delete mysink
        
      2. Menghapus bucket Cloud Storage. Buka konsol Google Cloud dan klik Storage > Buckets. Centang kotak di samping nama bucket Anda, lalu klik Delete.

Langkah selanjutnya