1. Giriş
Bu codelab'de, mevcut hizmetleriniz için yapay izleme testleri oluşturmak üzere Yazmama Yardım Et özelliğini kullanmayı inceleyeceğiz.
Yapacaklarınız...
- Test edeceğimiz hizmetimizin temelini oluşturacak bir API'yi Google Cloud Run'a dağıtacaksınız.
- Ardından, Cloud Monitoring'in bir özelliği olan sentetik izleyici yazacaksınız.
- Sentetik izleyiciyi yazmak için "Yazmama yardım et" özelliğini kullanacaksınız.
Öğrenecekleriniz...
- Suni izlemenin ne olduğunu
- Temel hizmet işlevini doğrulayacak test senaryoları oluşturmak için Synthetic Monitoring'de Gemini'ın "Yazmama Yardım Et" özelliğini kullanma
İhtiyacınız olanlar...
- Chrome web tarayıcısı
- Gmail hesabı
- Faturalandırmanın etkin olduğu bir Cloud projesi
- Cloud projeniz için Gemini Code Assist'in etkinleştirilmesi
Bu laboratuvar, yeni başlayanlar da dahil olmak üzere her seviyeden geliştiriciye yöneliktir. Örnek uygulama Python dilinde olsa da neler olduğunu anlamak için Python programlamayı bilmeniz gerekmez.
2. Kurulum
Şimdi Google Cloud projemizde Cloud için Gemini'ı etkinleştireceğiz. Aşağıdaki adımları uygulayın:
- https://console.cloud.google.com adresini ziyaret edin ve bu laboratuvarda çalışmayı planladığınız Google Cloud projesini seçtiğinizden emin olun. Sağ üstte gördüğünüz Gemini'ı Aç simgesini tıklayın.

- Cloud için Gemini sohbet penceresi, konsolun sağ tarafında açılır. Aşağıda gösterildiği gibi Etkinleştir düğmesini tıklayın. Etkinleştir düğmesini görmeyip bunun yerine bir sohbet arayüzü görüyorsanız proje için Gemini for Cloud'u daha önce etkinleştirmiş olabilirsiniz. Bu durumda doğrudan sonraki adıma geçebilirsiniz.

- Etkinleştirildikten sonra Gemini for Cloud'a bir veya iki sorgu sorarak bu özelliği deneyebilirsiniz. Birkaç örnek sorgu gösterilmektedir ancak aşağıdaki sorguyu deneyebilirsiniz:
What is Synthetic Monitoring?

Cloud için Gemini, sorunuzun yanıtını verir. Google Cloud'da sentetik izleyicileri nasıl yazabileceğinizle ilgili referans belgelerin listesine göz atın.
Cloud için Gemini sohbet penceresini kapatmak üzere sağ üst köşedeki
simgesini tıklayabilirsiniz.
3. Google Cloud Run'da örnek bir Inventory API dağıtma
Testleri yazmaya başlamadan önce, test edebileceğimiz bir örnek API'ye ihtiyacımız olacak. Bu amaçla, Google Cloud Run'da dağıtacağımız basit bir envanter API'si yazacağız.
Tamamen yönetilen bir Code OSS tabanlı geliştirme ortamı olan Cloud Shell IDE'yi kullanacağız. Ortamda, Google Cloud hizmetleriyle çalışmayı verimli hale getiren Cloud Code IDE uzantısı bulunur. Aşağıdaki adımları uygulayın:
- ide.cloud.google.com adresini ziyaret edin. IDE'nin görünmesi biraz zaman alabilir. Lütfen bekleyin.
- Alt durum çubuğunda Cloud Code - Sign in (Cloud Code - Oturum aç) düğmesini tıklayın. Eklentiyi talimatlara uygun şekilde yetkilendirin. Durum çubuğunda "Cloud Code - no project" (Cloud Code - proje yok) ifadesini görürseniz bu ifadeyi ve ardından çalışmayı planladığınız projeler listesinden belirli bir Google Cloud projesini seçin.

- Gösterildiği gibi sağ alt köşedeki Gemini düğmesini tıklayın ve doğru Google Cloud projesini son bir kez daha seçin. Cloud AI Companion API'yi etkinleştirmeniz istenirse lütfen etkinleştirin ve devam edin.
- Google Cloud projenizi seçtikten sonra, durum çubuğundaki Cloud Code durum mesajında projenizi görebildiğinizden ve sağ tarafta, durum çubuğunda Code Assist'in etkinleştirildiğinden emin olun (aşağıdaki resimde gösterildiği gibi).

- Aşağıdaki durum çubuğunda Google Cloud proje adını tıklayın.

