1. Pengantar
Dalam codelab ini, Anda akan mempelajari cara memanfaatkan alat logging dan pemantauan yang tersedia untuk semua developer yang menggunakan Cloud Functions. Alat ini disertakan dengan setiap Cloud Function yang Anda deploy di semua bahasa yang didukung dan akan membuat Anda 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 untuk 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, serta kemampuan logging dan pemantauannya dapat digunakan dari jarak jauh menggunakan laptop, Anda akan menggunakan Cloud Shell, 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
Untuk memiliki sesuatu yang dapat dipantau, buat Cloud Function "Hello, World". Di menu sebelah kiri Konsol Google Cloud, klik Cloud Functions, lalu klik Create Function.

Masukkan "hello-monitor" sebagai nama Cloud Function baru Anda.

Pertahankan semua nilai default untuk kode sumber. (Namun, Anda dapat memilih bahasa/runtime yang berbeda jika Anda mau.)

Terakhir, klik Create.

Anda akan melihat Cloud Function Anda tercantum dengan tanda centang hijau di sampingnya, yang berarti Cloud Function siap dipanggil.

4. Uji Cloud Function dan kirim traffic menggunakan generator beban
Setelah Cloud Function berhasil di-deploy, uji dari command line.
Pertama, menggunakan Cloud Shell, keluarkan perintah berikut:
$ gcloud functions describe hello-monitor
Perintah tersebut akan menampilkan deskripsi Cloud Function, termasuk URL untuk httpsTrigger, yang merupakan endpoint HTTP(S) untuk memanggil Cloud Function. URL-nya akan terlihat seperti berikut: https://<region>-<project-id>.cloudfunctions.net/hello-monitor.
Pemicuan Cloud Function kini semudah menggunakan perintah curl di URL tersebut.
$ curl https://<region>-<project-id>.cloudfunctions.net/hello-monitor Hello World!
Sekarang gunakan Vegeta, alat pengujian beban HTTP sederhana. Untuk menginstalnya, dari Cloud Shell, cukup ketik perintah berikut :
$ go get -u github.com/tsenart/vegeta
Untuk mengirimkan beberapa 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, klik View Logs.

Tindakan ini akan mengarahkan Anda ke bagian Stackdriver Logging di project Anda, 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 tingkat log (dalam kasus Anda, semua log berada di tingkat
debug). - Pilih jangka waktu tertentu (relatif atau absolut).
- Aktifkan streaming log (dengan Play
di bagian atas layar). - Menyalin link ke entri log (untuk dibagikan kepada anggota tim).
- Menampilkan entri log dalam konteks resource.
- Menyematkan entri log (sebagai isyarat visual).
- Mengekspor log ke BigQuery, Cloud Storage, atau Pub/Sub (atau cukup mendownloadnya sebagai file JSON atau CSV).
6. Perbarui fungsi
Dengan menggunakan Konsol Cloud, buka tampilan Detail fungsi dan amati lonjakan yang Anda buat dengan penguji beban dalam jumlah pemanggilan per detik dan waktu eksekusinya.

Alat lain yang lebih mendetail untuk mengamati latensi dan panggilan RPC adalah Stackdriver Trace, tetapi sebelum dapat menggunakannya, Anda perlu melakukan beberapa perubahan pada Cloud Functions. Lakukan hal berikut:
- Tambahkan paket
node-emojiyang menyelamatkan nyawa sebagai dependensi. - Perbarui kode fungsi untuk menggunakan modul node-emoji dan memperkenalkan beberapa latensi.
- Tambahkan variabel lingkungan untuk mengaktifkan Stackdriver Trace untuk Cloud Functions.
Dari Function details, klik Edit untuk mengubah fungsi.

Edit file package.json untuk menambahkan dependensi untuk paket node-emoji.
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"node-emoji": "^1.8.1"
}
}
Edit fungsi 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 ini akan menambahkan emoji acak ke pesan yang ditampilkan oleh Cloud Function setelah dijeda selama 300 milidetik.
Terakhir, tambahkan variabel lingkungan Cloud Function yang disebut GOOGLE_CLOUD_TRACE_ENABLED dan tetapkan ke true sebagai berikut:

Klik Simpan.
Kembali ke Cloud Shell dan panggil kembali perintah untuk menghasilkan beberapa 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 mengamati daftar rekaman aktivitas yang dihasilkan tanpa persyaratan penyiapan lain dan tanpa library pelacakan tertentu dalam kode Anda.
7. Lacak Cloud Function yang diupdate
Menggunakan menu sebelah kiri, buka Daftar trace (di bagian Stackdriver Trace).

Anda akan melihat sesuatu yang mirip dengan screenshot berikut:

Hal ini akan menunjukkan dengan jelas bahwa latensi yang diperkenalkan di Cloud Function Anda memang diukur pada 300 milidetik.
Setiap titik pada grafik adalah permintaan yang informasinya dapat Anda lihat secara mendetail, seperti stempel waktu, metode dan status HTTP, labelnya, link ke entri log yang sesuai, dan panggilan RPC berikutnya yang dilakukan Cloud Function.

Jika Anda ingin memperbesar, cukup klik dan tarik grafik. 
Untuk memperkecil, klik Urungkan Zoom di bagian atas halaman.
Karena Anda men-deploy satu Cloud Function, grafik hanya menampilkan permintaan GET di URI hello-monitor, tetapi Anda dapat memfilter rekaman aktivitas menurut metode HTTP (GET, POST, DELETE) menurut status HTTP (2XX, 3XX) atau menggunakan filter permintaan.
Buka Ringkasan 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. Anda bahkan dapat membandingkan nilai yang dihasilkan dengan dasar pengukuran waktu.

Jika berhasil menyiapkan rentang waktu yang benar dengan titik data yang cukup, Anda dapat membuat laporan yang menunjukkan perubahan latensi penting antara Cloud Function awal dan yang baru.


Laporan kustom tersebut dapat digunakan untuk mengetahui kapan masalah performa muncul dan untuk melacak indikator tingkat layanan (SLI), seperti latensi permintaan pengguna akhir.
8. Saatnya membersihkan resource
Codelab ini telah selesai.
Meskipun alat Cloud Functions dan Stackdriver adalah platform serverless yang tidak menimbulkan biaya saat tidak digunakan, jadilah pengguna cloud yang baik dan hapus Cloud Function Anda. Cukup pilih hello-monitor di Overview pada bagian Cloud Functions, lalu klik Delete.

9. Apa langkah selanjutnya?
Berikut beberapa bacaan lanjutan:
/