Uyarılar: Pub/Sub Konuları için Çalışma Denetimleri

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:

b35bf95b8bf3d5d8.png

Google Cloud'da yeni bir proje oluşturmak için aşağıdaki adımları uygulayabilirsiniz:

  1. Google Cloud Platform Console'a gidin.
  2. Proje Oluştur düğmesini tıklayın.
  3. Projeniz için bir ad girin.
  4. Projeniz için bir faturalandırma hesabı seçin.
  5. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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:

  1. Terminalden aşağıdaki komutu kullanarak API'nin Python sürümüne gidin:

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. 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

  1. Python sunucusunu yerel olarak başlatmak için aşağıdaki komutu çalıştırabilirsiniz.

1f798fbddfdc2c8e.png 46edf454cc70c5a6.png

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:

709d57ee2f0137e4.png

  1. 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:

  1. Hizmet adı (python-flask-api): Bu varsayılan adı kullanabilir veya my-inventory-api gibi bir ad seçebilirsiniz.
  2. 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
  3. Lütfen bir bölge belirtin: 31'i (us-west-1) seçin
  4. [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
  5. 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.
  6. Devam etmek istiyor musunuz (E/h)? Y
  7. [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:

87ba8dbf88e8cfa4.png

Uygulamayı test etme

Uygulamayı Cloud Run'a dağıttığımıza göre, API uygulamasına aşağıdaki şekilde erişebilirsiniz:

  1. Önceki adımdaki hizmet URL'sini not edin. Örneğin, benim kurulumumda https://my-inventory-api-bt2r5243dq-uw.a.run.app olarak gösteriliyor. Buna <SERVICE_URL> diyelim.
  2. Bir tarayıcı açın ve API uç noktaları için aşağıdaki 3 URL'ye erişin:
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <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:

2633965c4bc957cc.png

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:

33042ae64322ce07.png

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:

  1. Arama kutusunda Pub/Sub araması yapın ve Pub/Sub'a gidin. 935028bd8f6328ef.png
  2. Henüz orada değilseniz Konular sekmesini tıklayın. 7fd8bf91386a88fd.png
  3. Konu Oluştur düğmesini tıklayın. cd9d197f9023c41b.png
  4. Konunuz için bir ad girin.

173f313b4a3c4934.png

  1. Oluştur düğmesini tıklayın. ca9a02477da21a44.png
  2. Kopyalama simgesi düğmesini kullanarak Konu adını kopyalayın. Bu bilgiye sonraki bölümde ihtiyacınız olacak.

20848252ee83df93.png

5. Çalışma denetimi oluşturma

Google Cloud Run uygulaması için çalışma denetimi oluşturmak üzere:

  1. Google Cloud Platform Console'a gidin.
  2. İzleme sekmesini tıklayın.
  3. Çalışma Süresi Kontrolleri sekmesini tıklayın.
  4. Sayfanın üst kısmına yakın yerde bulunan Çalışma süresi kontrolü oluştur düğmesini tıklayın.

96561799ca500777.png

  1. Aşağıdaki değerleri kullanın:
  2. Protokol : HTTPS
  3. Kaynak türü : URL
  4. 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.
  5. Yol : healthy
  6. Denetim sıklığı: 1 dakika

342865c6d921ff41.png

  1. Devam et'i tıklayın.
  2. İçerik eşleştirme etkinleştirildi seçeneğini açın.
  3. 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.
  4. Keep

6c9ad336b5479478.png

  1. 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. 5a75d8a9e8a11dd4.png
  2. Devam et'i tıklayın.
  3. Bildirim kanalı olarak Cloud Pub/Sub konusunu seçin ve Tamam'ı tıklayın.

d00db9f6ac56d07c.png

  1. Devam et'i tıklayın.
  2. Tanıdık bir başlık ekleyin. d639135da780cce3.png
  3. Test et düğmesini tıklayın.

968753a66ed43a75.png

  1. İnceleyin ve hazır olduğunuzda Oluştur düğmesini tıklayın. 72e5e2081a36d902.png

Ç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.

3fd026b0c07ef4ec.png

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.