- Bir seçenek listesi gösterilir. Aşağıdaki listeden Yeni Uygulama'yı tıklayın.

- Cloud Run uygulamasını seçin.
- Python (Flask): Cloud Run uygulama şablonunu seçin.
- Yeni uygulamayı tercih ettiğiniz konuma kaydedin.
- Başvurunuzun oluşturulduğunu onaylayan bir bildirim gösterilir ve başvurunuzun yüklendiği yeni bir pencere açılır (aşağıda gösterildiği gibi).
README.mddosyası açılır. Şimdilik bu görünümü kapatabilirsiniz.

- Gezgin'den
app.pydosyasını ziyaret edin ve aşağıdaki içeriklerle değiştirin:
from flask import Flask, jsonify, request
app = Flask(__name__)
inventory = [
{
'id': 1,
'name': 'Item 1',
'quantity': 10
},
{
'id': 2,
'name': 'Item 2',
'quantity': 20
},
{
'id': 3,
'name': 'Item 3',
'quantity': 30
}
]
@app.route('/inventory', methods=['GET'])
def get_inventory():
return jsonify(inventory)
@app.route('/inventory/<int:id>', methods=['GET'])
def get_inventory_item(id):
for item in inventory:
if item['id'] == id:
return jsonify(item)
return jsonify({'error': 'Item not found'}), 404
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)
- Envanter API'sini Cloud Run'a dağıtma zamanı geldi. Sol üstteki menü simgesini kullanarak Cloud Shell IDE'den yeni bir Terminal oturumu başlatmamız gerekir. Menü simgesini ve ardından aşağıdaki resimde gösterildiği gibi Terminal → Yeni Terminal'i tıklayın:

- Terminal oturumunda aşağıdaki komutu verin:
gcloud run deploy --source .
- Yukarıdaki komut, dağıtılacak bir
regionhakkında soru sorar. Lütfenus-central1seçeneğini belirleyin.unauthenticated invocationsuygulamasının kullanılmasına izin vermeniz istenir. Lütfenydiyerek izin verin. - Hizmet başarıyla dağıtıldıktan sonra bir hizmet URL'si sağlar. Bunu not edin.
4. Inventory API'yi test etme
Artık tarayıcıyı başlatıp aşağıdaki uç noktalara giderek Envanter API'sini test edebilirsiniz:
SERVICE_URL/inventory
Bu işlem, hizmetteki örnek verilere göre 3 envanter öğesi döndürmelidir. Örnek yanıt aşağıda verilmiştir:
[
{
"id": 1,
"name": "Item 1",
"quantity": 10
},
{
"id": 2,
"name": "Item 2",
"quantity": 20
},
{
"id": 3,
"name": "Item 3",
"quantity": 30
}
]
Artık aşağıdaki URL aracılığıyla belirli bir envanter öğesini alabiliriz. Bu işlem, id değeri 1 olan envanter öğesini döndürmelidir.
SERVICE_URL/inventory/1
Yanıt aşağıdaki gibi olmalıdır:
{
"id": 1,
"name": "Item 1",
"quantity": 10
}
Son olarak, mevcut olmayan bir envanter öğesini almaya çalışabiliriz.
SERVICE_URL/inventory/200
id değeri 200 olan bir stok öğesi olmadığından bu işlem hata mesajı döndürmelidir. Yanıt aşağıdaki gibi olmalıdır:
{
"error": "Item not found"
}
Artık Gemini'ın yardımıyla Cloud Monitoring'de sentetik izleme testlerimizi yazmaya hazırız.
5. Google Cloud'da sentetik izleme
Belgelerde belirtildiği gibi, sentetik izleyiciler test edeceğiniz öğeleri ve test sırasını tanımlamanıza olanak tanır. Örneğin, uygulamanızın giriş sayfasını, e-ticaret mağazanızın ödeme sürecini veya uygulamanızın üçüncü taraf hizmetlerine yaptığı API çağrılarını test edebilirsiniz.
Sentetik izleyici oluşturduğunuzda Cloud Run üzerinde oluşturulmuş bir 2. nesil Cloud Functions işlevi dağıtırsınız. İşleviniz Node.js'de yazılmalı ve açık kaynaklı Synthetics SDK çerçevesini kullanmalıdır. Cloud Monitoring bu çerçeveyi dağıtır ve yönetir.
Cloud Monitoring aşağıdaki sentetik izleyici türlerini destekler:
- Özel veya Mocha tabanlı sentetik izleyiciler, tamamen yapılandırılabilir tek amaçlı bir Cloud Function dağıtmanıza olanak tanır.
- Bozuk bağlantı denetleyicileri, önceden yapılandırılmış bir Cloud Functions işlevini dağıtmadan önce kaynak URI, test edilen bağlantı sayısı ve yeniden deneme sayısı gibi seçenekleri belirtmenize olanak tanır.
Cloud Monitoring, bu sentetik izleyicileri yürütürken çok fazla iş yapar. Aşağıdakilerden sorumludur:
- Cloud Functions işlevinizin düzenli olarak yürütülmesi.
- Her yürütmenin sonuçlarını toplama ve depolama:
- Hata mesajı, hata türü ve kod satırı gibi başarı ve hata bilgileri
- Yürütme süresi
- Günlükler
- Metrikler
Testler için ilk kodu bize sağlayacak olan Help Me Write özelliğinden yararlanarak bu kodu test etmek ve üzerine ek özellikler geliştirmek istiyoruz. Haydi başlayalım.
6. Envanter API'si test senaryoları için sentetik monitörümüzü yazma
Şimdi sentetik izleyicimizi yazmak için Cloud Console'a gidiyoruz.
Cloud Console'da Sentetik İzleme sayfasını ziyaret edin. Bu işlem, sayfayı aşağıda gösterildiği gibi açar:

