1. Giriş
Son güncelleme: 21 Haziran 2023
Kullanılabilirlik için çalışma denetimlerinde uyarı
Çalışma denetimleriyle ilgili uyarılar, hizmetlerinizi etkileyebilecek sorunları hızlıca belirleyip çözmenize olanak tanır. Kesintiler konusunda uyarı alarak kullanıcılarınız ve müşterileriniz üzerindeki etkiyi en aza indirmek için gerekli adımları atabilirsiniz.
Çalışma süresi kontrolleri aralıklarla yapılır. En kısa aralık 60 saniyedir. 60 saniyeden daha ayrıntılı bilgiye ihtiyacınız varsa hata kodlarını, kullanılamama durumunun ek bir göstergesi olarak günlük tabanlı uyarılar aracılığıyla dinamik etkinlikler olarak da izlemek faydalı olabilir. 60 saniyelik veya daha uzun bir aralık kabul edilebilir bir süre ise çalışma denetimleri, hizmetinizi az ek yapılandırmayla ölçmenin kolay bir yoludur.
Bir hizmet kullanılamıyorsa çalışma süresi kontrolü, trafik olmasa bile sorunu algılar. Öte yandan trafik, bakım, yükseltme ve hatta sistem dışındaki faktörlerden (ör. kötü hava koşulları veya kullanımda dikkat dağıtan spor etkinlikleri) 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ışma süresini sağlama başlıklı makaleyi inceleyin.
Uyarı Bildirim Kanalı Olarak Pub/Sub Konuları
Pub/Sub konusu, bir 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.
Pub/Sub konusunu bildirim kanalı olarak kullanmak için önce bir Pub/Sub konusu ve 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. Pub/Sub aboneliğinin abonesi daha sonra mesajı işleyebilir ve uygun işlemi yapabilir.
Ne oluşturacaksınız?
Bu codelab'de bir uygulama dağıtacak, Pub/Sub konusu oluşturacak ve Pub/Sub konusunu bildirim kanalı olarak kullanan uygulama için çalışma süresi kontrolü uyarısı oluşturacaksınız.
Neler öğreneceksiniz?
- Pub/Sub konusu oluşturma
- Çalışma denetimi ve uyarı oluşturma
Bu codelab, çalışma denetimi için uyarı oluşturmaya odaklanmaktadır. Alakalı olmayan kavramlar ve uygulama kodu işaretlenmiştir ve yalnızca kopyalayıp yapıştırmanız için kullanımınıza sunulmuştur.
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. Hazırlanma
Google Cloud projesi seçme veya oluşturma
Mevcut bir projeyi seçmek için açılır listeyi kullanın:

