Bu codelab hakkında
1. Giriş
Son güncelleme: 21 Haziran 2023
Müsaitlik Durumu İçin Çalışma Denetimleri Hakkında Uyarı
Çalışma denetimleriyle ilgili uyarılar, hizmetlerinizi etkiliyor olabilecek sorunları hızlı bir şekilde belirleyip çözmenize olanak tanır. Kesintiler konusunda uyarı alarak, kullanıcılarınız ve müşterileriniz üzerindeki etkiyi en aza indirecek adımlar atabilirsiniz.
Çalışma Denetimleri, en kısa olan 60 saniye olmak üzere aralıklarla gerçekleştirilir. 60 saniyeden daha fazla ayrıntıya ihtiyacınız varsa ek bir kullanılabilir olmama göstergesi olarak günlük tabanlı uyarılar aracılığıyla hata kodlarını dinamik etkinlik olarak izlemek de yararlı olabilir. Çalışma denetimleri, 60 saniyelik veya daha uzun bir aralık kabul ediliyorsa çok az ek yapılandırmayla hizmetinizi ölçmenin kolay bir yoludur.
Bir hizmet kullanılamadığında çalışma denetimi, trafik olmasa bile sorunu algılar. Diğer yandan trafik; bakım, yükseltmeler ve hatta kötü hava koşulları ya da kullanımı dağıtan spor etkinlikleri gibi sistem dışındaki faktörler gibi faktörlerden etkilenebilir.
Çalışma denetimlerini ne zaman kullanacağınız hakkında daha fazla bilgi için lütfen Google Cloud kaynaklarınızın çalışır durumda kalmasını sağlama başlıklı makaleyi inceleyin.
Uyarı Bildirimi Kanalı olarak Pub/Sub Konuları
Pub/Sub konuları, Pub/Sub aboneliğine uyarı göndermek için Google Cloud Monitoring bildirim kanalı olarak kullanılabilir. Bu sayede Cloud Monitoring uyarılarınızı, üçüncü taraf bildirim hizmetleri de dahil olmak üzere diğer sistemlerle entegre edebilirsiniz.
Bir Pub/Sub konusunu bildirim kanalı olarak kullanmak için önce bir Pub/Sub konusu ve bir Pub/Sub aboneliği oluşturmanız gerekir. Ardından, hedef olarak Pub/Sub konusunu kullanan bir Cloud Monitoring bildirim kanalı oluşturmanız gerekir.
Bir uyarı tetiklendiğinde Cloud Monitoring, Pub/Sub konusuna bir mesaj gönderir. Ardından Pub/Sub aboneliğinin abonesi mesajı işleyip uygun işlemi yapabilir.
Oluşturacaklarınız
Bu codelab'de, Pub/Sub konusunu bildirim kanalı olarak kullanan uygulama için uygulama dağıtacak, Pub/Sub konusu ve çalışma denetimi uyarısı oluşturacaksınız.
Neler öğreneceksiniz?
- Pub/Sub konusu nasıl oluşturulur?
- Çalışma denetimi ve uyarısı oluşturma
Bu codelab, çalışma denetimi için uyarı oluşturmaya odaklanmıştır. Alakalı olmayan kavramlar ve uygulama kodu, herhangi bir açıklamanın üzerinden geçmiştir ve kolayca kopyalayıp yapıştırmanız için size sunulur.
Gerekenler
- Aşağıdaki izinlere sahip bir Google Cloud hesabı:
- Cloud Run uygulamalarını dağıtma
- Pub/Sub konuları oluşturma
- Çalışma denetimleri oluştur
- Uyarı oluşturma
2. Kurulum
Bir Google Cloud projesi seçin veya oluşturun
Mevcut bir projeyi seçmek için açılır listeyi kullanın:
Google Cloud'da yeni bir proje oluşturmak için şu adımları uygulayabilirsiniz:
- Google Cloud Platform Console'a gidin.
- Proje Oluştur düğmesini tıklayın.
- Projeniz için bir ad girin.
- Projeniz için bir faturalandırma hesabı seçin.
- Oluştur düğmesini tıklayın.
Projeniz oluşturulur ve proje kontrol paneline yönlendirilirsiniz. Buradan Google Cloud hizmetlerini kullanmaya başlayabilirsiniz.
Her adımla ilgili bazı ek ayrıntıları aşağıda bulabilirsiniz:
- Ad: Projenizin adı, kuruluşunuz içinde benzersiz olmalıdır.
- Faturalandırma hesabı: Mevcut bir faturalandırma hesabını kullanabilir veya yeni bir hesap oluşturabilirsiniz.
- Oluştur: Gerekli tüm bilgileri girdikten sonra projenizi oluşturmak için Oluştur düğmesini tıklayın.
Daha fazla bilgi için lütfen proje oluşturma hakkındaki Google Cloud belgelerini inceleyin.
3. API Uygulamasını Dağıtma
Örnek uygulama veya API ne hakkında?
Uygulamamız, envanter öğelerini listelemek ve belirli öğe envanteri sayısını almak için birkaç işlemle REST API Uç Noktası kullanıma sunan basit bir Inventory API uygulamasıdır.
API'yi dağıttıktan ve https://<somehost> adresinde barındırıldığı varsayıldığında, API uç noktalarına aşağıdaki şekilde erişebiliriz:
https://<somehost>/inventory
Bu işlem, mevcut envanter seviyelerine sahip tüm ürün öğelerini listeler.
https://<somehost>/inventory/{productid}
Bu işlem, söz konusu ürün için ürün kimliği ve mevcut envanter düzeyini içeren tek bir kayıt sağlar.
Döndürülen yanıt verileri JSON biçimindedir.
Not: Bu API uygulaması yalnızca demo amaçlıdır ve güvenli ve sağlam bir API uygulamasını temsil etmez. Laboratuvarın Google Cloud Operations gibi temel amacı hakkında bilgi edinmek için hızlıca kullanabileceğimiz bir uygulamaya sahip olmak istiyoruz.
Örnek Veriler ve API İsteği/Yanıtı
İşleri basitleştirmek adına uygulama, arka uçtaki bir veritabanı tarafından desteklenmemektedir. 3 örnek ürün kimliği ve bunların hazır envanter düzeylerini içerir.
Ürün No | Hazır Envanter Düzeyi |
I-1 | 10 |
I-2 | 20 |
I-3 | 30 |
Örnek API İsteği ve Yanıtı aşağıda gösterilmiştir:
API İsteği | API Yanıtı |
https://<somehost>/inventory | [ { "I-1": 10, "I-2": 20, "I-3": 30 }] |
https://<somehost>/inventory/I-1 | { "productid": "I-1", "qty": 10} |
https://<somehost>/inventory/I-2 | { "productid": "I-2", "qty": 20} |
https://<somehost>/inventory/I-200 | { "productid": I-200, "qty": -1} |
Depoyu klonlama
Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
GCP Console'da, sağ üstteki araç çubuğunda yer alan Cloud Shell simgesini tıklayın:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
Bu sanal makinede, ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla yapabilirsiniz.
gcloud'u kurun
Cloud Shell'de proje kimliğinizi ayarlayın ve PROJECT_ID değişkeni olarak kaydedin.
PROJECT_ID=[YOUR-PROJECT-ID]
gcloud
config
set
project
$PROJECT_ID
Şimdi aşağıdaki komutu yürütün:
$
git
clone
https://github.com/rominirani/cloud-code-sample-repository.git
Bu işlem sonucunda bu klasörde "cloud-code-sample-repository" başlıklı bir klasör oluşturulur.
(İsteğe bağlı) Uygulamayı Cloud Shell'de çalıştırın
Aşağıdaki adımları uygulayarak uygulamayı yerel olarak çalıştırabilirsiniz:
- Terminalden aşağıdaki komutu kullanarak API'nin Python sürümüne gidin:
$
cd
cloud-code-sample-repository
$
cd
python-flask-api
- Terminalde aşağıdaki komutu sağlayın (Yazma sırasında Cloud Shell'de Python 3.9.x yüklüdür ve varsayılan sürüm kullanılır. Dizüstü bilgisayarınızda yerel olarak çalıştırmayı planlıyorsanız Python 3.8+ kullanabilirsiniz) :
$
python
app.py
- Python sunucusunu yerel olarak başlatmak için aşağıdaki komutu çalıştırabilirsiniz.
8080 bağlantı noktasında Önizleme'yi tıklayın. 5. Bunu yaptığınızda bir tarayıcı penceresi açılır. Bir 404 hatası göreceksiniz ve bu durum normaldir. URL'yi değiştirin ve URL'yi, ana makine adından sonra yalnızca /inventory olacak şekilde değiştirin.
Örneğin, aşağıdaki gibi görünür:
https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory
Bu işlem, envanter öğelerinin listesini daha önce açıklandığı gibi gösterir:
- Terminal'e gidip Ctrl-C tuşlarına basarak sunucuyu durdurabilirsiniz.
Uygulamayı dağıtın
Şimdi bu API uygulamasını Cloud Run'a dağıtacağız. Bu süreçte, kodu Cloud Run'a dağıtmak amacıyla komutu çalıştırmak için gcloud komut satırı istemcisinin kullanılması gerekiyordu.
Terminalden aşağıdaki gcloud komutunu verin:
$ gcloud run deploy --source .
Bu kursta size birden çok soru sorulacak ve bazı noktalara aşağıda değinilecektir:
- Hizmet adı (python-flask-api): Bu varsayılan ayarı kullanın veya my-inventory-api gibi bir ad seçin
- API [run.googleapis.com], [613162942481] projesinde etkinleştirilmedi. Etkinleştirmek ve yeniden denemek istiyor musunuz (bu işlem birkaç dakika sürer)? (e/H)? Y
- Lütfen bir bölge belirtin: 31'i seçin (us-west-1)
- API [artifactregistry.googleapis.com], [613162942481] projesinde etkinleştirilmemiş. Etkinleştirmek ve yeniden denemek istiyor musunuz (bu işlem birkaç dakika sürer)? (e/H)? Y
- Kaynaktan dağıtım yapmak için derlenen container'ları depolamak üzere bir Artifact Registry Docker deposu gerekir. [us-west1] bölgesinde [cloud-run-source-deploy] adlı bir depo oluşturulacak.
- Devam etmek istiyor musunuz (E/H)? Y
- [my-inventory-api] (y/N) yöntemine yapılan kimliği doğrulanmamış çağrılara izin verilsin mi? Y
Sonuç olarak kaynak kodunuzu alma, container mimarisine alma, Artifact Registry'ye aktarma ve Cloud Run hizmeti + düzeltmesini dağıtma işlemi başlar. Bu işlemin tamamlanması için sabırlı olmalısınız (3-4 dakika sürebilir). Ardından, size gösterilen Hizmet URL'si ile işlemin tamamlandığını göreceksiniz.
Aşağıda örnek bir çalıştırma gösterilmiştir:
Uygulamayı test etme
Uygulamayı Cloud Run'a dağıttığımıza göre API uygulamasına aşağıdaki şekilde erişebilirsiniz:
- Önceki adımdaki Hizmet URL'sini not edin. Örneğin, kurulumumda
https://my-inventory-api-bt2r5243dq-uw.a.run.app
olarak gösteriliyor. Buna<SERVICE_URL>
diyelim. - Bir tarayıcı açın ve API uç noktaları için aşağıdaki 3 URL'ye erişin:
<SERVICE_URL>/inventory
<SERVICE_URL>/inventory/I-1
<SERVICE_URL>/inventory/I-100
Bu, örnek API İsteği ve Yanıtı ile önceki bir bölümde sağladığımız spesifikasyonlara uygun olmalıdır.
Cloud Run'dan Hizmet Ayrıntılarını Alma
API Hizmetimizi, sunucusuz bilgi işlem ortamı olan Cloud Run'a dağıttık. Cloud Run hizmetini Google Cloud konsolu üzerinden istediğimiz zaman ziyaret edebiliriz.
Ana menüden Cloud Run'a gidin. Bu işlemle, Cloud Run'da çalıştırdığınız hizmetlerin listesi gösterilir. Az önce dağıttığınız hizmeti göreceksiniz. Seçtiğiniz ada bağlı olarak aşağıdakine benzer bir sonuç görürsünüz:
Ayrıntıları görüntülemek için Hizmet adını tıklayın. Örnek ayrıntıları aşağıda gösterilmektedir:
URL'ye dikkat edin. Bu URL, tarayıcıda açabileceğiniz ve az önce dağıttığımız Envanter API'sine erişebileceğiniz hizmet URL'sidir. Metriklere ve diğer ayrıntılara göz atın.
Şimdi Google Cloud Operations Suite ile başlayalım.
4. Uyarı Bildirimi Almak için Pub/Sub Konusu Oluşturma
Google Cloud Console'da şu adımları uygulayarak Pub/Sub konusu oluşturabilirsiniz:
- Arama kutusundan Pub/Sub'ı arayın ve Pub/Sub'a gidin.
- Henüz yapmadıysanız Konular sekmesini tıklayın.
- Konu Oluştur düğmesini tıklayın.
- Konunuz için bir ad girin.
- Oluştur düğmesini tıklayın.
- Kopyala simgesi düğmesini kullanarak Konu adı'nı kopyalayın. Sonraki bölümde bu bilgilere ihtiyacınız olacak.
5. Çalışma Denetimi Oluşturma
Bir Google Cloud Run uygulamasının çalışma denetimi oluşturmak için:
- Google Cloud Platform Console'a gidin.
- Monitoring sekmesini tıklayın.
- Çalışma Denetimleri sekmesini tıklayın.
- Sayfanın üst taraflarındaki Çalışma Denetimi Oluştur düğmesini tıklayın.
- Aşağıdaki değerleri kullanın:
- Protokol : HTTPS
- Kaynak türü : URL
- Ana makine adı : Cloud Run Hizmet URL'si kısmını https olmadan girin. Bir örneği aşağıdaki ekranda görebilirsiniz. Hizmet URL'sinin ne olduğundan emin değilseniz ana Google Cloud Console'dan Cloud Run'a gidin ve daha önce de açıklandığı gibi Cloud Run hizmetinin ayrıntılarına giderek Hizmet URL'sini alın.
- Yol : healthy
- Kontrol sıklığı: 1 dakika
- Devam et'i tıklayın.
- İçerik eşleştirme etkinleştirildi seçeneğini etkinleştirin.
- "All Izz Well"i girin Yanıt İçeriği altında; Bu dize tam yanıtlar gönderdiğinde zaten uygulamada mevcuttur.
- Keep
- Kabul Edilebilir HTTP Yanıt Kodu'nu Yanıt Kodu Sınıfları olarak ve tek yanıt kodu sınıfı olarak 2xx olarak ayarlayın. Böylece, dize için yalnızca 2xx içeren yanıt kodları değerlendirilir ve diğer her şey otomatik olarak başarısız bir kontrol olarak sayılır.
.
- Devam et'i tıklayın.
- Bildirim kanalı olarak Cloud Pub/Sub konusunu seçin ve Tamam'ı tıklayın.
- Devam et'i tıklayın.
- Tanınabilir bir başlık ekleyin
- Test et düğmesini tıklayın.
- İnceleyin ve hazır olduğunuzda Oluştur düğmesini tıklayın
Çalışma denetiminiz oluşturulur ve Cloud Run uygulamanızı izlemeye başlar. Çalışma denetiminizin durumunu Çalışma Denetimleri sekmesinde görebilirsiniz.
6. Tebrikler
Tebrikler, Çalışma Denetiminizi Pub/Sub'a uyarı gönderecek şekilde başarıyla yapılandırdınız.