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:- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
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
Buka Cloud Shell dan verifikasi konfigurasi project Google Cloud Anda:
Dari Konsol Google Cloud, klik Activate Cloud Shell:
Cloud Shell akan terbuka di jendela dan menampilkan pesan selamat datang:
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
Pastikan Python sudah diinstal dan dikonfigurasi. Untuk mengetahui informasi tentang menyiapkan mesin Anda 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.
-
Pada panel navigasi Konsol Google Cloud, pilih IAM & Admin, lalu pilih Service Accounts:
Pilih project Google Cloud panduan memulai Anda, lalu klik Create Service Account:
- Masukkan nama akun.
- Masukkan deskripsi akun.
- Klik Buat dan lanjutkan.
Klik kolom Pilih peran dan pilih Admin Logging.
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 Jenis kunci, pilih JSON, lalu klik Buat. Setelah beberapa saat, jendela pop-up akan menampilkan pesan yang mirip dengan yang ditunjukkan di bawah:
-
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:
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 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:
-
Pada panel navigasi Google Cloud Console, pilih Cloud Storage, lalu klik Buckets:
- 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-Smooth.
- 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:
Identifikasi Identitas Penulis sink Anda:
-
Pada panel navigasi Google Cloud Console, pilih Logging, lalu pilih Log Router:
Anda akan melihat tabel ringkasan sink Anda.
Temukan sink Anda di tabel, pilih more_vert Menu, lalu pilih View sink details.
Salin identitas penulis ke papan klip Anda.
-
-
Pada panel navigasi Google Cloud Console, pilih Cloud Storage, lalu klik Buckets:
Untuk membuka tampilan mendetail, klik nama bucket.
Pilih Izin, lalu klik Berikan Akses.
Tempelkan 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.
Validasi 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:
-
Pada panel navigasi Google Cloud Console, pilih Cloud Storage, lalu klik Buckets:
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:
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 denganjson
: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 keparahanINFO
, 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 dariINFO
.
-
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.
(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
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:
Hapus sink Anda dengan menjalankan perintah berikut:
python export.py delete mysink
Menghapus bucket Cloud Storage. Buka konsol Google Cloud dan klik Storage > Buckets. Centang kotak di samping nama bucket Anda, lalu klik Delete.
Langkah selanjutnya
- Untuk mempelajari cara membaca, menulis, dan mengonfigurasi log dari aplikasi Anda, lihat Cloud Logging API.
- Untuk mengetahui informasi tentang Logs Explorer, lihat Melihat log menggunakan Logs Explorer.
- Untuk mempelajari cara merutekan data log Anda ke tujuan yang didukung, lihat Ringkasan pemilihan rute dan penyimpanan.
- Untuk mempelajari cara mengumpulkan entri log dari instance VM Anda, lihat Ringkasan Agen Operasional.
- Untuk mengetahui informasi tentang pengauditan dan kepatuhan, lihat Ringkasan Cloud Audit Logs.