Google Cloud'da yeni bir proje oluşturmak için aşağıdaki 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 ek bilgileri 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şturma: 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 Google Cloud'un proje oluşturma ile ilgili belgelerine bakın.
3. API uygulamasını dağıtma
Örnek uygulama veya API ne hakkında?
Uygulamamız, envanter öğelerini listeleyen ve belirli öğelerin envanter sayısını alan birkaç işlem içeren bir REST API uç noktası sunan basit bir Envanter API uygulamasıdır.
API'yi dağıttıktan sonra ve https://<somehost> adresinde barındırıldığını varsayarsak API uç noktalarına aşağıdaki gibi erişebiliriz:
https://<somehost>/inventory
Bu işlem, stoktaki envanter düzeyleriyle birlikte tüm ürün öğelerini listeler.
https://<somehost>/inventory/{productid}
Bu işlem, ürün kimliğini ve söz konusu ürünün stoktaki 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 temel amacını (Google Cloud Operations) keşfetmek için hızlı bir uygulama sunması amaçlanmıştır.
Örnek Veriler ve API İsteği/Yanıtı
Uygulama, işleri basit tutmak için arka uçta bir veritabanı tarafından desteklenmez. 3 örnek ürün kimliği ve bunların stoktaki envanter düzeylerini içerir.
Ürün No | Eldeki envanter seviyesi |
I-1 | 10 |
I-2 | 20 |
I-3 | 30 |
Örnek API isteğ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ılabilir. Ancak 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 Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyduğunuz tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla yapabilirsiniz.
gcloud'u ayarlama
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 çalıştırın:
$ git clone https://github.com/rominirani/cloud-code-sample-repository.git
Bu işlem, bu klasörde cloud-code-sample-repository adlı bir klasör oluşturur.
(İsteğe bağlı) Uygulamayı Cloud Shell'de çalıştırma
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 girin (Bu belge yazılırken Cloud Shell'de Python 3.9.x yüklüydü ve varsayılan sürüm kullanılacaktır. Dizüstü bilgisayarınızda yerel olarak çalıştırmayı planlıyorsanız Python 3.8+ sürümünü kullanabilirsiniz:
$ python app.py
- Python sunucusunu yerel olarak başlatmak için aşağıdaki komutu çalıştırabilirsiniz.

8080 numaralı bağlantı noktasında önizle'yi tıklayın. 5. Bu işlemle bir tarayıcı penceresi açılır. 404 hatası görürsünüz. Bu normaldir. URL'yi değiştirin ve ana makine adından sonra yalnızca /inventory olacak şekilde düzenleyin.
Örneğin, benim makinemde şöyle görünüyor:
https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory
Bu işlem, envanter öğelerinin listesini daha önce açıklandığı şekilde gösterir:

- Terminal'e gidip Ctrl-C tuşlarına basarak sunucuyu şimdi durdurabilirsiniz.
Uygulamayı dağıtın
Şimdi bu API uygulamasını Cloud Run'a dağıtacağız. Bu işlemde, kodu Cloud Run'a dağıtma komutunu ç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 işlemde size birden fazla soru sorulur. Bazı noktalar aşağıda belirtilmiştir:
- Hizmet adı (python-flask-api): Bu varsayılan adı kullanabilir veya my-inventory-api gibi bir ad seçebilirsiniz.
- API [run.googleapis.com], [613162942481] kimlikli projede etkinleştirilmedi. Etkinleştirip tekrar denemek ister misiniz? Bu işlem birkaç dakika sürer. (y/N)? Y
- Lütfen bir bölge belirtin: 31'i (us-west-1) seçin
- [artifactregistry.googleapis.com] API'si [613162942481] projesinde etkin değil. Etkinleştirip tekrar denemek ister misiniz? Bu işlem birkaç dakika sürer. (y/N)? Y
- Kaynaktan dağıtım için derlenen kapsayıcıları depolamak üzere bir Artifact Registry Docker deposu gerekir. [us-west1] bölgesinde [cloud-run-source-deploy] adlı bir depo oluşturulur.
- Devam etmek istiyor musunuz (E/h)? Y
- [my-inventory-api] için kimliği doğrulanmamış çağrılara izin verilsin mi? (y/N) Y
Sonuç olarak, bu işlem kaynak kodunuzu alıp container mimarisine alma, Artifact Registry'ye gönderme ve ardından Cloud Run hizmetini + düzeltmeyi dağıtma sürecini başlatır. Bu işlem sırasında sabırlı olmanız gerekir (3-4 dakika sürebilir). İşlem tamamlandığında hizmet URL'si gösterilir.
Örnek bir çalıştırma aşağıda gösterilmektedir:

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, benim kurulumumda
https://my-inventory-api-bt2r5243dq-uw.a.run.appolarak 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
Önceki bir bölümde örnek API isteği ve yanıtıyla birlikte 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. Google Cloud Console üzerinden Cloud Run hizmetini istediğimiz zaman ziyaret edebiliriz.
Ana menüden Cloud Run'a gidin. Bu işlem, Cloud Run'da çalıştırdığınız hizmetlerin listesini gösterir. Yeni dağıttığınız hizmeti görürsünüz. Seçtiğiniz ada bağlı olarak aşağıdakine benzer bir şey 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österilmiştir:

Tarayıcıya girip yeni dağıttığımız Inventory API'ye erişebileceğiniz hizmet URL'sinden başka bir şey olmayan URL'ye dikkat edin. Metrikleri ve diğer ayrıntıları inceleyin.
Şimdi Google Cloud Operations Suite'i kullanmaya başlayalım.
4. Uyarı Bildirimini Almak İçin Pub/Sub Konusu Oluşturma
Pub/Sub konusu oluşturmak için Google Cloud Console'da aşağıdaki adımları uygulayabilirsiniz:
- Arama kutusunda Pub/Sub araması yapın ve Pub/Sub'a gidin.

- Henüz orada değilseniz 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.

- Kopyalama simgesi düğmesini kullanarak Konu adını kopyalayın. Bu bilgiye sonraki bölümde ihtiyacınız olacak.

5. Çalışma denetimi oluşturma
Google Cloud Run uygulaması için çalışma denetimi oluşturmak üzere:
- Google Cloud Platform Console'a gidin.
- İzleme sekmesini tıklayın.
- Çalışma Süresi Kontrolleri sekmesini tıklayın.
- Sayfanın üst kısmına yakın yerde bulunan Çalışma süresi kontrolü 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 hizmeti URL'sinin https olmadan olan bölümünü girin. Örnek, aşağıdaki ekranda gösterilmektedir. Hizmet URL'sinin ne olduğundan emin değilseniz ana Google Cloud Console'dan Cloud Run'a gidin ve Hizmet URL'sini almak için daha önce açıklandığı gibi Cloud Run hizmetinin ayrıntılarına gidin.
- Yol : healthy
- Denetim sıklığı: 1 dakika

- Devam et'i tıklayın.
- İçerik eşleştirme etkinleştirildi seçeneğini açın.
- Yanıt İçeriği bölümüne "All Izz Well" (Her Şey Yolunda) yazın. Bu dize, uygulama tam yanıt gönderdiğinde zaten uygulamada yer alır.
- Keep

- Acceptable HTTP Response Code (Kabul Edilebilir HTTP Yanıt Kodu) ayarını Response Code Classes (Yanıt Kodu Sınıfları) olarak ve tek yanıt kodu sınıfı olarak 2xx olarak tutun. Bu şekilde, dize için yalnızca 2xx yanıt kodları değerlendirilir ve diğer tüm kodlar otomatik olarak başarısız 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ıdık 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 süresi denetiminiz oluşturulur ve Cloud Run uygulamanızı izlemeye başlar. Çalışma denetiminizin durumunu Çalışma Denetimleri sekmesinden görüntüleyebilirsiniz.

6. Tebrikler
Tebrikler, Pub/Sub'a uyarı göndermek için çalışma süresi kontrolünüzü başarıyla yapılandırdınız.