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:- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
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
Buka Cloud Shell dan verifikasi konfigurasi project Google Cloud Anda:
Dari konsol Google Cloud, klik terminal Activate Cloud Shell.
Cloud Shell akan terbuka di jendela dan menampilkan pesan selamat datang.
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
Pastikan Python diinstal dan dikonfigurasi. Untuk informasi tentang cara menyiapkan mesin untuk pengembangan Python, lihat Menyiapkan lingkungan pengembangan Python.
Instal library klien Cloud Logging:
pip install --upgrade google-cloud-logging
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.
-
Di konsol Google Cloud, buka halaman Service Accounts:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah IAM & Admin.
Pilih project Google Cloud panduan memulai, lalu klik Create Service Account:
- Masukkan nama akun.
- Masukkan deskripsi akun.
- Klik Buat dan lanjutkan.
Klik kolom Pilih peran, lalu pilih Logging Admin.
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
Buat file kunci dan download ke workstation Anda:
- Untuk akun layanan Anda, klik more_vert 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:
-
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:
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.
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:
-
Di konsol Google Cloud, buka halaman Buckets:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Cloud Storage.
- Klik Create bucket.
- Masukkan nama untuk bucket Anda.
- Untuk Location type, pilih Region, yang memilih lokasi bucket dengan latensi terendah.
- Untuk Default storage class, pilih Standard.
- Untuk Access control, pilih Fine-grained.
- 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:
Identifikasi Identitas Penulis sink Anda:
-
Di konsol Google Cloud, buka halaman Log Router:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Anda akan melihat tabel ringkasan sink.
Temukan sink Anda di tabel, pilih more_vert Menu, lalu pilih Lihat detail sink.
Salin identitas penulis ke papan klip Anda.
-
-
Di konsol Google Cloud, buka halaman Buckets:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Cloud Storage.
Untuk membuka tampilan mendetail, klik nama bucket Anda.
Pilih Izin, lalu klik Beri Akses.
Tempel identitas penulis ke kotak New principals. Hapus awalan
serviceAccount:
dari alamat identitas penulis.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:
Tulis entri log baru ke log
my-log
:python snippets.py my-log write
Lihat konten bucket Cloud Storage Anda:
-
Di konsol Google Cloud, buka halaman Buckets:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Cloud Storage.
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:
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 denganjson
: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 keparahanINFO
, 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 dariINFO
.
-
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.
(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
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:
Hapus sink dengan menjalankan perintah berikut:
python export.py delete mysink
Hapus bucket Cloud Storage Anda. Buka konsol Google Cloud dan klik Storage > Buckets. Centang kotak di samping nama bucket, lalu klik Hapus.
Langkah selanjutnya
- Untuk mempelajari cara membaca, menulis, dan mengonfigurasi log dari aplikasi Anda, lihat Cloud Logging API.
- Untuk informasi tentang Logs Explorer, lihat Melihat log menggunakan Logs Explorer.
- Untuk mempelajari cara merutekan data log ke tujuan yang didukung, lihat Ringkasan perutean dan penyimpanan.
- Untuk mempelajari cara mengumpulkan entri log dari instance VM, lihat Ringkasan Agen Operasional.
- Untuk informasi tentang audit dan kepatuhan, lihat Ringkasan Cloud Audit Logs.