1. Giriş
Bu codelab'de, Cloud Functions ile çalışan tüm geliştiricilerin kullanımına sunulan günlük kaydı ve izleme araçlarından nasıl yararlanacağınızı öğreneceksiniz. Bu araçlar, desteklenen tüm dillerde dağıttığınız tüm Cloud Functions işlevleriyle birlikte sunulur. Bu araçlar, sunucusuz kodunuzu yazıp çalıştırırken daha üretken olmanızı sağlayacaktır.
HTTP tetiklenmiş bir Cloud Functions işlevi kullanırsınız. Ancak ele aldığınız her şey, diğer diller ve başka etkinlikler tarafından tetiklenen Cloud Functions işlevleri için de geçerlidir.
2. Kurulum ve şartlar
Kendi hızınızda ortam kurulumu
- Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)
Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID
olarak adlandırılacaktır.
- Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları 300 ABD doları ücretsiz deneme programından yararlanabilir.
Cloud Shell
Cloud Functions ile birlikte günlük kaydı ve izleme özellikleri dizüstü bilgisayarınızdan uzaktan kullanılabilir. Ancak Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanırsınız.
Bu Debian tabanlı sanal makine, ihtiyacınız olan tüm geliştirme araçlarıyla yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Yani bu codelab'de ihtiyacınız olan tek şey bir tarayıcıdır (Evet, Chromebook'ta çalışır).
- Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir
simgesini tıklamanız yeterlidir (sağlanması ve ortama bağlanması yalnızca birkaç dakika sürer).
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin PROJECT_ID
olarak ayarlanmış olduğunu göreceksiniz.
gcloud auth list
Komut çıkışı
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Herhangi bir nedenle proje ayarlanmamışsa şu komutu vermeniz yeterlidir:
gcloud config set project <PROJECT_ID>
PROJECT_ID
cihazınızı mı arıyorsunuz? Kurulum adımlarında kullandığınız kimliği kontrol edin veya Cloud Console kontrol panelinden arayın:
Cloud Shell bazı ortam değişkenlerini de varsayılan olarak ayarlar. Bu değişkenler, gelecekte komut çalıştırdığınızda işinize yarayabilir.
echo $GOOGLE_CLOUD_PROJECT
Komut çıkışı
<PROJECT_ID>
- Son olarak, varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın.
gcloud config set compute/zone us-central1-f
Çeşitli farklı alt bölgeler seçebilirsiniz. Daha fazla bilgi için Bölgeler ve Bölgeler.
3. Basit bir Cloud Functions işlevi dağıtma
İzlemek istediğiniz bir şey olması için bir "Hello, World" oluşturun Cloud Functions işlevi görür. Google Cloud Console'un sol menüsünden Cloud Functions'ı, ardından İşlev Oluştur'u tıklayın.
"hello-monitor" yazın Cloud Functions işlevinizin adı olarak belirleyin.
Kaynak kodu için tüm varsayılan değerleri koruyun. (Ancak isterseniz farklı bir dil/çalışma zamanı seçebilirsiniz.)
Son olarak Oluştur'u tıklayın.
Cloud Functions işlevinizin yanında yeşil bir onay işareti bulunur. Bu, çağrılmaya hazır olduğu anlamına gelir.
4. Cloud Functions işlevini test etme ve yük oluşturucu kullanarak trafik gönderme
Cloud Functions işlevi başarıyla dağıtıldığına göre komut satırından test edebilirsiniz.
İlk olarak, Cloud Shell'i kullanarak aşağıdaki komutu kullanın:
$ gcloud functions describe hello-monitor
Bu açıklama, Cloud Functions işlevini çağırmak için HTTP(S) uç noktası olan httpsTrigger
URL'si de dahil olmak üzere Cloud Functions işlevinin açıklamasını döndürmelidir. Şu şekilde görünmelidir: https://<region>-<proje-kimliği>.cloudfunctions.net/hello-monitor.
Artık Cloud Functions işlevini tetiklemek, söz konusu URL'de curl
komutunu kullanmak kadar basit olmalıdır.
$ curl https://<region>-<project-id>.cloudfunctions.net/hello-monitor Hello World!
Şimdi basit bir HTTP yük testi aracı olan Vegeta'yı kullanın. Yüklemek için Cloud Shell'den şu komutu yazmanız yeterlidir :
$ go get -u github.com/tsenart/vegeta
Cloud Functions işlevinize trafik göndermek için (birkaç dakika boyunca saniyede beş istek) aşağıdaki komutu kullanın:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
5. Günlükler arasında gezinin
Cloud Functions işlevi ayrıntıları görünümünde Günlükleri Görüntüle'yi tıklayın.
Bu bağlantı, sizi projenizin yalnızca Cloud Functions günlüklerinizi gösteren Cloud Logging bölümüne yönlendirir.
Cloud Functions işlevinize gönderilen tüm istekler bir 200 durum kodu döndürür.
Günlükleri görüntülerken şunları yapabilirsiniz:
- Günlük düzeyine göre filtreleyin (sizin durumunuzda tüm günlükler
debug
düzeyindedir). - Belirli bir zaman aralığı seçin (göreli veya mutlak).
- Günlük akışını etkinleştirin (ekranın üst kısmındaki Oynat
simgesine dokunun).
- Günlük girişinin bağlantısını kopyalayın (ekip üyeleriyle paylaşmak için).
- Kaynak bağlamında günlük girişi gösterin.
- Bir günlük girişini (görsel işaret olarak) sabitleyin.
- Günlükleri BigQuery, Cloud Storage veya Pub/Sub'a aktarın (ya da JSON veya CSV dosyası olarak indirin).
6. İşlevi güncelleme
Cloud Console'u kullanarak İşlev ayrıntıları görünümüne gidin ve saniye başına çağrı sayısı ile yürütme süresinde yük test kullanıcınızla oluşturduğunuz ani artışı gözlemleyin.
Gecikmeyi ve RPC çağrılarını gözlemlemek için kullanılan bir diğer ayrıntılı araç da Stackdriver Trace'tir. Ancak bu aracı kullanmadan önce Cloud Functions'ınızda birkaç değişiklik yapmanız gerekir. Aşağıdakileri yapın:
- Hayat kurtaran
node-emoji
paketini bağımlılık olarak ekleyin. - Düğüm-emoji modülünü kullanmak için işlev kodunu güncelleyin ve biraz gecikme uygulayın.
- Cloud Functions için Cloud Trace'i etkinleştirmek üzere bir ortam değişkeni ekleyin.
İşlevi değiştirmek için İşlev ayrıntıları'ndan Düzenle'yi tıklayın.
node-emoji
paketine bağımlılık eklemek için package.json
dosyasını düzenleyin.
{
"name": "sample-http",
"version": "0.0.1",
"dependencies": {
"node-emoji": "^1.8.1"
}
}
index.js
içeriğini şu şekilde değiştirerek gerçek işlevi düzenleyin:
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
};
Bu sayede, 300 milisaniye boyunca durakladıktan sonra Cloud Functions işlevi tarafından döndürülen mesaja rastgele bir emoji eklenir.
Son olarak, GOOGLE_CLOUD_TRACE_ENABLED
adlı bir Cloud Functions işlevi ortam değişkeni ekleyin ve aşağıdaki gibi true
değerine ayarlayın:
Kaydet'i tıklayın.
Cloud Shell'e dönün ve yeni dağıtılan Cloud Functions işlevinde yük oluşturmak için şu komutu kullanın:
$ echo "GET https://<region>-<project-id>.cloudfunctions.net/hello-monitor" \ | vegeta attack -rate=5 -duration=120s \ > results.bin
Artık başka kurulum gereksinimleri olmadan ve kodunuzda belirli bir izleme kitaplığı olmadan üretilen izlerin listesini gözlemlemeye hazırsınız.
7. Güncellenen Cloud Functions işlevini izleme
Soldaki menüyü kullanarak Trace listesi'ne (Stackdriver Trace altında) gidin.
Aşağıdaki ekran görüntüsüne benzer bir şey görürsünüz:
Bu durum, Cloud Functions işlevinizde ortaya çıkan gecikmenin gerçekten 300 milisaniye olarak ölçüldüğünü açıkça ortaya koyar.
Grafikteki her nokta; zaman damgası, HTTP yöntemi ve durum, etiketler, ilgili günlük girişi bağlantısı ve Cloud Functions işlevinin yaptığı sonraki RPC çağrıları gibi ayrıntılı bilgileri görüntüleyebileceğiniz bir istektir.
Yakınlaştırmak isterseniz grafiği tıklayıp sürüklemeniz yeterlidir. .
Uzaklaştırmak için sayfanın üst tarafındaki Yakınlaştırmayı Geri Al seçeneğini tıklayın.
Tek bir Cloud Functions işlevi dağıttığınız için grafikte hello-monitor
URI'sinde yalnızca GET
istekleri gösterilir ancak izleri HTTP durumuna (2XX, 3XX) göre veya istek filtresini kullanarak HTTP yöntemine (GET, POST, DELETE) göre filtreleyebilirsiniz.
Sol taraftaki menüden Genel Bakış'a gidin:
Bu genel bakış sayfasında son izleri ve diğer analizleri bulabilirsiniz.
Ayrıca URI istek filtresi, HTTP yöntemi, HTTP durumu ve zaman aralığının kombinasyonuna dayalı özel raporlar oluşturabilirsiniz. Oluşturulan değerleri zaman temel çizgisiyle karşılaştırmanıza da olanak tanır.
Yeterli veri noktasıyla doğru zaman aralıklarını ayarlamayı başarırsanız ilk Cloud Functions işleviyle yenisi arasındaki önemli gecikme geçişini gösteren bir rapor oluşturabilirsiniz.
Bu tür bir özel rapor, bir performans sorununun ne zaman ortaya çıktığını bulmak ve son kullanıcı istek gecikmesi gibi bir hizmet düzeyi göstergesini (SLI) izlemek için kullanılabilir.
8. Kaynakları temizleme zamanı
Codelab'i tamamladınız.
Cloud Functions ve Stackdriver araçları, kullanılmadığında ücret gerektirmeyen sunucusuz platformlar olsa da iyi bir bulut vatandaşı olun ve Cloud Functions işlevinizi silin. Cloud Functions'ın altındaki Genel Bakış bölümünde hello-monitor
'yi seçip Sil'i tıklamanız yeterlidir.
9. Sırada ne var?
Aşağıda daha fazla bilgi verilmiştir:
/