Yukarıdaki sayfada CREATE SYNTHETIC MONITOR (SENTETİK İZLEME OLUŞTUR) bağlantısını tıklayın. Bu işlem, aşağıda gösterildiği gibi bir yapılandırma formu açar:

s1 adını verdik ancak başka bir ad da seçebilirsiniz. Yukarıdaki ekranda KOD YAZMAMA YARDIM ET düğmesine dikkat edin. Bu öğeyi tıklayın.
Bu işlemle, Envanter API'sinin düzgün çalıştığından emin olmak için yürütmek istediğiniz test senaryolarını açıklayan istemi girmeniz gereken bir pop-up açılır.

İstem düzenleme kutusunda, aşağıda verilen istem gibi bir istem kullanın:
Help me write Node.js based synthetic test script with the assert module that performs the following tests:
1. A GET operation on SERVICE_URL/inventory. The http response code returned should be 200.
2. A GET operation on SERVICE_URL/inventory/1. The http response code returned should be 200. The response data is JSON format. It should be a single object with attributes as follows: "id" value should be 1, "name" value should be "Item 1" and "quantity" value should be 10.
3. A GET operation on SERVICE_URL/inventory/200. The https response code returned should be 404. The response data is in JSON format. It should be a single object with attributes as follows: "error" value should be "Item not found".
3 test durumu sağladığımızı ve SERVICE_URL değerini hizmetiniz için gerçek Cloud Run hizmeti adıyla değiştirmeniz gerektiğini unutmayın.
OLUŞTUR'u tıkladığınızda Gemini, Test Paketi kodunu ve package.json dosyasını aşağıdaki örnekte gösterildiği gibi oluşturur. Sizin için oluşturulan kod, aşağıda gördüğünüz koddan farklı olabilir. package.json dosyasındaki koda ve bağımlılık dosyalarına göz atın.

INSERT INTO CLOUD FUNCTION'ı (CLOUD FUNCTION'A EKLE) tıklayın. Bu işlem, gerekli değerlerin sizin için doldurulduğu bir Cloud Functions oluşturma formu açar.

İŞLEVİ UYGULA'yı ve ardından OLUŞTUR düğmesini tıklayın. Bu örnekte herhangi bir uyarı kanalı yapılandırması seçmedik ancak siz bunu seçebilirsiniz.
Bu işlem, Google Cloud Functions işlevini arka planda oluşturma sürecini başlatır. Bu işlem birkaç dakika sürebilir, lütfen bekleyin.

Cloud Functions işlevi başarıyla dağıtıldıktan sonra Cloud Monitoring, sizin için sentetik izleyiciyi çağırma görevine başlar.
Başlangıçta, aşağıda gösterildiği gibi herhangi bir çağrı olmadığını görürsünüz:

Belirli çalıştırmalar olduğunda çeşitli yürütmeleri görebilirsiniz. Aşağıdaki ekranda testlerin başarılı olduğu gösterilmektedir:

Sentetik izleyici adını (ör. s1) tıkladığınızda, aşağıda gösterildiği gibi çeşitli yürütmeler gösterilir:

7. Tebrikler!
Tebrikler! Google Cloud Run'a örnek bir API'yi başarıyla dağıttınız ve hizmetin işlevselliğini doğrulamak için sentetik izleme testleri yazdınız. Bu süreçte, Test Paketi'nin kodunu oluşturmak için Gemini'dan yardım aldınız.