1. Pengantar
Dalam codelab ini, Anda akan mempelajari cara memanfaatkan alat logging dan pemantauan yang tersedia untuk semua developer yang menggunakan Cloud Functions. Alat-alat ini disertakan dalam setiap Cloud Function yang Anda deploy dalam semua bahasa yang didukung, sehingga Anda dapat lebih produktif saat menulis dan mengoperasikan kode serverless.
Anda akan menggunakan Cloud Function yang dipicu HTTP, tetapi semua yang Anda bahas juga berlaku untuk bahasa lain dan Cloud Functions yang dipicu oleh peristiwa lain.
2. Penyiapan dan persyaratan
Penyiapan lingkungan mandiri
- Login ke Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau G Suite, Anda harus membuatnya.)
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID
.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Cloud Shell
Meskipun Cloud Functions, beserta kemampuan logging dan pemantauannya dapat digunakan dari jarak jauh dari laptop, Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Google Cloud.
Mesin virtual berbasis Debian ini memuat semua alat pengembangan yang akan Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Ini berarti bahwa semua yang Anda perlukan untuk codelab ini adalah browser (ya, ini berfungsi di Chromebook).
- Untuk mengaktifkan Cloud Shell dari Cloud Console, cukup klik Aktifkan Cloud Shell (hanya perlu beberapa saat untuk melakukan penyediaan dan terhubung ke lingkungan).
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID
.
gcloud auth list
Output perintah
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika, untuk beberapa alasan, project belum disetel, cukup jalankan perintah berikut:
gcloud config set project <PROJECT_ID>
Mencari PROJECT_ID
Anda? Periksa ID yang Anda gunakan di langkah-langkah penyiapan atau cari di dasbor Cloud Console:
Cloud Shell juga menetapkan beberapa variabel lingkungan secara default, yang mungkin berguna saat Anda menjalankan perintah di masa mendatang.
echo $GOOGLE_CLOUD_PROJECT
Output perintah
<PROJECT_ID>
- Terakhir, tetapkan zona dan konfigurasi project default.
gcloud config set compute/zone us-central1-f
Anda dapat memilih berbagai zona yang berbeda. Untuk informasi selengkapnya, lihat Region & Zona.
3. Men-deploy Cloud Function sederhana
Agar sesuatu dapat dipantau, buat "Hello, World" (Halo Dunia) dan Cloud Function. Di menu kiri Google Cloud Console, klik Cloud Functions, lalu klik Create Function.
Masukkan "hello-monitor" sebagai nama Cloud Function baru Anda.
Gunakan semua setelan default untuk kode sumber. (Namun, Anda dapat memilih bahasa/runtime lain jika mau.)
Terakhir, klik Create.
Anda akan melihat Cloud Function Anda tercantum dengan tanda centang hijau di sampingnya, yang berarti Cloud Function siap untuk dipanggil.
4. Menguji Cloud Function dan mengirim traffic menggunakan generator beban
Setelah Cloud Function berhasil di-deploy, uji dari command line.
Pertama, gunakan Cloud Shell, tampilkan perintah berikut:
$ gcloud functions describe hello-monitor
Tindakan tersebut akan menampilkan deskripsi Cloud Function, termasuk URL untuk httpsTrigger
, yang merupakan endpoint HTTP(S) untuk memanggil Cloud Function. Hasilnya akan terlihat seperti berikut: https://<region>-<project-id>.cloudfunctions.net/hello-monitor.
Sekarang, pemicu Cloud Function akan dipicu sama mudahnya dengan menggunakan perintah curl
pada URL tersebut.
$ curl https://<region>-<project-id>.cloudfunctions.net/hello-monitor Hello World!
Sekarang gunakan Vegeta, alat pengujian beban HTTP sederhana. Untuk menginstalnya, cukup ketik perintah berikut dari Cloud Shell :
$ go get -u github.com/tsenart/vegeta
Untuk mengirim sejumlah traffic ke Cloud Function Anda (lima permintaan per detik selama beberapa menit), gunakan perintah berikut:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
5. Menjelajahi log
Dari tampilan detail Cloud Function Anda, klik View Logs.
Langkah itu akan mengarahkan Anda ke bagian Stackdriver Logging di project, yang hanya menampilkan log Cloud Function Anda.
Semua permintaan ke Cloud Function Anda harus menampilkan kode status 200.
Saat melihat log, Anda dapat melakukan hal berikut:
- Filter menurut level log (dalam kasus Anda, semua log merupakan level
debug
). - Pilih jangka waktu tertentu (relatif atau absolut).
- Aktifkan streaming log (dengan Play di bagian atas layar).
- Salin link ke entri log (untuk dibagikan dengan anggota tim).
- Tampilkan entri log dalam konteks resource.
- Sematkan entri log (sebagai petunjuk visual).
- Ekspor log ke BigQuery, Cloud Storage, atau Pub/Sub (atau cukup download sebagai file JSON atau CSV).
6. Mengupdate fungsi
Dengan menggunakan Konsol Cloud, buka tampilan Function details dan amati lonjakan yang dibuat dengan penguji beban terkait jumlah pemanggilan per detik dan waktu eksekusinya.
Alat lain yang lebih terperinci untuk mengamati latensi dan panggilan RPC adalah Stackdriver Trace, tetapi sebelum dapat menggunakannya, Anda perlu membuat beberapa perubahan pada Cloud Functions. Lakukan hal berikut:
- Tambahkan paket
node-emoji
yang menyelamatkan nyawa sebagai dependensi. - Perbarui kode fungsi untuk menggunakan modul emoji node dan memperkenalkan beberapa latensi.
- Tambahkan variabel lingkungan guna mengaktifkan Stackdriver Trace untuk Cloud Functions.
Dari Detail fungsi, klik Edit untuk mengubah fungsi.
Edit file package.json
guna menambahkan dependensi untuk paket node-emoji
.
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"node-emoji": "^1.8.1"
}
}
Edit fungsi yang sebenarnya dengan mengubah konten index.js
menjadi berikut:
const emoji = require('node-emoji');
exports.helloWorld = (req, res) => {
let message = req.query.message || req.body.message || 'Hello World!';
// add some latency, functions are too quick!
setTimeout(function() {
message += emoji.random().emoji;
res.status(200).send(message);
}, (3 * 100)); // 300ms
};
Tindakan tersebut akan menambahkan emoji acak ke pesan yang ditampilkan oleh Cloud Function setelah dijeda selama 300 milidetik.
Terakhir, tambahkan variabel lingkungan Cloud Function bernama GOOGLE_CLOUD_TRACE_ENABLED
dan tetapkan ke true
sebagai berikut:
Klik Simpan.
Kembali ke Cloud Shell dan ingat perintah untuk membuat sejumlah beban pada Cloud Function yang baru di-deploy:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
Sekarang Anda siap untuk mengamati daftar trace yang dihasilkan tanpa persyaratan penyiapan lain dan tanpa library pelacakan tertentu dalam kode Anda.
7. Melacak Cloud Function yang diperbarui
Dengan menggunakan menu sebelah kiri, buka Daftar pelacakan (di bagian Stackdriver Trace).
Anda akan melihat sesuatu yang mirip dengan screenshot berikut:
Dengan begitu, sudah jelas bahwa latensi yang diperkenalkan di Cloud Function Anda memang diukur pada 300 milidetik.
Setiap titik pada grafik merupakan permintaan yang informasi detailnya dapat Anda lihat, seperti stempel waktu, metode dan status HTTP, labelnya, link ke entri log yang sesuai, dan panggilan RPC berikutnya yang dibuat Cloud Function.
Jika Anda ingin memperbesar, cukup klik dan seret pada grafik.
Untuk memperkecil, klik Urungkan Zoom di bagian atas halaman.
Karena Anda telah men-deploy satu Cloud Function, grafik ini hanya menampilkan permintaan GET
pada URI hello-monitor
, tetapi Anda dapat memfilter pelacakan dengan metode HTTP (GET, POST, DELETE) berdasarkan status HTTP (2XX, 3XX) atau dengan menggunakan filter permintaan.
Buka Overview di menu sebelah kiri:
Dari halaman ringkasan ini, Anda dapat menemukan rekaman aktivitas terbaru dan insight lainnya.
Anda juga dapat menemukan kemampuan untuk membuat laporan kustom berdasarkan kombinasi filter permintaan URI, metode HTTP, status HTTP, dan rentang waktu. Alat ini bahkan memungkinkan Anda membandingkan nilai yang dihasilkan dengan dasar pengukuran waktu.
Jika Anda berhasil menyiapkan rentang waktu yang benar dengan titik data yang cukup, Anda dapat membuat laporan yang menunjukkan pergeseran latensi penting antara Cloud Function awal dan yang baru.
Laporan kustom tersebut dapat digunakan untuk menemukan kapan masalah performa muncul dan melacak indikator tingkat layanan (SLI), seperti latensi permintaan pengguna akhir.
8. Saatnya membersihkan resource
codelab telah berakhir.
Meskipun alat Cloud Functions dan Stackdriver adalah platform serverless yang tidak dikenai biaya saat tidak digunakan, jadilah pengguna cloud yang baik dan hapus Cloud Function Anda. Cukup pilih hello-monitor
di Overview di bagian Cloud Functions dan klik Delete.
9. Apa langkah selanjutnya?
Berikut adalah beberapa bacaan lanjutan:
/