Menulis dan mengkueri entri log menggunakan skrip Python

Panduan memulai ini memperkenalkan 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 merutekan 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 jika Anda tidak mengaktifkan penagihan untuk project Google Cloud, lakukan tindakan berikut:
  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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

Memulai

Anda dapat menggunakan lingkungan Cloud Shell atau lingkungan Linux umum untuk menyelesaikan panduan memulai ini. Python sudah 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.

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

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

      gcloud config set project PROJECT_ID
      

Linux

  1. Pastikan Python diinstal dan dikonfigurasi. Untuk informasi tentang cara menyiapkan mesin 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. Di konsol Google Cloud, buka halaman Service Accounts:

      Buka Service Accounts

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah IAM & Admin.

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

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

    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 Key type, pilih JSON, lalu klik Create. Setelah beberapa saat, jendela akan menampilkan pesan yang mirip dengan berikut ini:

        Kunci pribadi disimpan ke komputer Anda.

  4. Di workstation Linux, berikan kredensial autentikasi ke aplikasi dengan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur ke 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

Untuk mengonfigurasi Cloud Shell Anda 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 di command line, skrip akan menulis entri log berikut:

  • Entri dengan data tidak terstruktur dan tidak ada tingkat keparahan yang ditentukan.
  • Entri dengan data tidak terstruktur dan tingkat keparahan ERROR.
  • Entri dengan data terstruktur JSON dan tidak ada 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. Perlu waktu beberapa saat agar Logging 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:

  • Buat 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.
  • Secara opsional, verifikasi konten bucket Cloud Storage Anda.

Membuat tujuan

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

  1. Di konsol Google Cloud, buka halaman Buckets:

    Buka Buckets

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Cloud Storage.

  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-grained.
  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 tujuan. Sink memiliki tiga atribut:

  • Nama
  • Tujuan
  • Filter

Untuk informasi selengkapnya tentang sink, lihat Sinks.

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 sink mysink yang mengekspor semua entri log dengan tingkat keparahan minimal INFO ke bucket Cloud Storage myloggingproject-1, jalankan perintah berikut:

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

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

python export.py list

Skrip akan 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. Untuk 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. Di konsol Google Cloud, buka halaman Log Router:

      Buka Router Log

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

      Anda akan melihat tabel ringkasan sink.

    2. Temukan sink Anda di tabel, pilih Menu, lalu pilih Lihat detail sink.

    3. Salin identitas penulis ke papan klip Anda.

  2. Di konsol Google Cloud, buka halaman Buckets:

    Buka Buckets

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Cloud Storage.

  3. Untuk membuka tampilan mendetail, klik nama bucket Anda.

  4. Pilih Izin, lalu klik Beri Akses.

  5. Tempel 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.

Memvalidasi 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. Di konsol Google Cloud, buka halaman Buckets:

      Buka Buckets

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Cloud Storage.

    2. Untuk membuka tampilan mendetail, klik nama bucket Anda. Tampilan detail 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 yang dijelaskan dalam Entri log yang terlambat tiba, 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 akan menampilkan hasil yang mirip dengan:

      Tampilan mendetail konten bucket.

    3. Data di setiap folder diatur dalam serangkaian folder yang diberi label dengan folder tingkat teratas yang terdiri dari nama log, lalu secara berurutan, tahun, bulan, dan hari. Untuk melihat data yang diekspor oleh sink, klik nama folder my-log, lalu terus klik subfolder tahun, bulan, dan hari hingga Anda mencapai 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 kontennya. 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 lainnya yang ditulis tidak diekspor ke tujuan karena tingkat keparahannya ditetapkan ke nilai default, dan tingkat keparahan default kurang dari INFO.

Pemecahan masalah

Ada beberapa alasan mengapa bucket Cloud Storage mungkin kosong:

  • Bucket belum menerima data. Mungkin perlu 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 yang terlambat tiba.

  • 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.

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

     bucket_permission_denied

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

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

     python snippets.py my-log write
    

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda 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 tersebut akan kedaluwarsa dan dihapus. Lihat Kuota dan batas.

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

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

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

    • Untuk menghapus resource panduan memulai:

      1. Hapus sink dengan menjalankan perintah berikut:

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

Langkah selanjutnya