1. Giriş
Bu laboratuvarda, hata günlüklerini analiz ederek, sorunun temel nedenini belirleyerek ve nasıl düzeltileceğini bularak Cloud Functions işlevi dağıtımıyla ilgili sorunları gidermek için Google Cloud'da yapay zeka destekli bir ortak çalışan olan Gemini'ı kullanacaksınız.
Yapacaklarınız...
- İlgili Google API'lerini etkinleştirmek ve sağlanan koddan bir Cloud Functions işlevi oluşturmak da dahil olmak üzere ortamı kurmak için Cloud Shell Terminal'i ve gcloud KSA'yı kullanacaksınız
- Yakalanan bilgileri anlamak amacıyla günlük özetleri oluşturmak için Cloud Logging günlük özetini kullanacaksınız.
- Sorunun giderilmesi ve çözülmesi konusunda Gemini ile yardım almak için Gemini ile sohbet edeceksiniz.
Öğrenecekleriniz...
- Gemini'ı Google Cloud Gözlemlenebilirlik ile kullanma ve sorunları giderme.
- Gemini'ın yardımıyla Cloud Functions işlevi günlüklerini bulma ve anlama
Gerekenler...
- Chrome web tarayıcısı
- Faturalandırmanın etkin olduğu bir Google Cloud projesi
- API'leri etkinleştirmenize ve kaynakları manipüle etmenize olanak tanıyan, projeye erişim izinlerine sahip bir Google Hesabı
Bu laboratuvar, yeni başlayanlar dahil olmak üzere her düzeyden DevOps ve platform mühendisleri ile yazılım geliştiricilerine yöneliktir. Odaklanacağımız nokta, Gemini'ın sorun gidermeyle ilgili olanaklarını uygulamalı olarak deneyimlemek olacak.
2. Kurulum
Bu bölümde, bu laboratuvara başlamak için yapmanız gereken tüm işlemler ele alınmaktadır.
Ortamı yapılandırma
1. https://console.cloud.google.com adresinden Cloud Console'a giriş yapın.
2. Bu laboratuvarda çalışmayı planladığınız Google Cloud projesini seçin.
3. Console'da Cloud Functions sayfasını açın. Bunu, gezinme menüsünden Cloud Functions'ı seçerek yapabilirsiniz (Konsol penceresinde sol üstteki simge uygulanır).
Alternatif olarak "bulut işlevleri" için de arama yapabilirsiniz yazın:
fonksiyon listesinin en üstündeki İşlev Oluştur düğmesini tıklayın
Bu projede daha önce Cloud Functions'ı kullanmadıysanız çalışmanız için Google API'lerini etkinleştirmeniz istenir.
Devam etmek için ETKİNLEŞTİR'i tıklayın.
4. Yeni Cloud Functions işlevinin temel özelliklerini tanımlayın.
- Adı "
codelab-cf
" olarak ayarla - Kimliği doğrulanmayan çağrılara izin ver seçeneğini belirleyin
Adımı tamamlamak için pencerenin sol alt bölümündeki SONRAKİ düğmesini tıklayın:
İLERİ'yi tıkladıktan sonra, ek Google API'lerini etkinleştirmeniz istenebilir. 4. adımda olduğu gibi ETKİNLEŞTİR'i tıklayın.
Cloud Functions işlevinin çalışma zamanını ve kodunu ayarlama
Bu CodeLab, programlama dili olarak Python'u kullanır. Python'a aşina değilseniz endişelenmeyin. Bu CodeLab'i tamamlamak için Python bilgisine ihtiyacınız yoktur.
5. İşlevin Çalışma Zamanı olarak Python 3.11'i seçme
Çalışma zamanı değişikliğinin, Satır İçi Düzenleyici'de gösterilen kaynak kodunu değiştirdiğini unutmayın.
6. Otomatik oluşturma hızlı başlangıç örneğini değiştirmek için aşağıdaki kodu Satır İçi Düzenleyici'ye kopyalayın.
from google.cloud import storage
import json
import re
client = storage.Client()
def get_object_list(request):
if request.args and 'path' in request.args:
path = request.args['path']
else:
return '{}'
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
bucket, prefix = parsed.group(1), parsed.group(2)
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
objects = []
if (blobs):
for blob in blobs:
objects.append(blob.name)
return json.dumps(objects)
Bu kod, GET isteğindeki path
özelliğini okur, paket adını almak için yolu ayrıştırır ve bu yolda depolanan nesnelerin listesini almak için Google Cloud Storage API'yi çağırır. İşlev (get_object_list
), giriş bağımsız değişkeni olarak Flask nesnesi olan isteği kabul eder ve nesnelerin adlarını bir JSON dizisi olarak döndürür.
7. Satır içi düzenleyicide kalan dosya listesinden requirements.txt
dosyasını seçin. Aşağıdaki kodu satır içi düzenleyiciye kopyalayarak mevcut bağımlılık listesini yenisiyle değiştirin.
google-cloud-storage
8. Cloud Functions işlevini dağıtmak için sol alttaki DAĞIT'ı tıklayın.
Dağıtım işleminin tamamlanması için birkaç dakika beklemeniz gerekebilir. Kurulum talimatlarını dikkatli bir şekilde uyguladıysanız dağıtımın başarısız olduğu raporlandığını görürsünüz.
3. Sorunu bulma ve çözme
Bu bölümde, sorunu tespit etmek ve çözmek için Günlük açıklamaları özelliğini ve diğer Gemini yardımlarını kullanacaksınız.
1. Dağıtım başarısız oluyor. Bu konuyla ilgili olarak ek bilgi ve dağıtım günlüklerini görüntüleme seçeneğini içeren bir hata mesajı gösterilir. Dağıtımın günlüklerini görüntülemek için GÜNLÜKLERİ GÖSTER'i tıklayın.
Dağıtım günlüklerinin aynı tarayıcıda ayrı bir sekmede açılacağını UNUTMAYIN. Bu CodeLab'i tamamlamak için sekmeler arasında gezinmeniz gerekir.
GÜNLÜKLERİ GÖSTER'i tıkladığınızda günlük satırları görmeyebileceğiniz veya yalnızca birkaç satır görmeyebileceğinizi unutmayın. Böyle bir durumda, Günlük gezgininin sorgu bölmesinde yer alan zaman aralığı seçiciyi kullanın ve Son 30 dakika'yı seçin.
2. Açılan sekmedeki günlükleri inceleyin. Günlük özetlerinin, istisna çağrı yığınının birden çok satırı gibi göründüğüne dikkat edin. Bunun nedeni, Cloud Functions işlevinin stdout
veya stderr
hizmetine yazdırılan metinleri yakalayıp her satırı ayrı günlük girişi olarak yazmasıdır. Diğer günlük satırlarında, çıkış hata koduyla ilgili bilgilerin yanı sıra Cloud Functions ve Cloud Run API'leri tarafından bildirilen ek bilgiler de özetlenir.
Belirli bir günlükle ilgili daha fazla bilgi görmek için satırlardan birini tıklayabilirsiniz. Genişletilmiş günlüklerde ek kullanıcı arayüzü öğeleri tıklandığında günlükle ilgili tüm bilgileri kopyalayabilir, günlük girişinin tüm verilerini görüntülemek için tüm alanları genişletebilir ve günlük girişini Gemini kullanarak açıklayabilirsiniz.
4. İstisna çağrı yığını çok bilgilendirici değil. İstisnaya ait yığın izleme günlüğünün sonunu bulmak için günlükleri inceleyin. "Container called exit(1)
" yazan satır. Aşağıdaki günlük özetinde şunlar belirtilmektedir:
functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...
Araştırma için iyi bir aday gibi görünüyor. Günlük girişini genişletmek için bu satırı tıklayın. Ardından, "Bu günlük girişini açıkla" seçeneğini tıklayın. düğmesini tıklayın.
Gemini daha önce bu projede kullanılmadıysa gerekli bir API'yi etkinleştirmeniz istenir. API'yi etkinleştirmeniz istenirse devam etmek için ETKİNLEŞTİR'i tıklayın.
Gemini'ı isterken zaman zaman hata alabileceğinizi DEVAM ETMEYİN. Böyle bir durumda, yanıtı almak için istem işleminizi bir kez daha tekrarlayın. Örneğin, "Bu günlük girişini açıkla" seçeneğini tıklayın. tekrar tıklayın.
5. Yoruma dair açıklama, Gemini tarafından sağlanmıştır. Verilen açıklama yeterli değilse veya net değilse aşağıdaki istemlerden birini kullanarak ya da kendi sorunuzu oluşturarak Gemini'dan daha fazla bilgi vermesini isteyin
Bu günlükle ilgili daha fazla bilgi verebilir misiniz?
Hata hakkında daha fazla bilgi verebilir misiniz?
6. Ardından, Gemini'dan sorunu çözmeyle ilgili öneride bulunmasını isteyin. Örneğin, Gemini'a şöyle sorun:
Bu sorun nasıl çözülür?
Bu hata için çözüm önerin
Bu hatayı nasıl düzeltebileceğim konusunda öneride bulunun
Gemini'ın yanıtı geçerli bağlama ve isteminizin ifadesi ile biçimine bağlı olarak değişiklik gösterebilir. Gemini'ın, Cloud Functions işlevinin kaynak kodunun hello_http
adlı bir işleve sahip olduğundan emin olmanızı önermesi beklenir.
7. Şu anda Cloud Functions günlüklerini gösteren sekmeyi görüyorsunuz. Hata içeren Cloud Functions dağıtım sayfasını gösteren önceki sekmeyi seçip DÜZENLE'yi tıklayın.
8. Kimlik doğrulamanın hâlâ Kimliği doğrulanmayan çağrılara izin ver olarak ayarlı olduğunu onaylayın ve gerekirse seçimi güncelleyin.
9. Satır içi düzenleyiciyi görmek için alt kısımdaki İLERİ'yi tıklayın. Gemini önerisini uygulayın ve get_order_list
olan işlev adını hello_http
olarak değiştirin.
Düzenlemeyi bitirdikten sonra DAĞIT'ı tıklayın.
Dağıtım işleminin tamamlanması için birkaç dakika beklemeniz gerekebilir. Dağıtımın başarıyla tamamlandığını ve hata mesajının görünmediğini onaylayın.
Dağıtım işlemi tamamlanana kadar Console'un en son hata mesajını göstermeye devam edebileceğini UNUTMAYIN.
10. curl
ile aşağıdaki HTTPS isteğini göndererek Cloud Functions işlevinin çalıştığından emin olun. Cloud Shell'i kullanabilir veya bu işlemi curl
ve gcloud
CLI yüklü herhangi bir terminalden yapabilirsiniz.Cloud Shell terminalinden aşağıdaki komutu çalıştırın.
curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"
Bu komutu bir terminalden çalıştırmak için gcloud KSA'yı kullanarak kimlik doğrulaması yapmanız ve proje kimliğinizin değerini GOOGLE_CLOUD_PROJECT
ortam değişkenine ayarlamanız gerektiğini unutmayın.
Bonus
hello_http
işlevinin adı, Python çalışma zamanı seçildiğinde HTTP tarafından tetiklenen Cloud Functions işlevi için varsayılan giriş noktası olarak tanımlanmıştır. Alternatif çözüm, kaynak kodunda işlevin adı olarak get_order_list
değerini tutmak ve Satır İçi Düzenleyici'nin üzerinde bulunan Cloud Functions işlevinin giriş noktası alanını Çalışma Zamanı alanında sağ tarafta güncellemek olabilir:
hello_http
olan giriş noktasını get_order_list
olarak değiştirmek dağıtımla ilgili sorunu çözer.
4. Temizleme
Temizlemek için projeyi kapatabilir veya Cloud Functions işlevi örneğini silebilirsiniz. Console'u kullanarak veya aşağıdaki gibi bir CLI komutu kullanarak Cloud Functions'ı silebilirsiniz:
gcloud functions delete codelab-cf --region=us-central1
5. Tebrikler!
Tebrikler. Gemini'ı uygulamanızla ilgili sorunu gidermek ve çözmek için başarıyla kullandınız ve artık günlükleri anlama ve Google Cloud ile ilgili sorulara yanıt alma konusunda Gemini'ın nasıl yardımcı olabileceğini anladınız.